From 49d0865010752e3d50f09d4eb63a97276158d196 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sat, 23 Mar 2024 20:17:14 -0400 Subject: [PATCH 001/173] Add filament dependencies --- composer.json | 4 +- composer.lock | 1613 ++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 1598 insertions(+), 19 deletions(-) diff --git a/composer.json b/composer.json index 829ec4d72..2feb15b32 100644 --- a/composer.json +++ b/composer.json @@ -12,6 +12,7 @@ "ext-zip": "*", "aws/aws-sdk-php": "~3.288.1", "doctrine/dbal": "~3.6.0", + "filament/filament": "^3.2", "guzzlehttp/guzzle": "^7.5", "hashids/hashids": "~5.0.0", "laracasts/utilities": "~3.2.2", @@ -67,7 +68,8 @@ "cs:check": "php-cs-fixer fix --dry-run --diff --verbose", "post-autoload-dump": [ "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi || true" + "@php artisan package:discover --ansi || true", + "@php artisan filament:upgrade" ], "post-root-package-install": [ "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" diff --git a/composer.lock b/composer.lock index 30fdecfd0..6a2602309 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,74 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d7166d309ca3cb996fe990be81644539", + "content-hash": "e4573f890e580181b7d14bdb086f7c15", "packages": [ + { + "name": "anourvalar/eloquent-serialize", + "version": "1.2.22", + "source": { + "type": "git", + "url": "https://github.com/AnourValar/eloquent-serialize.git", + "reference": "6e91093c10940859c4b0549b6a90f18d8db45998" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/AnourValar/eloquent-serialize/zipball/6e91093c10940859c4b0549b6a90f18d8db45998", + "reference": "6e91093c10940859c4b0549b6a90f18d8db45998", + "shasum": "" + }, + "require": { + "laravel/framework": "^8.0|^9.0|^10.0|^11.0", + "php": "^7.4|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.26", + "laravel/legacy-factories": "^1.1", + "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5|^10.5", + "psalm/plugin-laravel": "^2.8", + "squizlabs/php_codesniffer": "^3.7" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "EloquentSerialize": "AnourValar\\EloquentSerialize\\Facades\\EloquentSerializeFacade" + } + } + }, + "autoload": { + "psr-4": { + "AnourValar\\EloquentSerialize\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Laravel Query Builder (Eloquent) serialization", + "homepage": "https://github.com/AnourValar/eloquent-serialize", + "keywords": [ + "anourvalar", + "builder", + "copy", + "eloquent", + "job", + "laravel", + "query", + "querybuilder", + "queue", + "serializable", + "serialization", + "serialize" + ], + "support": { + "issues": "https://github.com/AnourValar/eloquent-serialize/issues", + "source": "https://github.com/AnourValar/eloquent-serialize/tree/1.2.22" + }, + "time": "2024-03-22T12:56:46+00:00" + }, { "name": "aws/aws-crt-php", "version": "v1.2.4", @@ -155,6 +221,156 @@ }, "time": "2023-11-22T19:35:38+00:00" }, + { + "name": "blade-ui-kit/blade-heroicons", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/blade-ui-kit/blade-heroicons.git", + "reference": "a265dbcf2a098121aad05752d0bba9f59022e4ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/blade-ui-kit/blade-heroicons/zipball/a265dbcf2a098121aad05752d0bba9f59022e4ba", + "reference": "a265dbcf2a098121aad05752d0bba9f59022e4ba", + "shasum": "" + }, + "require": { + "blade-ui-kit/blade-icons": "^1.6", + "illuminate/support": "^9.0|^10.0|^11.0", + "php": "^8.0" + }, + "require-dev": { + "orchestra/testbench": "^7.0|^8.0|^9.0", + "phpunit/phpunit": "^9.0|^10.5|^11.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "BladeUI\\Heroicons\\BladeHeroiconsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "BladeUI\\Heroicons\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dries Vints", + "homepage": "https://driesvints.com" + } + ], + "description": "A package to easily make use of Heroicons in your Laravel Blade views.", + "homepage": "https://github.com/blade-ui-kit/blade-heroicons", + "keywords": [ + "Heroicons", + "blade", + "laravel" + ], + "support": { + "issues": "https://github.com/blade-ui-kit/blade-heroicons/issues", + "source": "https://github.com/blade-ui-kit/blade-heroicons/tree/2.3.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/driesvints", + "type": "github" + }, + { + "url": "https://www.paypal.com/paypalme/driesvints", + "type": "paypal" + } + ], + "time": "2024-02-07T16:33:46+00:00" + }, + { + "name": "blade-ui-kit/blade-icons", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/blade-ui-kit/blade-icons.git", + "reference": "89660d93f9897d231e9113ba203cd17f4c5efade" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/blade-ui-kit/blade-icons/zipball/89660d93f9897d231e9113ba203cd17f4c5efade", + "reference": "89660d93f9897d231e9113ba203cd17f4c5efade", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^8.0|^9.0|^10.0|^11.0", + "illuminate/filesystem": "^8.0|^9.0|^10.0|^11.0", + "illuminate/support": "^8.0|^9.0|^10.0|^11.0", + "illuminate/view": "^8.0|^9.0|^10.0|^11.0", + "php": "^7.4|^8.0", + "symfony/console": "^5.3|^6.0|^7.0", + "symfony/finder": "^5.3|^6.0|^7.0" + }, + "require-dev": { + "mockery/mockery": "^1.5.1", + "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0", + "phpunit/phpunit": "^9.0|^10.5|^11.0" + }, + "bin": [ + "bin/blade-icons-generate" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "BladeUI\\Icons\\BladeIconsServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "BladeUI\\Icons\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dries Vints", + "homepage": "https://driesvints.com" + } + ], + "description": "A package to easily make use of icons in your Laravel Blade views.", + "homepage": "https://github.com/blade-ui-kit/blade-icons", + "keywords": [ + "blade", + "icons", + "laravel", + "svg" + ], + "support": { + "issues": "https://github.com/blade-ui-kit/blade-icons/issues", + "source": "https://github.com/blade-ui-kit/blade-icons" + }, + "funding": [ + { + "url": "https://github.com/sponsors/driesvints", + "type": "github" + }, + { + "url": "https://www.paypal.com/paypalme/driesvints", + "type": "paypal" + } + ], + "time": "2024-02-07T16:09:20+00:00" + }, { "name": "brick/math", "version": "0.11.0", @@ -279,6 +495,111 @@ ], "time": "2023-10-01T12:35:29+00:00" }, + { + "name": "danharrin/date-format-converter", + "version": "v0.3.0", + "source": { + "type": "git", + "url": "https://github.com/danharrin/date-format-converter.git", + "reference": "42b6ddc52059d4ba228a67c15adaaa0c039e75f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/danharrin/date-format-converter/zipball/42b6ddc52059d4ba228a67c15adaaa0c039e75f2", + "reference": "42b6ddc52059d4ba228a67c15adaaa0c039e75f2", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0" + }, + "type": "library", + "autoload": { + "files": [ + "src/helpers.php", + "src/standards.php" + ], + "psr-4": { + "DanHarrin\\DateFormatConverter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dan Harrin", + "email": "dan@danharrin.com" + } + ], + "description": "Convert token-based date formats between standards.", + "homepage": "https://github.com/danharrin/date-format-converter", + "support": { + "issues": "https://github.com/danharrin/date-format-converter/issues", + "source": "https://github.com/danharrin/date-format-converter" + }, + "funding": [ + { + "url": "https://github.com/danharrin", + "type": "github" + } + ], + "time": "2022-09-29T07:48:20+00:00" + }, + { + "name": "danharrin/livewire-rate-limiting", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/danharrin/livewire-rate-limiting.git", + "reference": "bf16003f0d977b5a41071526d697eec94ac41735" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/danharrin/livewire-rate-limiting/zipball/bf16003f0d977b5a41071526d697eec94ac41735", + "reference": "bf16003f0d977b5a41071526d697eec94ac41735", + "shasum": "" + }, + "require": { + "illuminate/support": "^9.0|^10.0|^11.0", + "php": "^8.0" + }, + "require-dev": { + "livewire/livewire": "^3.0", + "livewire/volt": "^1.3", + "orchestra/testbench": "^7.0|^8.0|^9.0", + "phpunit/phpunit": "^9.0|^10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "DanHarrin\\LivewireRateLimiting\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dan Harrin", + "email": "dan@danharrin.com" + } + ], + "description": "Apply rate limiters to Laravel Livewire actions.", + "homepage": "https://github.com/danharrin/livewire-rate-limiting", + "support": { + "issues": "https://github.com/danharrin/livewire-rate-limiting/issues", + "source": "https://github.com/danharrin/livewire-rate-limiting" + }, + "funding": [ + { + "url": "https://github.com/danharrin", + "type": "github" + } + ], + "time": "2024-01-21T14:53:34+00:00" + }, { "name": "dflydev/dot-access-data", "version": "v3.0.2", @@ -994,6 +1315,437 @@ ], "time": "2023-10-06T06:47:41+00:00" }, + { + "name": "filament/actions", + "version": "v3.2.60", + "source": { + "type": "git", + "url": "https://github.com/filamentphp/actions.git", + "reference": "8523fabf8d48301d80023d3955bc2d21e52b1e2f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filamentphp/actions/zipball/8523fabf8d48301d80023d3955bc2d21e52b1e2f", + "reference": "8523fabf8d48301d80023d3955bc2d21e52b1e2f", + "shasum": "" + }, + "require": { + "anourvalar/eloquent-serialize": "^1.2", + "filament/forms": "self.version", + "filament/infolists": "self.version", + "filament/notifications": "self.version", + "filament/support": "self.version", + "illuminate/contracts": "^10.45|^11.0", + "illuminate/database": "^10.45|^11.0", + "illuminate/support": "^10.45|^11.0", + "league/csv": "^9.14", + "openspout/openspout": "^4.23", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.9" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Filament\\Actions\\ActionsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Filament\\Actions\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Easily add beautiful action modals to any Livewire component.", + "homepage": "https://github.com/filamentphp/filament", + "support": { + "issues": "https://github.com/filamentphp/filament/issues", + "source": "https://github.com/filamentphp/filament" + }, + "time": "2024-03-21T22:43:16+00:00" + }, + { + "name": "filament/filament", + "version": "v3.2.60", + "source": { + "type": "git", + "url": "https://github.com/filamentphp/panels.git", + "reference": "08673dba066dcb54cf9019596ffea3d79997496c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filamentphp/panels/zipball/08673dba066dcb54cf9019596ffea3d79997496c", + "reference": "08673dba066dcb54cf9019596ffea3d79997496c", + "shasum": "" + }, + "require": { + "danharrin/livewire-rate-limiting": "^0.3|^1.0", + "filament/actions": "self.version", + "filament/forms": "self.version", + "filament/infolists": "self.version", + "filament/notifications": "self.version", + "filament/support": "self.version", + "filament/tables": "self.version", + "filament/widgets": "self.version", + "illuminate/auth": "^10.45|^11.0", + "illuminate/console": "^10.45|^11.0", + "illuminate/contracts": "^10.45|^11.0", + "illuminate/cookie": "^10.45|^11.0", + "illuminate/database": "^10.45|^11.0", + "illuminate/http": "^10.45|^11.0", + "illuminate/routing": "^10.45|^11.0", + "illuminate/session": "^10.45|^11.0", + "illuminate/support": "^10.45|^11.0", + "illuminate/view": "^10.45|^11.0", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.9" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Filament\\FilamentServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/global_helpers.php", + "src/helpers.php" + ], + "psr-4": { + "Filament\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A collection of full-stack components for accelerated Laravel app development.", + "homepage": "https://github.com/filamentphp/filament", + "support": { + "issues": "https://github.com/filamentphp/filament/issues", + "source": "https://github.com/filamentphp/filament" + }, + "time": "2024-03-23T20:58:51+00:00" + }, + { + "name": "filament/forms", + "version": "v3.2.60", + "source": { + "type": "git", + "url": "https://github.com/filamentphp/forms.git", + "reference": "c864c8ac34e1372964d2d4e9595d10ddaabf88c8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filamentphp/forms/zipball/c864c8ac34e1372964d2d4e9595d10ddaabf88c8", + "reference": "c864c8ac34e1372964d2d4e9595d10ddaabf88c8", + "shasum": "" + }, + "require": { + "danharrin/date-format-converter": "^0.3", + "filament/actions": "self.version", + "filament/support": "self.version", + "illuminate/console": "^10.45|^11.0", + "illuminate/contracts": "^10.45|^11.0", + "illuminate/database": "^10.45|^11.0", + "illuminate/filesystem": "^10.45|^11.0", + "illuminate/support": "^10.45|^11.0", + "illuminate/validation": "^10.45|^11.0", + "illuminate/view": "^10.45|^11.0", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.9" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Filament\\Forms\\FormsServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Filament\\Forms\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Easily add beautiful forms to any Livewire component.", + "homepage": "https://github.com/filamentphp/filament", + "support": { + "issues": "https://github.com/filamentphp/filament/issues", + "source": "https://github.com/filamentphp/filament" + }, + "time": "2024-03-23T23:27:26+00:00" + }, + { + "name": "filament/infolists", + "version": "v3.2.60", + "source": { + "type": "git", + "url": "https://github.com/filamentphp/infolists.git", + "reference": "64d1ed73e05eebb688e343348e126a038169c7d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filamentphp/infolists/zipball/64d1ed73e05eebb688e343348e126a038169c7d0", + "reference": "64d1ed73e05eebb688e343348e126a038169c7d0", + "shasum": "" + }, + "require": { + "filament/actions": "self.version", + "filament/support": "self.version", + "illuminate/console": "^10.45|^11.0", + "illuminate/contracts": "^10.45|^11.0", + "illuminate/database": "^10.45|^11.0", + "illuminate/filesystem": "^10.45|^11.0", + "illuminate/support": "^10.45|^11.0", + "illuminate/view": "^10.45|^11.0", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.9" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Filament\\Infolists\\InfolistsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Filament\\Infolists\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Easily add beautiful read-only infolists to any Livewire component.", + "homepage": "https://github.com/filamentphp/filament", + "support": { + "issues": "https://github.com/filamentphp/filament/issues", + "source": "https://github.com/filamentphp/filament" + }, + "time": "2024-03-23T23:27:28+00:00" + }, + { + "name": "filament/notifications", + "version": "v3.2.60", + "source": { + "type": "git", + "url": "https://github.com/filamentphp/notifications.git", + "reference": "f9a790ee2d5103ea87c88e6d545ea6ceb770cbe5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filamentphp/notifications/zipball/f9a790ee2d5103ea87c88e6d545ea6ceb770cbe5", + "reference": "f9a790ee2d5103ea87c88e6d545ea6ceb770cbe5", + "shasum": "" + }, + "require": { + "filament/actions": "self.version", + "filament/support": "self.version", + "illuminate/contracts": "^10.45|^11.0", + "illuminate/filesystem": "^10.45|^11.0", + "illuminate/notifications": "^10.45|^11.0", + "illuminate/support": "^10.45|^11.0", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.9" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Filament\\Notifications\\NotificationsServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/Testing/Autoload.php" + ], + "psr-4": { + "Filament\\Notifications\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Easily add beautiful notifications to any Livewire app.", + "homepage": "https://github.com/filamentphp/filament", + "support": { + "issues": "https://github.com/filamentphp/filament/issues", + "source": "https://github.com/filamentphp/filament" + }, + "time": "2024-03-19T00:28:12+00:00" + }, + { + "name": "filament/support", + "version": "v3.2.60", + "source": { + "type": "git", + "url": "https://github.com/filamentphp/support.git", + "reference": "05c0c56bdb66226dc8d239ac91bc973a0dd33edb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filamentphp/support/zipball/05c0c56bdb66226dc8d239ac91bc973a0dd33edb", + "reference": "05c0c56bdb66226dc8d239ac91bc973a0dd33edb", + "shasum": "" + }, + "require": { + "blade-ui-kit/blade-heroicons": "^2.2.1", + "doctrine/dbal": "^3.2", + "ext-intl": "*", + "illuminate/contracts": "^10.45|^11.0", + "illuminate/support": "^10.45|^11.0", + "illuminate/view": "^10.45|^11.0", + "livewire/livewire": "^3.4.9", + "php": "^8.1", + "ryangjchandler/blade-capture-directive": "^0.2|^0.3|^1.0", + "spatie/color": "^1.5", + "spatie/invade": "^1.0|^2.0", + "spatie/laravel-package-tools": "^1.9", + "symfony/html-sanitizer": "^6.1|^7.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Filament\\Support\\SupportServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Filament\\Support\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Core helper methods and foundation code for all Filament packages.", + "homepage": "https://github.com/filamentphp/filament", + "support": { + "issues": "https://github.com/filamentphp/filament/issues", + "source": "https://github.com/filamentphp/filament" + }, + "time": "2024-03-23T20:59:06+00:00" + }, + { + "name": "filament/tables", + "version": "v3.2.60", + "source": { + "type": "git", + "url": "https://github.com/filamentphp/tables.git", + "reference": "b58dbfd4b3f4da6708e67a4ca0512bc914faa991" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filamentphp/tables/zipball/b58dbfd4b3f4da6708e67a4ca0512bc914faa991", + "reference": "b58dbfd4b3f4da6708e67a4ca0512bc914faa991", + "shasum": "" + }, + "require": { + "filament/actions": "self.version", + "filament/forms": "self.version", + "filament/support": "self.version", + "illuminate/console": "^10.45|^11.0", + "illuminate/contracts": "^10.45|^11.0", + "illuminate/database": "^10.45|^11.0", + "illuminate/filesystem": "^10.45|^11.0", + "illuminate/support": "^10.45|^11.0", + "illuminate/view": "^10.45|^11.0", + "kirschbaum-development/eloquent-power-joins": "^3.0", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.9" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Filament\\Tables\\TablesServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Filament\\Tables\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Easily add beautiful tables to any Livewire component.", + "homepage": "https://github.com/filamentphp/filament", + "support": { + "issues": "https://github.com/filamentphp/filament/issues", + "source": "https://github.com/filamentphp/filament" + }, + "time": "2024-03-23T20:59:09+00:00" + }, + { + "name": "filament/widgets", + "version": "v3.2.60", + "source": { + "type": "git", + "url": "https://github.com/filamentphp/widgets.git", + "reference": "38a011b9a556a2786028eb80aa135e171569d2af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filamentphp/widgets/zipball/38a011b9a556a2786028eb80aa135e171569d2af", + "reference": "38a011b9a556a2786028eb80aa135e171569d2af", + "shasum": "" + }, + "require": { + "filament/support": "self.version", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.9" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Filament\\Widgets\\WidgetsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Filament\\Widgets\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Easily add beautiful dashboard widgets to any Livewire component.", + "homepage": "https://github.com/filamentphp/filament", + "support": { + "issues": "https://github.com/filamentphp/filament/issues", + "source": "https://github.com/filamentphp/filament" + }, + "time": "2024-03-14T10:54:33+00:00" + }, { "name": "fruitcake/php-cors", "version": "v1.3.0", @@ -1607,6 +2359,68 @@ }, "time": "2023-02-23T15:00:54+00:00" }, + { + "name": "kirschbaum-development/eloquent-power-joins", + "version": "3.5.2", + "source": { + "type": "git", + "url": "https://github.com/kirschbaum-development/eloquent-power-joins.git", + "reference": "2fae3aca9eefd4591603a7e53406ab9f56b69fad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kirschbaum-development/eloquent-power-joins/zipball/2fae3aca9eefd4591603a7e53406ab9f56b69fad", + "reference": "2fae3aca9eefd4591603a7e53406ab9f56b69fad", + "shasum": "" + }, + "require": { + "illuminate/database": "^8.0|^9.0|^10.0|^11.0", + "illuminate/support": "^8.0|^9.0|^10.0|^11.0", + "php": "^8.0" + }, + "require-dev": { + "laravel/legacy-factories": "^1.0@dev", + "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0|^8.0|^9.0", + "phpunit/phpunit": "^8.0|^9.0|^10.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Kirschbaum\\PowerJoins\\PowerJoinsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Kirschbaum\\PowerJoins\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Luis Dalmolin", + "email": "luis.nh@gmail.com", + "role": "Developer" + } + ], + "description": "The Laravel magic applied to joins.", + "homepage": "https://github.com/kirschbaum-development/eloquent-power-joins", + "keywords": [ + "eloquent", + "join", + "laravel", + "mysql" + ], + "support": { + "issues": "https://github.com/kirschbaum-development/eloquent-power-joins/issues", + "source": "https://github.com/kirschbaum-development/eloquent-power-joins/tree/3.5.2" + }, + "time": "2024-03-20T10:23:27+00:00" + }, { "name": "laracasts/utilities", "version": "3.2.3", @@ -1670,16 +2484,16 @@ }, { "name": "laravel/framework", - "version": "v11.0.7", + "version": "v11.0.8", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "28eabe9dcdcb017a21ce226eda4538c5c8c93b1c" + "reference": "0379a7ccb77e2029c43ce508fa76e251a0d68fce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/28eabe9dcdcb017a21ce226eda4538c5c8c93b1c", - "reference": "28eabe9dcdcb017a21ce226eda4538c5c8c93b1c", + "url": "https://api.github.com/repos/laravel/framework/zipball/0379a7ccb77e2029c43ce508fa76e251a0d68fce", + "reference": "0379a7ccb77e2029c43ce508fa76e251a0d68fce", "shasum": "" }, "require": { @@ -1782,7 +2596,7 @@ "league/flysystem-sftp-v3": "^3.0", "mockery/mockery": "^1.6", "nyholm/psr7": "^1.2", - "orchestra/testbench-core": "^9.0", + "orchestra/testbench-core": "^9.0.6", "pda/pheanstalk": "^5.0", "phpstan/phpstan": "^1.4.7", "phpunit/phpunit": "^10.5|^11.0", @@ -1871,7 +2685,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-03-15T23:17:58+00:00" + "time": "2024-03-21T14:15:49+00:00" }, { "name": "laravel/helpers", @@ -2564,6 +3378,95 @@ ], "time": "2022-12-11T20:36:23+00:00" }, + { + "name": "league/csv", + "version": "9.15.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/csv.git", + "reference": "fa7e2441c0bc9b2360f4314fd6c954f7ff40d435" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/csv/zipball/fa7e2441c0bc9b2360f4314fd6c954f7ff40d435", + "reference": "fa7e2441c0bc9b2360f4314fd6c954f7ff40d435", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "ext-json": "*", + "ext-mbstring": "*", + "php": "^8.1.2" + }, + "require-dev": { + "doctrine/collections": "^2.1.4", + "ext-dom": "*", + "ext-xdebug": "*", + "friendsofphp/php-cs-fixer": "^v3.22.0", + "phpbench/phpbench": "^1.2.15", + "phpstan/phpstan": "^1.10.57", + "phpstan/phpstan-deprecation-rules": "^1.1.4", + "phpstan/phpstan-phpunit": "^1.3.15", + "phpstan/phpstan-strict-rules": "^1.5.2", + "phpunit/phpunit": "^10.5.9", + "symfony/var-dumper": "^6.4.2" + }, + "suggest": { + "ext-dom": "Required to use the XMLConverter and the HTMLConverter classes", + "ext-iconv": "Needed to ease transcoding CSV using iconv stream filters" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "League\\Csv\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://github.com/nyamsprod/", + "role": "Developer" + } + ], + "description": "CSV data manipulation made easy in PHP", + "homepage": "https://csv.thephpleague.com", + "keywords": [ + "convert", + "csv", + "export", + "filter", + "import", + "read", + "transform", + "write" + ], + "support": { + "docs": "https://csv.thephpleague.com", + "issues": "https://github.com/thephpleague/csv/issues", + "rss": "https://github.com/thephpleague/csv/releases.atom", + "source": "https://github.com/thephpleague/csv" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-02-20T20:00:00+00:00" + }, { "name": "league/flysystem", "version": "3.25.1", @@ -2972,6 +3875,322 @@ ], "time": "2024-01-28T23:22:08+00:00" }, + { + "name": "league/uri", + "version": "7.4.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri.git", + "reference": "bedb6e55eff0c933668addaa7efa1e1f2c417cc4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/bedb6e55eff0c933668addaa7efa1e1f2c417cc4", + "reference": "bedb6e55eff0c933668addaa7efa1e1f2c417cc4", + "shasum": "" + }, + "require": { + "league/uri-interfaces": "^7.3", + "php": "^8.1" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-fileinfo": "to create Data URI from file contennts", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", + "league/uri-components": "Needed to easily manipulate URI objects components", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "uri-template", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri/tree/7.4.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-03-23T07:42:40+00:00" + }, + { + "name": "league/uri-interfaces", + "version": "7.4.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "8d43ef5c841032c87e2de015972c06f3865ef718" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/8d43ef5c841032c87e2de015972c06f3865ef718", + "reference": "8d43ef5c841032c87e2de015972c06f3865ef718", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.1", + "psr/http-factory": "^1", + "psr/http-message": "^1.1 || ^2.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common interfaces and classes for URI representation and interaction", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.4.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-03-23T07:42:40+00:00" + }, + { + "name": "livewire/livewire", + "version": "v3.4.9", + "source": { + "type": "git", + "url": "https://github.com/livewire/livewire.git", + "reference": "c65b3f0798ab2c9338213ede3588c3cdf4e6fcc0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/livewire/livewire/zipball/c65b3f0798ab2c9338213ede3588c3cdf4e6fcc0", + "reference": "c65b3f0798ab2c9338213ede3588c3cdf4e6fcc0", + "shasum": "" + }, + "require": { + "illuminate/database": "^10.0|^11.0", + "illuminate/routing": "^10.0|^11.0", + "illuminate/support": "^10.0|^11.0", + "illuminate/validation": "^10.0|^11.0", + "league/mime-type-detection": "^1.9", + "php": "^8.1", + "symfony/http-kernel": "^6.2|^7.0" + }, + "require-dev": { + "calebporzio/sushi": "^2.1", + "laravel/framework": "^10.0|^11.0", + "laravel/prompts": "^0.1.6", + "mockery/mockery": "^1.3.1", + "orchestra/testbench": "8.20.0|^9.0", + "orchestra/testbench-dusk": "8.20.0|^9.0", + "phpunit/phpunit": "^10.4", + "psy/psysh": "^0.11.22|^0.12" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Livewire\\LivewireServiceProvider" + ], + "aliases": { + "Livewire": "Livewire\\Livewire" + } + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Livewire\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Caleb Porzio", + "email": "calebporzio@gmail.com" + } + ], + "description": "A front-end framework for Laravel.", + "support": { + "issues": "https://github.com/livewire/livewire/issues", + "source": "https://github.com/livewire/livewire/tree/v3.4.9" + }, + "funding": [ + { + "url": "https://github.com/livewire", + "type": "github" + } + ], + "time": "2024-03-14T14:03:32+00:00" + }, + { + "name": "masterminds/html5", + "version": "2.8.1", + "source": { + "type": "git", + "url": "https://github.com/Masterminds/html5-php.git", + "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f47dcf3c70c584de14f21143c55d9939631bc6cf", + "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Masterminds\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matt Butcher", + "email": "technosophos@gmail.com" + }, + { + "name": "Matt Farina", + "email": "matt@mattfarina.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + } + ], + "description": "An HTML5 parser and serializer.", + "homepage": "http://masterminds.github.io/html5-php", + "keywords": [ + "HTML5", + "dom", + "html", + "parser", + "querypath", + "serializer", + "xml" + ], + "support": { + "issues": "https://github.com/Masterminds/html5-php/issues", + "source": "https://github.com/Masterminds/html5-php/tree/2.8.1" + }, + "time": "2023-05-10T11:58:31+00:00" + }, { "name": "monolog/monolog", "version": "3.5.0", @@ -3539,6 +4758,99 @@ ], "time": "2024-03-06T16:17:14+00:00" }, + { + "name": "openspout/openspout", + "version": "v4.23.0", + "source": { + "type": "git", + "url": "https://github.com/openspout/openspout.git", + "reference": "28f6a0e45acc3377f34c26cc3866e21f0447e0c8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/openspout/openspout/zipball/28f6a0e45acc3377f34c26cc3866e21f0447e0c8", + "reference": "28f6a0e45acc3377f34c26cc3866e21f0447e0c8", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-fileinfo": "*", + "ext-filter": "*", + "ext-libxml": "*", + "ext-xmlreader": "*", + "ext-zip": "*", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + }, + "require-dev": { + "ext-zlib": "*", + "friendsofphp/php-cs-fixer": "^3.46.0", + "infection/infection": "^0.27.9", + "phpbench/phpbench": "^1.2.15", + "phpstan/phpstan": "^1.10.55", + "phpstan/phpstan-phpunit": "^1.3.15", + "phpstan/phpstan-strict-rules": "^1.5.2", + "phpunit/phpunit": "^10.5.5" + }, + "suggest": { + "ext-iconv": "To handle non UTF-8 CSV files (if \"php-mbstring\" is not already installed or is too limited)", + "ext-mbstring": "To handle non UTF-8 CSV files (if \"iconv\" is not already installed)" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "OpenSpout\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrien Loison", + "email": "adrien@box.com" + } + ], + "description": "PHP Library to read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way", + "homepage": "https://github.com/openspout/openspout", + "keywords": [ + "OOXML", + "csv", + "excel", + "memory", + "odf", + "ods", + "office", + "open", + "php", + "read", + "scale", + "spreadsheet", + "stream", + "write", + "xlsx" + ], + "support": { + "issues": "https://github.com/openspout/openspout/issues", + "source": "https://github.com/openspout/openspout/tree/v4.23.0" + }, + "funding": [ + { + "url": "https://paypal.me/filippotessarotto", + "type": "custom" + }, + { + "url": "https://github.com/Slamdunk", + "type": "github" + } + ], + "time": "2024-01-09T09:30:37+00:00" + }, { "name": "paragonie/constant_time_encoding", "version": "v2.6.3", @@ -4785,6 +6097,84 @@ ], "time": "2023-11-08T05:53:05+00:00" }, + { + "name": "ryangjchandler/blade-capture-directive", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/ryangjchandler/blade-capture-directive.git", + "reference": "cb6f58663d97f17bece176295240b740835e14f1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ryangjchandler/blade-capture-directive/zipball/cb6f58663d97f17bece176295240b740835e14f1", + "reference": "cb6f58663d97f17bece176295240b740835e14f1", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^10.0|^11.0", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.9.2" + }, + "require-dev": { + "nunomaduro/collision": "^7.0|^8.0", + "nunomaduro/larastan": "^2.0", + "orchestra/testbench": "^8.0|^9.0", + "pestphp/pest": "^2.0", + "pestphp/pest-plugin-laravel": "^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^10.0", + "spatie/laravel-ray": "^1.26" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "RyanChandler\\BladeCaptureDirective\\BladeCaptureDirectiveServiceProvider" + ], + "aliases": { + "BladeCaptureDirective": "RyanChandler\\BladeCaptureDirective\\Facades\\BladeCaptureDirective" + } + } + }, + "autoload": { + "psr-4": { + "RyanChandler\\BladeCaptureDirective\\": "src", + "RyanChandler\\BladeCaptureDirective\\Database\\Factories\\": "database/factories" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ryan Chandler", + "email": "support@ryangjchandler.co.uk", + "role": "Developer" + } + ], + "description": "Create inline partials in your Blade templates with ease.", + "homepage": "https://github.com/ryangjchandler/blade-capture-directive", + "keywords": [ + "blade-capture-directive", + "laravel", + "ryangjchandler" + ], + "support": { + "issues": "https://github.com/ryangjchandler/blade-capture-directive/issues", + "source": "https://github.com/ryangjchandler/blade-capture-directive/tree/v1.0.0" + }, + "funding": [ + { + "url": "https://github.com/ryangjchandler", + "type": "github" + } + ], + "time": "2024-02-26T18:08:49+00:00" + }, { "name": "s1lentium/iptools", "version": "v1.2.0", @@ -4840,6 +6230,65 @@ }, "time": "2022-08-17T14:28:59+00:00" }, + { + "name": "spatie/color", + "version": "1.5.3", + "source": { + "type": "git", + "url": "https://github.com/spatie/color.git", + "reference": "49739265900cabce4640cd26c3266fd8d2cca390" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/color/zipball/49739265900cabce4640cd26c3266fd8d2cca390", + "reference": "49739265900cabce4640cd26c3266fd8d2cca390", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "pestphp/pest": "^1.22", + "phpunit/phpunit": "^6.5||^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Color\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Sebastian De Deyne", + "email": "sebastian@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "A little library to handle color conversions", + "homepage": "https://github.com/spatie/color", + "keywords": [ + "color", + "conversion", + "rgb", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/color/issues", + "source": "https://github.com/spatie/color/tree/1.5.3" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2022-12-18T12:58:32+00:00" + }, { "name": "spatie/fractalistic", "version": "2.9.5", @@ -4901,6 +6350,65 @@ ], "time": "2022-04-21T12:26:22+00:00" }, + { + "name": "spatie/invade", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/invade.git", + "reference": "7b20a25486de69198e402da20dc924d8bcc8024a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/invade/zipball/7b20a25486de69198e402da20dc924d8bcc8024a", + "reference": "7b20a25486de69198e402da20dc924d8bcc8024a", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "pestphp/pest": "^1.20", + "phpstan/phpstan": "^1.4", + "spatie/ray": "^1.28" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Spatie\\Invade\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "role": "Developer" + } + ], + "description": "A PHP function to work with private properties and methods", + "homepage": "https://github.com/spatie/invade", + "keywords": [ + "invade", + "spatie" + ], + "support": { + "source": "https://github.com/spatie/invade/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-07-19T18:55:36+00:00" + }, { "name": "spatie/laravel-fractal", "version": "6.2.0", @@ -4984,16 +6492,16 @@ }, { "name": "spatie/laravel-package-tools", - "version": "1.16.3", + "version": "1.16.4", "source": { "type": "git", "url": "https://github.com/spatie/laravel-package-tools.git", - "reference": "59db18c2e20d49a0b6d447bb1c654f6c123beb9e" + "reference": "ddf678e78d7f8b17e5cdd99c0c3413a4a6592e53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/59db18c2e20d49a0b6d447bb1c654f6c123beb9e", - "reference": "59db18c2e20d49a0b6d447bb1c654f6c123beb9e", + "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/ddf678e78d7f8b17e5cdd99c0c3413a4a6592e53", + "reference": "ddf678e78d7f8b17e5cdd99c0c3413a4a6592e53", "shasum": "" }, "require": { @@ -5032,7 +6540,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-package-tools/issues", - "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.3" + "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.4" }, "funding": [ { @@ -5040,7 +6548,7 @@ "type": "github" } ], - "time": "2024-03-07T07:35:57+00:00" + "time": "2024-03-20T07:29:11+00:00" }, { "name": "spatie/laravel-query-builder", @@ -5709,6 +7217,75 @@ ], "time": "2023-10-31T17:59:56+00:00" }, + { + "name": "symfony/html-sanitizer", + "version": "v7.0.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/html-sanitizer.git", + "reference": "a8543ad56bc5250378ca44bb3988516fcb073c5d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/a8543ad56bc5250378ca44bb3988516fcb073c5d", + "reference": "a8543ad56bc5250378ca44bb3988516fcb073c5d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "league/uri": "^6.5|^7.0", + "masterminds/html5": "^2.7.2", + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HtmlSanitizer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Titouan Galopin", + "email": "galopintitouan@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to sanitize untrusted HTML input for safe insertion into a document's DOM.", + "homepage": "https://symfony.com", + "keywords": [ + "Purifier", + "html", + "sanitizer" + ], + "support": { + "source": "https://github.com/symfony/html-sanitizer/tree/v7.0.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-02-15T11:33:06+00:00" + }, { "name": "symfony/http-foundation", "version": "v7.0.4", @@ -8667,16 +10244,16 @@ }, { "name": "mockery/mockery", - "version": "1.6.10", + "version": "1.6.11", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "47065d1be1fa05def58dc14c03cf831d3884ef0b" + "reference": "81a161d0b135df89951abd52296adf97deb0723d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/47065d1be1fa05def58dc14c03cf831d3884ef0b", - "reference": "47065d1be1fa05def58dc14c03cf831d3884ef0b", + "url": "https://api.github.com/repos/mockery/mockery/zipball/81a161d0b135df89951abd52296adf97deb0723d", + "reference": "81a161d0b135df89951abd52296adf97deb0723d", "shasum": "" }, "require": { @@ -8746,7 +10323,7 @@ "security": "https://github.com/mockery/mockery/security/advisories", "source": "https://github.com/mockery/mockery" }, - "time": "2024-03-19T16:15:45+00:00" + "time": "2024-03-21T18:34:15+00:00" }, { "name": "myclabs/deep-copy", From 1c539ff50c0892e47297b6e6846ff0b5c85feb78 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sat, 23 Mar 2024 20:17:21 -0400 Subject: [PATCH 002/173] Add filament css and js --- public/css/filament/filament/app.css | 1 + public/css/filament/forms/forms.css | 49 ++++++ public/css/filament/support/support.css | 1 + public/js/filament/filament/app.js | 1 + public/js/filament/filament/echo.js | 13 ++ .../filament/forms/components/color-picker.js | 1 + .../forms/components/date-time-picker.js | 1 + .../filament/forms/components/file-upload.js | 123 +++++++++++++++ .../js/filament/forms/components/key-value.js | 1 + .../forms/components/markdown-editor.js | 51 +++++++ .../filament/forms/components/rich-editor.js | 143 ++++++++++++++++++ public/js/filament/forms/components/select.js | 6 + .../filament/forms/components/tags-input.js | 1 + .../js/filament/forms/components/textarea.js | 1 + .../filament/notifications/notifications.js | 1 + public/js/filament/support/async-alpine.js | 1 + public/js/filament/support/support.js | 46 ++++++ public/js/filament/tables/components/table.js | 1 + .../js/filament/widgets/components/chart.js | 37 +++++ .../components/stats-overview/stat/chart.js | 29 ++++ 20 files changed, 508 insertions(+) create mode 100644 public/css/filament/filament/app.css create mode 100644 public/css/filament/forms/forms.css create mode 100644 public/css/filament/support/support.css create mode 100644 public/js/filament/filament/app.js create mode 100644 public/js/filament/filament/echo.js create mode 100644 public/js/filament/forms/components/color-picker.js create mode 100644 public/js/filament/forms/components/date-time-picker.js create mode 100644 public/js/filament/forms/components/file-upload.js create mode 100644 public/js/filament/forms/components/key-value.js create mode 100644 public/js/filament/forms/components/markdown-editor.js create mode 100644 public/js/filament/forms/components/rich-editor.js create mode 100644 public/js/filament/forms/components/select.js create mode 100644 public/js/filament/forms/components/tags-input.js create mode 100644 public/js/filament/forms/components/textarea.js create mode 100644 public/js/filament/notifications/notifications.js create mode 100644 public/js/filament/support/async-alpine.js create mode 100644 public/js/filament/support/support.js create mode 100644 public/js/filament/tables/components/table.js create mode 100644 public/js/filament/widgets/components/chart.js create mode 100644 public/js/filament/widgets/components/stats-overview/stat/chart.js diff --git a/public/css/filament/filament/app.css b/public/css/filament/filament/app.css new file mode 100644 index 000000000..988e79d55 --- /dev/null +++ b/public/css/filament/filament/app.css @@ -0,0 +1 @@ +/*! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com*/*,:after,:before{border-color:rgba(var(--gray-200),1);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:rgba(var(--gray-400),1);opacity:1}input::placeholder,textarea::placeholder{color:rgba(var(--gray-400),1);opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input:where(:not([type])),select,textarea{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:rgba(var(--gray-500),var(--tw-border-opacity,1));border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,input:where(:not([type])):focus,select:focus,textarea:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}input::-moz-placeholder,textarea::-moz-placeholder{color:rgba(var(--gray-500),var(--tw-text-opacity,1));opacity:1}input::placeholder,textarea::placeholder{color:rgba(var(--gray-500),var(--tw-text-opacity,1));opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='rgba(var(--gray-500), var(--tw-stroke-opacity, 1))' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;background-origin:border-box;border-color:rgba(var(--gray-500),var(--tw-border-opacity,1));border-width:1px;color:#2563eb;display:inline-block;flex-shrink:0;height:1rem;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:1rem}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}[type=checkbox]:checked,[type=radio]:checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E")}@media (forced-colors:active) {[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}@media (forced-colors:active) {[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{background-color:currentColor;border-color:transparent}[type=checkbox]:indeterminate{background-color:currentColor;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}@media (forced-colors:active) {[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:transparent}[type=file]{background:unset;border-color:inherit;border-radius:0;border-width:0;font-size:unset;line-height:inherit;padding:0}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}:root.dark{color-scheme:dark}[data-field-wrapper]{scroll-margin-top:8rem}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-bottom:3em;margin-top:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-left-color:var(--tw-prose-quote-borders);border-left-width:.25rem;color:var(--tw-prose-quotes);font-style:italic;font-weight:500;margin-bottom:1.6em;margin-top:1.6em;padding-left:1em;quotes:"\201C""\201D""\2018""\2019"}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:2.25em;font-weight:800;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.5em;font-weight:700;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.25em;font-weight:600;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-bottom:2em;margin-top:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows)/10%);color:var(--tw-prose-kbd);font-family:inherit;font-size:.875em;font-weight:500;padding:.1875em .375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--tw-prose-pre-bg);border-radius:.375rem;color:var(--tw-prose-pre-code);font-size:.875em;font-weight:400;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;overflow-x:auto;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857;margin-bottom:2em;margin-top:2em;table-layout:auto;text-align:left;width:100%}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-th-borders);border-bottom-width:1px}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;padding-bottom:.5714286em;padding-left:.5714286em;padding-right:.5714286em;vertical-align:bottom}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-td-borders);border-bottom-width:1px}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-color:var(--tw-prose-th-borders);border-top-width:1px}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(.prose>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.7142857}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.8888889em;margin-top:.8888889em}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.1111111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.1428571em;line-height:1.2;margin-bottom:.8em;margin-top:0}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.4285714em;line-height:1.4;margin-bottom:.8em;margin-top:1.6em}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.5555556em}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.4285714;margin-bottom:.5714286em;margin-top:1.4285714em}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8571429em;padding:.1428571em .3571429em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.25rem;font-size:.8571429em;line-height:1.6666667;margin-bottom:1.6666667em;margin-top:1.6666667em;padding:.6666667em 1em}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-left:1.5714286em}.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-left:1.5714286em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.2857143em;margin-top:.2857143em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4285714em}.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4285714em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(.prose-sm>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(.prose-sm>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;padding-left:1.5714286em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2.8571429em;margin-top:2.8571429em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.6666667em;padding-left:1em;padding-right:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.6666667em 1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-base{font-size:1rem;line-height:1.75}.prose-base :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose-base :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose-base :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.6em;margin-top:1.6em;padding-left:1em}.prose-base :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.25em;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose-base :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.5em;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose-base :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose-base :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose-base :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-base :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.875em;padding:.1875em .375em}.prose-base :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-base :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;font-size:.875em;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;padding:.8571429em 1.1428571em}.prose-base :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose-base :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose-base :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose-base :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose-base :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose-base :where(.prose-base>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose-base :where(.prose-base>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(.prose-base>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose-base :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose-base :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose-base :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:3em;margin-top:3em}.prose-base :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857}.prose-base :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.5714286em;padding-left:.5714286em;padding-right:.5714286em}.prose-base :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-base :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-base :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose-base :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-base :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-base :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-base :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose-base :where(.prose-base>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(.prose-base>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-lg{font-size:1.125rem;line-height:1.7777778}.prose-lg :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em}.prose-lg :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2222222em;line-height:1.4545455;margin-bottom:1.0909091em;margin-top:1.0909091em}.prose-lg :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.6666667em;margin-top:1.6666667em;padding-left:1em}.prose-lg :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.6666667em;line-height:1;margin-bottom:.8333333em;margin-top:0}.prose-lg :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.6666667em;line-height:1.3333333;margin-bottom:1.0666667em;margin-top:1.8666667em}.prose-lg :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.3333333em;line-height:1.5;margin-bottom:.6666667em;margin-top:1.6666667em}.prose-lg :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.7777778em}.prose-lg :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-lg :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8888889em;padding:.2222222em .4444444em}.prose-lg :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-lg :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8666667em}.prose-lg :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-lg :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;font-size:.8888889em;line-height:1.75;margin-bottom:2em;margin-top:2em;padding:1em 1.5em}.prose-lg :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.5555556em}.prose-lg :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.5555556em}.prose-lg :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.6666667em;margin-top:.6666667em}.prose-lg :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4444444em}.prose-lg :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4444444em}.prose-lg :where(.prose-lg>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8888889em;margin-top:.8888889em}.prose-lg :where(.prose-lg>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose-lg>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(.prose-lg>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose-lg>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8888889em;margin-top:.8888889em}.prose-lg :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em}.prose-lg :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.6666667em;padding-left:1.5555556em}.prose-lg :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:3.1111111em;margin-top:3.1111111em}.prose-lg :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5}.prose-lg :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.75em;padding-left:.75em;padding-right:.75em}.prose-lg :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-lg :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-lg :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.75em}.prose-lg :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-lg :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-lg :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-lg :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5;margin-top:1em}.prose-lg :where(.prose-lg>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(.prose-lg>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-4{inset:1rem}.inset-x-0{left:0;right:0}.inset-x-4{left:1rem;right:1rem}.inset-y-0{bottom:0;top:0}.-bottom-1\/2{bottom:-50%}.-top-1{top:-.25rem}.-top-1\/2{top:-50%}.-top-2{top:-.5rem}.-top-3{top:-.75rem}.bottom-0{bottom:0}.bottom-1\/2{bottom:50%}.end-0{inset-inline-end:0}.end-4{inset-inline-end:1rem}.end-6{inset-inline-end:1.5rem}.left-3{left:.75rem}.start-0{inset-inline-start:0}.start-full{inset-inline-start:100%}.top-0{top:0}.top-1\/2{top:50%}.top-4{top:1rem}.top-6{top:1.5rem}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.col-\[--col-span-default\]{grid-column:var(--col-span-default)}.col-span-full{grid-column:1/-1}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.col-start-\[--col-start-default\]{grid-column-start:var(--col-start-default)}.row-start-2{grid-row-start:2}.-m-0{margin:0}.-m-0\.5{margin:-.125rem}.-m-1{margin:-.25rem}.-m-1\.5{margin:-.375rem}.-m-2{margin:-.5rem}.-m-2\.5{margin:-.625rem}.-m-3{margin:-.75rem}.-m-3\.5{margin:-.875rem}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.-my-1{margin-bottom:-.25rem;margin-top:-.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.my-16{margin-bottom:4rem;margin-top:4rem}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-4{margin-bottom:1rem;margin-top:1rem}.my-auto{margin-bottom:auto;margin-top:auto}.\!mt-0{margin-top:0!important}.-mb-4{margin-bottom:-1rem}.-mb-6{margin-bottom:-1.5rem}.-me-2{margin-inline-end:-.5rem}.-ms-0{margin-inline-start:0}.-ms-0\.5{margin-inline-start:-.125rem}.-ms-1{margin-inline-start:-.25rem}.-ms-2{margin-inline-start:-.5rem}.-mt-3{margin-top:-.75rem}.-mt-4{margin-top:-1rem}.-mt-6{margin-top:-1.5rem}.-mt-7{margin-top:-1.75rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.me-1{margin-inline-end:.25rem}.me-4{margin-inline-end:1rem}.me-6{margin-inline-end:1.5rem}.ml-auto{margin-left:auto}.ms-1{margin-inline-start:.25rem}.ms-auto{margin-inline-start:auto}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.line-clamp-\[--line-clamp\]{-webkit-box-orient:vertical;-webkit-line-clamp:var(--line-clamp);display:-webkit-box;overflow:hidden}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.inline-grid{display:inline-grid}.hidden{display:none}.h-0{height:0}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-16{height:4rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-\[100dvh\],.h-dvh{height:100dvh}.h-full{height:100%}.h-screen{height:100vh}.max-h-96{max-height:24rem}.min-h-\[theme\(spacing\.48\)\]{min-height:12rem}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-16{width:4rem}.w-20{width:5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[--sidebar-width\]{width:var(--sidebar-width)}.w-\[calc\(100\%\+2rem\)\]{width:calc(100% + 2rem)}.w-auto{width:auto}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-\[theme\(spacing\.4\)\]{min-width:1rem}.min-w-\[theme\(spacing\.5\)\]{min-width:1.25rem}.min-w-\[theme\(spacing\.6\)\]{min-width:1.5rem}.min-w-\[theme\(spacing\.8\)\]{min-width:2rem}.\!max-w-2xl{max-width:42rem!important}.\!max-w-3xl{max-width:48rem!important}.\!max-w-4xl{max-width:56rem!important}.\!max-w-5xl{max-width:64rem!important}.\!max-w-6xl{max-width:72rem!important}.\!max-w-7xl{max-width:80rem!important}.\!max-w-\[14rem\]{max-width:14rem!important}.\!max-w-lg{max-width:32rem!important}.\!max-w-md{max-width:28rem!important}.\!max-w-sm{max-width:24rem!important}.\!max-w-xl{max-width:36rem!important}.\!max-w-xs{max-width:20rem!important}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-md{max-width:28rem}.max-w-min{max-width:-moz-min-content;max-width:min-content}.max-w-none{max-width:none}.max-w-prose{max-width:65ch}.max-w-screen-2xl{max-width:1536px}.max-w-screen-lg{max-width:1024px}.max-w-screen-md{max-width:768px}.max-w-screen-sm{max-width:640px}.max-w-screen-xl{max-width:1280px}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.table-auto{table-layout:auto}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-12,.-translate-x-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-12{--tw-translate-x:-3rem}.-translate-x-5{--tw-translate-x:-1.25rem}.-translate-x-5,.-translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-full{--tw-translate-x:-100%}.-translate-y-12{--tw-translate-y:-3rem}.-translate-y-12,.translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.translate-x-12{--tw-translate-x:3rem}.translate-x-12,.translate-x-5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-5{--tw-translate-x:1.25rem}.translate-x-full{--tw-translate-x:100%}.translate-x-full,.translate-y-12{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-12{--tw-translate-y:3rem}.-rotate-180{--tw-rotate:-180deg}.-rotate-180,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-100,.scale-95{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-move{cursor:move}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.scroll-mt-9{scroll-margin-top:2.25rem}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.columns-\[--cols-default\]{-moz-columns:var(--cols-default);columns:var(--cols-default)}.break-inside-avoid{-moz-column-break-inside:avoid;break-inside:avoid}.auto-cols-fr{grid-auto-columns:minmax(0,1fr)}.grid-flow-col{grid-auto-flow:column}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[--cols-default\]{grid-template-columns:var(--cols-default)}.grid-cols-\[1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr}.grid-cols-\[repeat\(7\2c minmax\(theme\(spacing\.7\)\2c 1fr\)\)\]{grid-template-columns:repeat(7,minmax(1.75rem,1fr))}.grid-cols-\[repeat\(auto-fit\2c minmax\(0\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.grid-rows-\[1fr_auto_1fr\]{grid-template-rows:1fr auto 1fr}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-start{justify-items:start}.justify-items-center{justify-items:center}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-1\.5{-moz-column-gap:.375rem;column-gap:.375rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-2\.5{-moz-column-gap:.625rem;column-gap:.625rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.gap-y-1\.5{row-gap:.375rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.gap-y-4{row-gap:1rem}.gap-y-6{row-gap:1.5rem}.gap-y-7{row-gap:1.75rem}.gap-y-8{row-gap:2rem}.gap-y-px{row-gap:1px}.-space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.25rem*var(--tw-space-x-reverse))}.-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.5rem*var(--tw-space-x-reverse))}.-space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.75rem*var(--tw-space-x-reverse))}.-space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1rem*var(--tw-space-x-reverse))}.-space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.25rem*var(--tw-space-x-reverse))}.-space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.5rem*var(--tw-space-x-reverse))}.-space-x-7>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.75rem*var(--tw-space-x-reverse))}.-space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-2rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-2rem*var(--tw-space-x-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-left-width:calc(1px*(1 - var(--tw-divide-x-reverse)));border-right-width:calc(1px*var(--tw-divide-x-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(var(--gray-100),var(--tw-divide-opacity))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(var(--gray-200),var(--tw-divide-opacity))}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.justify-self-center{justify-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.overflow-x-clip{overflow-x:clip}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-xl{border-bottom-left-radius:.75rem;border-bottom-right-radius:.75rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-x-\[0\.5px\]{border-left-width:.5px;border-right-width:.5px}.border-y{border-bottom-width:1px;border-top-width:1px}.\!border-t-0{border-top-width:0!important}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0}.border-e{border-inline-end-width:1px}.border-s{border-inline-start-width:1px}.border-t{border-top-width:1px}.\!border-none{border-style:none!important}.border-none{border-style:none}.border-gray-100{--tw-border-opacity:1;border-color:rgba(var(--gray-100),var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgba(var(--gray-200),var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgba(var(--gray-300),var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}.border-primary-500{--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.border-primary-600{--tw-border-opacity:1;border-color:rgba(var(--primary-600),var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-t-gray-200{--tw-border-opacity:1;border-top-color:rgba(var(--gray-200),var(--tw-border-opacity))}.\!bg-gray-50{--tw-bg-opacity:1!important;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))!important}.\!bg-gray-700{--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}.bg-black\/50{background-color:rgba(0,0,0,.5)}.bg-custom-100{--tw-bg-opacity:1;background-color:rgba(var(--c-100),var(--tw-bg-opacity))}.bg-custom-50{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.bg-custom-600{--tw-bg-opacity:1;background-color:rgba(var(--c-600),var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(var(--gray-200),var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgba(var(--gray-300),var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgba(var(--gray-400),var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.bg-gray-950\/50{background-color:rgba(var(--gray-950),.5)}.bg-primary-500{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}.bg-primary-600{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-white\/0{background-color:hsla(0,0%,100%,0)}.bg-white\/5{background-color:hsla(0,0%,100%,.05)}.bg-cover{background-size:cover}.bg-center{background-position:50%}.object-cover{-o-object-fit:cover;object-fit:cover}.object-center{-o-object-position:center;object-position:center}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-bottom:0;padding-top:0}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-3\.5{padding-bottom:.875rem;padding-top:.875rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pe-0{padding-inline-end:0}.pe-1{padding-inline-end:.25rem}.pe-2{padding-inline-end:.5rem}.pe-3{padding-inline-end:.75rem}.pe-4{padding-inline-end:1rem}.pe-6{padding-inline-end:1.5rem}.pe-8{padding-inline-end:2rem}.ps-0{padding-inline-start:0}.ps-1{padding-inline-start:.25rem}.ps-2{padding-inline-start:.5rem}.ps-3{padding-inline-start:.75rem}.ps-4{padding-inline-start:1rem}.ps-\[5\.25rem\]{padding-inline-start:5.25rem}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-start{text-align:start}.text-end{text-align:end}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.font-serif{font-family:ui-serif,Georgia,Cambria,Times New Roman,Times,serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-extralight{font-weight:200}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.font-thin{font-weight:100}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-loose{line-height:2}.tracking-tight{letter-spacing:-.025em}.tracking-tighter{letter-spacing:-.05em}.text-custom-400{--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}.text-custom-50{--tw-text-opacity:1;color:rgba(var(--c-50),var(--tw-text-opacity))}.text-custom-500{--tw-text-opacity:1;color:rgba(var(--c-500),var(--tw-text-opacity))}.text-custom-600{--tw-text-opacity:1;color:rgba(var(--c-600),var(--tw-text-opacity))}.text-custom-700\/50{color:rgba(var(--c-700),.5)}.text-danger-600{--tw-text-opacity:1;color:rgba(var(--danger-600),var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgba(var(--gray-100),var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(var(--gray-600),var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.text-gray-700\/50{color:rgba(var(--gray-700),.5)}.text-gray-950{--tw-text-opacity:1;color:rgba(var(--gray-950),var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.text-primary-500{--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.text-primary-600{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-0{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1,.ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-inset{--tw-ring-inset:inset}.ring-custom-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-600),var(--tw-ring-opacity))}.ring-custom-600\/10{--tw-ring-color:rgba(var(--c-600),0.1)}.ring-custom-600\/20{--tw-ring-color:rgba(var(--c-600),0.2)}.ring-danger-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.ring-gray-200{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-200),var(--tw-ring-opacity))}.ring-gray-300{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-300),var(--tw-ring-opacity))}.ring-gray-600\/10{--tw-ring-color:rgba(var(--gray-600),0.1)}.ring-gray-900\/10{--tw-ring-color:rgba(var(--gray-900),0.1)}.ring-gray-950\/10{--tw-ring-color:rgba(var(--gray-950),0.1)}.ring-gray-950\/5{--tw-ring-color:rgba(var(--gray-950),0.05)}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.ring-white\/10{--tw-ring-color:hsla(0,0%,100%,.1)}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.delay-100{transition-delay:.1s}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[transform\:translateZ\(0\)\]{transform:translateZ(0)}:is(.dark .dark\:prose-invert){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.placeholder\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.placeholder\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:inset-y-0:before{bottom:0;content:var(--tw-content);top:0}.before\:start-0:before{content:var(--tw-content);inset-inline-start:0}.before\:h-full:before{content:var(--tw-content);height:100%}.before\:w-0:before{content:var(--tw-content);width:0}.before\:w-0\.5:before{content:var(--tw-content);width:.125rem}.before\:bg-primary-600:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity));content:var(--tw-content)}.first\:border-s-0:first-child{border-inline-start-width:0}.first\:border-t-0:first-child{border-top-width:0}.last\:border-e-0:last-child{border-inline-end-width:0}.first-of-type\:ps-1:first-of-type{padding-inline-start:.25rem}.last-of-type\:pe-1:last-of-type{padding-inline-end:.25rem}.checked\:ring-0:checked{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-within\:bg-gray-50:focus-within{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.hover\:bg-custom-400\/10:hover{background-color:rgba(var(--c-400),.1)}.hover\:bg-custom-50:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.hover\:bg-custom-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.hover\:bg-gray-400\/10:hover{background-color:rgba(var(--gray-400),.1)}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.hover\:text-custom-600:hover{--tw-text-opacity:1;color:rgba(var(--c-600),var(--tw-text-opacity))}.hover\:text-custom-700\/75:hover{color:rgba(var(--c-700),.75)}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.hover\:text-gray-700\/75:hover{color:rgba(var(--gray-700),.75)}.hover\:opacity-100:hover{opacity:1}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-0:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-danger-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.focus\:ring-primary-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.focus\:ring-offset-0:focus{--tw-ring-offset-width:0px}.checked\:focus\:ring-danger-500\/50:focus:checked{--tw-ring-color:rgba(var(--danger-500),0.5)}.checked\:focus\:ring-primary-500\/50:focus:checked{--tw-ring-color:rgba(var(--primary-500),0.5)}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-primary-500:focus-visible{--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.focus-visible\:bg-custom-50:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.focus-visible\:bg-gray-100:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.focus-visible\:bg-gray-50:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.focus-visible\:text-custom-700\/75:focus-visible{color:rgba(var(--c-700),.75)}.focus-visible\:text-gray-500:focus-visible{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.focus-visible\:text-gray-700\/75:focus-visible{color:rgba(var(--gray-700),.75)}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset:inset}.focus-visible\:ring-custom-500\/50:focus-visible{--tw-ring-color:rgba(var(--c-500),0.5)}.focus-visible\:ring-custom-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-600),var(--tw-ring-opacity))}.focus-visible\:ring-gray-400\/40:focus-visible{--tw-ring-color:rgba(var(--gray-400),0.4)}.focus-visible\:ring-primary-500:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.focus-visible\:ring-primary-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.enabled\:cursor-wait:enabled{cursor:wait}.enabled\:opacity-70:enabled{opacity:.7}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:bg-gray-50:disabled{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.disabled\:text-gray-50:disabled{--tw-text-opacity:1;color:rgba(var(--gray-50),var(--tw-text-opacity))}.disabled\:text-gray-500:disabled{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.disabled\:opacity-70:disabled{opacity:.7}.disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled{-webkit-text-fill-color:rgba(var(--gray-500),1)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::-moz-placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.disabled\:checked\:bg-current:checked:disabled{background-color:currentColor}.disabled\:checked\:text-gray-400:checked:disabled{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.group\/item:first-child .group-first\/item\:rounded-s-lg{border-end-start-radius:.5rem;border-start-start-radius:.5rem}.group\/item:last-child .group-last\/item\:rounded-e-lg{border-end-end-radius:.5rem;border-start-end-radius:.5rem}.group:hover .group-hover\:text-gray-500,.group\/button:hover .group-hover\/button\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group:hover .group-hover\:text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.group\/item:hover .group-hover\/item\:underline,.group\/link:hover .group-hover\/link\:underline{text-decoration-line:underline}.group:focus-visible .group-focus-visible\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group:focus-visible .group-focus-visible\:text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.group\/item:focus-visible .group-focus-visible\/item\:underline{text-decoration-line:underline}.group\/link:focus-visible .group-focus-visible\/link\:underline{text-decoration-line:underline}:is(.dark .dark\:flex){display:flex}:is(.dark .dark\:hidden){display:none}:is(.dark .dark\:divide-white\/10)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:divide-white\/5)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:border-gray-600){--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}:is(.dark .dark\:border-gray-700){--tw-border-opacity:1;border-color:rgba(var(--gray-700),var(--tw-border-opacity))}:is(.dark .dark\:border-primary-500){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}:is(.dark .dark\:border-white\/10){border-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:border-white\/5){border-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:border-t-white\/10){border-top-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:\!bg-gray-700){--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-custom-400\/10){background-color:rgba(var(--c-400),.1)}:is(.dark .dark\:bg-custom-500){--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}:is(.dark .dark\:bg-custom-500\/20){background-color:rgba(var(--c-500),.2)}:is(.dark .dark\:bg-gray-400\/10){background-color:rgba(var(--gray-400),.1)}:is(.dark .dark\:bg-gray-500){--tw-bg-opacity:1;background-color:rgba(var(--gray-500),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-500\/20){background-color:rgba(var(--gray-500),.2)}:is(.dark .dark\:bg-gray-600){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-700){--tw-bg-opacity:1;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-800){--tw-bg-opacity:1;background-color:rgba(var(--gray-800),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-900){--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-900\/30){background-color:rgba(var(--gray-900),.3)}:is(.dark .dark\:bg-gray-950){--tw-bg-opacity:1;background-color:rgba(var(--gray-950),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-950\/75){background-color:rgba(var(--gray-950),.75)}:is(.dark .dark\:bg-primary-400){--tw-bg-opacity:1;background-color:rgba(var(--primary-400),var(--tw-bg-opacity))}:is(.dark .dark\:bg-primary-500){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}:is(.dark .dark\:bg-transparent){background-color:transparent}:is(.dark .dark\:bg-white\/10){background-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:bg-white\/5){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:fill-current){fill:currentColor}:is(.dark .dark\:text-custom-300\/50){color:rgba(var(--c-300),.5)}:is(.dark .dark\:text-custom-400){--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}:is(.dark .dark\:text-custom-400\/10){color:rgba(var(--c-400),.1)}:is(.dark .dark\:text-danger-400){--tw-text-opacity:1;color:rgba(var(--danger-400),var(--tw-text-opacity))}:is(.dark .dark\:text-danger-500){--tw-text-opacity:1;color:rgba(var(--danger-500),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-300\/50){color:rgba(var(--gray-300),.5)}:is(.dark .dark\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-500){--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-700){--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-800){--tw-text-opacity:1;color:rgba(var(--gray-800),var(--tw-text-opacity))}:is(.dark .dark\:text-primary-400){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}:is(.dark .dark\:text-primary-500){--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}:is(.dark .dark\:text-white){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .dark\:text-white\/5){color:hsla(0,0%,100%,.05)}:is(.dark .dark\:ring-custom-400\/30){--tw-ring-color:rgba(var(--c-400),0.3)}:is(.dark .dark\:ring-custom-500){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}:is(.dark .dark\:ring-danger-500){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:ring-gray-400\/20){--tw-ring-color:rgba(var(--gray-400),0.2)}:is(.dark .dark\:ring-gray-50\/10){--tw-ring-color:rgba(var(--gray-50),0.1)}:is(.dark .dark\:ring-gray-700){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-700),var(--tw-ring-opacity))}:is(.dark .dark\:ring-gray-900){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-900),var(--tw-ring-opacity))}:is(.dark .dark\:ring-white\/10){--tw-ring-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:ring-white\/20){--tw-ring-color:hsla(0,0%,100%,.2)}:is(.dark .dark\:placeholder\:text-gray-500)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-gray-500)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .dark\:before\:bg-primary-500):before{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity));content:var(--tw-content)}:is(.dark .dark\:checked\:bg-danger-500:checked){--tw-bg-opacity:1;background-color:rgba(var(--danger-500),var(--tw-bg-opacity))}:is(.dark .dark\:checked\:bg-primary-500:checked){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}:is(.dark .dark\:focus-within\:bg-white\/5:focus-within){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:hover\:bg-custom-400:hover){--tw-bg-opacity:1;background-color:rgba(var(--c-400),var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-custom-400\/10:hover){background-color:rgba(var(--c-400),.1)}:is(.dark .dark\:hover\:bg-white\/10:hover){background-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:hover\:bg-white\/5:hover){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:hover\:text-custom-300:hover){--tw-text-opacity:1;color:rgba(var(--c-300),var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-custom-300\/75:hover){color:rgba(var(--c-300),.75)}:is(.dark .dark\:hover\:text-gray-200:hover){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-gray-300\/75:hover){color:rgba(var(--gray-300),.75)}:is(.dark .dark\:hover\:text-gray-400:hover){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:hover\:ring-white\/20:hover){--tw-ring-color:hsla(0,0%,100%,.2)}:is(.dark .dark\:focus\:ring-danger-500:focus){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:focus\:ring-primary-500:focus){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}:is(.dark .dark\:checked\:focus\:ring-danger-400\/50:focus:checked){--tw-ring-color:rgba(var(--danger-400),0.5)}:is(.dark .dark\:checked\:focus\:ring-primary-400\/50:focus:checked){--tw-ring-color:rgba(var(--primary-400),0.5)}:is(.dark .dark\:focus-visible\:border-primary-500:focus-visible){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}:is(.dark .dark\:focus-visible\:bg-custom-400\/10:focus-visible){background-color:rgba(var(--c-400),.1)}:is(.dark .dark\:focus-visible\:bg-white\/5:focus-visible){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:focus-visible\:text-custom-300\/75:focus-visible){color:rgba(var(--c-300),.75)}:is(.dark .dark\:focus-visible\:text-gray-300\/75:focus-visible){color:rgba(var(--gray-300),.75)}:is(.dark .dark\:focus-visible\:text-gray-400:focus-visible){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:focus-visible\:ring-custom-400\/50:focus-visible){--tw-ring-color:rgba(var(--c-400),0.5)}:is(.dark .dark\:focus-visible\:ring-custom-500:focus-visible){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}:is(.dark .dark\:focus-visible\:ring-primary-500:focus-visible){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}:is(.dark .dark\:disabled\:bg-transparent:disabled){background-color:transparent}:is(.dark .dark\:disabled\:text-gray-400:disabled){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:disabled\:ring-white\/10:disabled){--tw-ring-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled){-webkit-text-fill-color:rgba(var(--gray-400),1)}:is(.dark .dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled)::-moz-placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}:is(.dark .dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled)::placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}:is(.dark .dark\:disabled\:checked\:bg-gray-600:checked:disabled){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}:is(.dark .group\/button:hover .dark\:group-hover\/button\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .group:focus-visible .dark\:group-focus-visible\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .group:focus-visible .dark\:group-focus-visible\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}@media (min-width:640px){.sm\:relative{position:relative}.sm\:inset-x-auto{left:auto;right:auto}.sm\:end-0{inset-inline-end:0}.sm\:col-\[--col-span-sm\]{grid-column:var(--col-span-sm)}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-start-\[--col-start-sm\]{grid-column-start:var(--col-start-sm)}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:-my-2{margin-bottom:-.5rem;margin-top:-.5rem}.sm\:ms-auto{margin-inline-start:auto}.sm\:mt-7{margin-top:1.75rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:table-cell{display:table-cell}.sm\:grid{display:grid}.sm\:inline-grid{display:inline-grid}.sm\:hidden{display:none}.sm\:w-\[calc\(100\%\+3rem\)\]{width:calc(100% + 3rem)}.sm\:w-screen{width:100vw}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-3xl{max-width:48rem}.sm\:max-w-4xl{max-width:56rem}.sm\:max-w-5xl{max-width:64rem}.sm\:max-w-6xl{max-width:72rem}.sm\:max-w-7xl{max-width:80rem}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:max-w-xl{max-width:36rem}.sm\:max-w-xs{max-width:20rem}.sm\:columns-\[--cols-sm\]{-moz-columns:var(--cols-sm);columns:var(--cols-sm)}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-\[--cols-sm\]{grid-template-columns:var(--cols-sm)}.sm\:grid-cols-\[repeat\(auto-fit\2c minmax\(0\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.sm\:grid-rows-\[1fr_auto_3fr\]{grid-template-rows:1fr auto 3fr}.sm\:flex-row{flex-direction:row}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-1{gap:.25rem}.sm\:gap-3{gap:.75rem}.sm\:gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.sm\:rounded-xl{border-radius:.75rem}.sm\:p-10{padding:2.5rem}.sm\:px-12{padding-left:3rem;padding-right:3rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-1{padding-bottom:.25rem;padding-top:.25rem}.sm\:py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.sm\:pe-3{padding-inline-end:.75rem}.sm\:pe-6{padding-inline-end:1.5rem}.sm\:ps-3{padding-inline-start:.75rem}.sm\:ps-6{padding-inline-start:1.5rem}.sm\:pt-1{padding-top:.25rem}.sm\:pt-1\.5{padding-top:.375rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:leading-6{line-height:1.5rem}.sm\:first-of-type\:ps-3:first-of-type{padding-inline-start:.75rem}.sm\:first-of-type\:ps-6:first-of-type{padding-inline-start:1.5rem}.sm\:last-of-type\:pe-3:last-of-type{padding-inline-end:.75rem}.sm\:last-of-type\:pe-6:last-of-type{padding-inline-end:1.5rem}}@media (min-width:768px){.md\:bottom-4{bottom:1rem}.md\:order-first{order:-9999}.md\:col-\[--col-span-md\]{grid-column:var(--col-span-md)}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-start-\[--col-start-md\]{grid-column-start:var(--col-start-md)}.md\:block{display:block}.md\:flex{display:flex}.md\:table-cell{display:table-cell}.md\:inline-grid{display:inline-grid}.md\:hidden{display:none}.md\:w-max{width:-moz-max-content;width:max-content}.md\:max-w-60{max-width:15rem}.md\:columns-\[--cols-md\]{-moz-columns:var(--cols-md);columns:var(--cols-md)}.md\:grid-flow-col{grid-auto-flow:column}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-\[--cols-md\]{grid-template-columns:var(--cols-md)}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:items-end{align-items:flex-end}.md\:items-center{align-items:center}.md\:justify-end{justify-content:flex-end}.md\:gap-1{gap:.25rem}.md\:gap-3{gap:.75rem}.md\:divide-y-0>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(0px*var(--tw-divide-y-reverse));border-top-width:calc(0px*(1 - var(--tw-divide-y-reverse)))}.md\:overflow-x-auto{overflow-x:auto}.md\:rounded-xl{border-radius:.75rem}.md\:p-20{padding:5rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:pe-6{padding-inline-end:1.5rem}.md\:ps-3{padding-inline-start:.75rem}}@media (min-width:1024px){.lg\:sticky{position:sticky}.lg\:z-0{z-index:0}.lg\:col-\[--col-span-lg\]{grid-column:var(--col-span-lg)}.lg\:col-start-\[--col-start-lg\]{grid-column-start:var(--col-start-lg)}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:table-cell{display:table-cell}.lg\:inline-grid{display:inline-grid}.lg\:hidden{display:none}.lg\:h-full{height:100%}.lg\:max-w-xs{max-width:20rem}.lg\:-translate-x-full{--tw-translate-x:-100%}.lg\:-translate-x-full,.lg\:translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:translate-x-0{--tw-translate-x:0px}.lg\:columns-\[--cols-lg\]{-moz-columns:var(--cols-lg);columns:var(--cols-lg)}.lg\:grid-cols-\[--cols-lg\]{grid-template-columns:var(--cols-lg)}.lg\:flex-row{flex-direction:row}.lg\:items-start{align-items:flex-start}.lg\:items-end{align-items:flex-end}.lg\:items-center{align-items:center}.lg\:gap-1{gap:.25rem}.lg\:gap-3{gap:.75rem}.lg\:bg-transparent{background-color:transparent}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pe-8{padding-inline-end:2rem}.lg\:shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.lg\:shadow-none,.lg\:shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lg\:shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lg\:ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lg\:transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.lg\:transition-none{transition-property:none}.lg\:delay-100{transition-delay:.1s}:is(.dark .dark\:lg\:bg-transparent){background-color:transparent}}@media (min-width:1280px){.xl\:col-\[--col-span-xl\]{grid-column:var(--col-span-xl)}.xl\:col-start-\[--col-start-xl\]{grid-column-start:var(--col-start-xl)}.xl\:block{display:block}.xl\:table-cell{display:table-cell}.xl\:inline-grid{display:inline-grid}.xl\:hidden{display:none}.xl\:columns-\[--cols-xl\]{-moz-columns:var(--cols-xl);columns:var(--cols-xl)}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-\[--cols-xl\]{grid-template-columns:var(--cols-xl)}.xl\:flex-row{flex-direction:row}.xl\:items-start{align-items:flex-start}.xl\:items-end{align-items:flex-end}.xl\:items-center{align-items:center}.xl\:gap-1{gap:.25rem}.xl\:gap-3{gap:.75rem}}@media (min-width:1536px){.\32xl\:col-\[--col-span-2xl\]{grid-column:var(--col-span-2xl)}.\32xl\:col-start-\[--col-start-2xl\]{grid-column-start:var(--col-start-2xl)}.\32xl\:block{display:block}.\32xl\:table-cell{display:table-cell}.\32xl\:inline-grid{display:inline-grid}.\32xl\:hidden{display:none}.\32xl\:columns-\[--cols-2xl\]{-moz-columns:var(--cols-2xl);columns:var(--cols-2xl)}.\32xl\:grid-cols-\[--cols-2xl\]{grid-template-columns:var(--cols-2xl)}.\32xl\:flex-row{flex-direction:row}.\32xl\:items-start{align-items:flex-start}.\32xl\:items-end{align-items:flex-end}.\32xl\:items-center{align-items:center}.\32xl\:gap-1{gap:.25rem}.\32xl\:gap-3{gap:.75rem}}.ltr\:hidden:where([dir=ltr],[dir=ltr] *){display:none}.rtl\:hidden:where([dir=rtl],[dir=rtl] *){display:none}.rtl\:-translate-x-0:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:-translate-x-5:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:-translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:translate-x-1\/2:where([dir=rtl],[dir=rtl] *){--tw-translate-x:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:rotate-180:where([dir=rtl],[dir=rtl] *){--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:flex-row-reverse:where([dir=rtl],[dir=rtl] *){flex-direction:row-reverse}.rtl\:divide-x-reverse:where([dir=rtl],[dir=rtl] *)>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:1}@media (min-width:1024px){.rtl\:lg\:-translate-x-0:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:lg\:translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}}.\[\&\.trix-active\]\:bg-gray-50.trix-active{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.\[\&\.trix-active\]\:text-primary-600.trix-active{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity))}:is(.dark .dark\:\[\&\.trix-active\]\:bg-white\/5.trix-active){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:\[\&\.trix-active\]\:text-primary-400.trix-active){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.\[\&\:\:-ms-reveal\]\:hidden::-ms-reveal{display:none}.\[\&\:not\(\:first-of-type\)\]\:border-s:not(:first-of-type){border-inline-start-width:1px}.\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-2:focus-within:not(:has(.fi-ac-action:focus)){--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-danger-600:focus-within:not(:has(.fi-ac-action:focus)){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-primary-600:focus-within:not(:has(.fi-ac-action:focus)){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}:is(.dark .dark\:\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-danger-500:focus-within:not(:has(.fi-ac-action:focus))){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-primary-500:focus-within:not(:has(.fi-ac-action:focus))){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.\[\&\:not\(\:last-of-type\)\]\:border-e:not(:last-of-type){border-inline-end-width:1px}.\[\&\:not\(\:nth-child\(1_of_\.fi-btn\)\)\]\:shadow-\[-1px_0_0_0_theme\(colors\.gray\.200\)\]:not(:nth-child(1 of .fi-btn)){--tw-shadow:-1px 0 0 0 rgba(var(--gray-200),1);--tw-shadow-colored:-1px 0 0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .dark\:\[\&\:not\(\:nth-child\(1_of_\.fi-btn\)\)\]\:shadow-\[-1px_0_0_0_theme\(colors\.white\/20\%\)\]:not(:nth-child(1 of .fi-btn))){--tw-shadow:-1px 0 0 0 hsla(0,0%,100%,.2);--tw-shadow-colored:-1px 0 0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.\[\&\:not\(\:nth-last-child\(1_of_\.fi-btn\)\)\]\:me-px:not(:nth-last-child(1 of .fi-btn)){margin-inline-end:1px}.\[\&\:nth-child\(1_of_\.fi-btn\)\]\:rounded-s-lg:nth-child(1 of .fi-btn){border-end-start-radius:.5rem;border-start-start-radius:.5rem}.\[\&\:nth-last-child\(1_of_\.fi-btn\)\]\:rounded-e-lg:nth-last-child(1 of .fi-btn){border-end-end-radius:.5rem;border-start-end-radius:.5rem}.\[\&\>\*\:first-child\]\:relative>:first-child{position:relative}.\[\&\>\*\:first-child\]\:mt-0>:first-child{margin-top:0}.\[\&\>\*\:first-child\]\:before\:absolute>:first-child:before{content:var(--tw-content);position:absolute}.\[\&\>\*\:first-child\]\:before\:inset-y-0>:first-child:before{bottom:0;content:var(--tw-content);top:0}.\[\&\>\*\:first-child\]\:before\:start-0>:first-child:before{content:var(--tw-content);inset-inline-start:0}.\[\&\>\*\:first-child\]\:before\:w-0\.5>:first-child:before{content:var(--tw-content);width:.125rem}.\[\&\>\*\:first-child\]\:before\:bg-primary-600>:first-child:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity));content:var(--tw-content)}:is(.dark .\[\&\>\*\:first-child\]\:dark\:before\:bg-primary-500)>:first-child:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity));content:var(--tw-content)}.\[\&\>\*\:last-child\]\:mb-0>:last-child{margin-bottom:0}.\[\&_\.choices\\_\\_inner\]\:ps-0 .choices__inner{padding-inline-start:0}.\[\&_\.fi-badge-delete-button\]\:hidden .fi-badge-delete-button{display:none}.\[\&_\.filepond--root\]\:font-sans .filepond--root{font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.\[\&_optgroup\]\:bg-white optgroup{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(.dark .\[\&_optgroup\]\:dark\:bg-gray-900) optgroup{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.\[\&_option\]\:bg-white option{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(.dark .\[\&_option\]\:dark\:bg-gray-900) option{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}:checked+*>.\[\:checked\+\*\>\&\]\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}@media(hover:hover){.\[\@media\(hover\:hover\)\]\:transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.\[\@media\(hover\:hover\)\]\:duration-75{transition-duration:75ms}}input:checked+.\[input\:checked\+\&\]\:bg-custom-600{--tw-bg-opacity:1;background-color:rgba(var(--c-600),var(--tw-bg-opacity))}input:checked+.\[input\:checked\+\&\]\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}input:checked+.\[input\:checked\+\&\]\:ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}input:checked+.\[input\:checked\+\&\]\:hover\:bg-custom-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}:is(.dark input:checked+.dark\:\[input\:checked\+\&\]\:bg-custom-500){--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}:is(.dark input:checked+.dark\:\[input\:checked\+\&\]\:hover\:bg-custom-400:hover){--tw-bg-opacity:1;background-color:rgba(var(--c-400),var(--tw-bg-opacity))}input:checked:focus-visible+.\[input\:checked\:focus-visible\+\&\]\:ring-custom-500\/50{--tw-ring-color:rgba(var(--c-500),0.5)}:is(.dark input:checked:focus-visible+.dark\:\[input\:checked\:focus-visible\+\&\]\:ring-custom-400\/50){--tw-ring-color:rgba(var(--c-400),0.5)}input:focus-visible+.\[input\:focus-visible\+\&\]\:z-10{z-index:10}input:focus-visible+.\[input\:focus-visible\+\&\]\:ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}input:focus-visible+.\[input\:focus-visible\+\&\]\:ring-gray-950\/10{--tw-ring-color:rgba(var(--gray-950),0.1)}:is(.dark input:focus-visible+.dark\:\[input\:focus-visible\+\&\]\:ring-white\/20){--tw-ring-color:hsla(0,0%,100%,.2)} \ No newline at end of file diff --git a/public/css/filament/forms/forms.css b/public/css/filament/forms/forms.css new file mode 100644 index 000000000..a9458cb7a --- /dev/null +++ b/public/css/filament/forms/forms.css @@ -0,0 +1,49 @@ +input::-webkit-datetime-edit{display:block;padding:0}.cropper-container{direction:ltr;font-size:0;line-height:0;position:relative;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.cropper-container img{backface-visibility:hidden;display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{inset:0;position:absolute}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:#3399ffbf;overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC)}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}.filepond--assistant{clip:rect(1px,1px,1px,1px);border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.filepond--browser.filepond--browser{font-size:0;left:1em;margin:0;opacity:0;padding:0;position:absolute;top:1.75em;width:calc(100% - 2em)}.filepond--data{border:none;contain:strict;height:0;margin:0;padding:0;visibility:hidden;width:0}.filepond--data,.filepond--drip{pointer-events:none;position:absolute}.filepond--drip{background:rgba(0,0,0,.01);border-radius:.5em;inset:0;opacity:.1;overflow:hidden}.filepond--drip-blob{background:#292625;border-radius:50%;height:8em;margin-left:-4em;margin-top:-4em;transform-origin:center center;width:8em}.filepond--drip-blob,.filepond--drop-label{left:0;position:absolute;top:0;will-change:transform,opacity}.filepond--drop-label{align-items:center;color:#4f4f4f;display:flex;height:0;justify-content:center;margin:0;right:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.filepond--drop-label.filepond--drop-label label{display:block;margin:0;padding:.5em}.filepond--drop-label label{cursor:default;font-size:.875em;font-weight:400;line-height:1.5;text-align:center}.filepond--label-action{-webkit-text-decoration-skip:ink;cursor:pointer;text-decoration:underline;text-decoration-color:#a7a4a4;text-decoration-skip-ink:auto}.filepond--root[data-disabled] .filepond--drop-label label{opacity:.5}.filepond--file-action-button.filepond--file-action-button{border:none;font-family:inherit;font-size:1em;height:1.625em;line-height:inherit;margin:0;outline:none;padding:0;width:1.625em;will-change:transform,opacity}.filepond--file-action-button.filepond--file-action-button span{clip:rect(1px,1px,1px,1px);border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.filepond--file-action-button.filepond--file-action-button svg{height:100%;width:100%}.filepond--file-action-button.filepond--file-action-button:after{content:"";inset:-.75em;position:absolute}.filepond--file-action-button{background-color:#00000080;background-image:none;border-radius:50%;box-shadow:0 0 #fff0;color:#fff;cursor:auto;transition:box-shadow .25s ease-in}.filepond--file-action-button:focus,.filepond--file-action-button:hover{box-shadow:0 0 0 .125em #ffffffe6}.filepond--file-action-button[disabled]{background-color:#00000040;color:#ffffff80}.filepond--file-action-button[hidden]{display:none}.filepond--file-info{align-items:flex-start;display:flex;flex:1;flex-direction:column;margin:0 .5em 0 0;min-width:0;pointer-events:none;position:static;-webkit-user-select:none;-moz-user-select:none;user-select:none;will-change:transform,opacity}.filepond--file-info *{margin:0}.filepond--file-info .filepond--file-info-main{font-size:.75em;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.filepond--file-info .filepond--file-info-sub{font-size:.625em;opacity:.5;transition:opacity .25s ease-in-out;white-space:nowrap}.filepond--file-info .filepond--file-info-sub:empty{display:none}.filepond--file-status{align-items:flex-end;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;margin:0;min-width:2.25em;pointer-events:none;position:static;text-align:right;-webkit-user-select:none;-moz-user-select:none;user-select:none;will-change:transform,opacity}.filepond--file-status *{margin:0;white-space:nowrap}.filepond--file-status .filepond--file-status-main{font-size:.75em;line-height:1.2}.filepond--file-status .filepond--file-status-sub{font-size:.625em;opacity:.5;transition:opacity .25s ease-in-out}.filepond--file-wrapper.filepond--file-wrapper{border:none;height:100%;margin:0;min-width:0;padding:0}.filepond--file-wrapper.filepond--file-wrapper>legend{clip:rect(1px,1px,1px,1px);border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.filepond--file{align-items:flex-start;border-radius:.5em;color:#fff;display:flex;height:100%;padding:.5625em;position:static}.filepond--file .filepond--file-status{margin-left:auto;margin-right:2.25em}.filepond--file .filepond--processing-complete-indicator{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:3}.filepond--file .filepond--file-action-button,.filepond--file .filepond--processing-complete-indicator,.filepond--file .filepond--progress-indicator{position:absolute}.filepond--file [data-align*=left]{left:.5625em}.filepond--file [data-align*=right]{right:.5625em}.filepond--file [data-align*=center]{left:calc(50% - .8125em)}.filepond--file [data-align*=bottom]{bottom:1.125em}.filepond--file [data-align=center]{top:calc(50% - .8125em)}.filepond--file .filepond--progress-indicator{margin-top:.1875em}.filepond--file .filepond--progress-indicator[data-align*=right]{margin-right:.1875em}.filepond--file .filepond--progress-indicator[data-align*=left]{margin-left:.1875em}[data-filepond-item-state*=error] .filepond--file-info,[data-filepond-item-state*=invalid] .filepond--file-info,[data-filepond-item-state=cancelled] .filepond--file-info{margin-right:2.25em}[data-filepond-item-state~=processing] .filepond--file-status-sub{opacity:0}[data-filepond-item-state~=processing] .filepond--action-abort-item-processing~.filepond--file-status .filepond--file-status-sub{opacity:.5}[data-filepond-item-state=processing-error] .filepond--file-status-sub{opacity:0}[data-filepond-item-state=processing-error] .filepond--action-retry-item-processing~.filepond--file-status .filepond--file-status-sub{opacity:.5}[data-filepond-item-state=processing-complete] .filepond--action-revert-item-processing svg{animation:fall .5s linear .125s both}[data-filepond-item-state=processing-complete] .filepond--file-status-sub{opacity:.5}[data-filepond-item-state=processing-complete] .filepond--file-info-sub,[data-filepond-item-state=processing-complete] .filepond--processing-complete-indicator:not([style*=hidden])~.filepond--file-status .filepond--file-status-sub{opacity:0}[data-filepond-item-state=processing-complete] .filepond--action-revert-item-processing~.filepond--file-info .filepond--file-info-sub{opacity:.5}[data-filepond-item-state*=error] .filepond--file-wrapper,[data-filepond-item-state*=error] .filepond--panel,[data-filepond-item-state*=invalid] .filepond--file-wrapper,[data-filepond-item-state*=invalid] .filepond--panel{animation:shake .65s linear both}[data-filepond-item-state*=busy] .filepond--progress-indicator svg{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes shake{10%,90%{transform:translate(-.0625em)}20%,80%{transform:translate(.125em)}30%,50%,70%{transform:translate(-.25em)}40%,60%{transform:translate(.25em)}}@keyframes fall{0%{animation-timing-function:ease-out;opacity:0;transform:scale(.5)}70%{animation-timing-function:ease-in-out;opacity:1;transform:scale(1.1)}to{animation-timing-function:ease-out;transform:scale(1)}}.filepond--hopper[data-hopper-state=drag-over]>*{pointer-events:none}.filepond--hopper[data-hopper-state=drag-over]:after{content:"";inset:0;position:absolute;z-index:100}.filepond--progress-indicator{z-index:103}.filepond--file-action-button{z-index:102}.filepond--file-status{z-index:101}.filepond--file-info{z-index:100}.filepond--item{left:0;margin:.25em;padding:0;position:absolute;right:0;top:0;will-change:transform,opacity;z-index:1}.filepond--item>.filepond--panel{z-index:-1}.filepond--item>.filepond--panel .filepond--panel-bottom{box-shadow:0 .0625em .125em -.0625em #00000040}.filepond--item>.filepond--file-wrapper,.filepond--item>.filepond--panel{transition:opacity .15s ease-out}.filepond--item[data-drag-state]{cursor:grab}.filepond--item[data-drag-state]>.filepond--panel{box-shadow:0 0 0 transparent;transition:box-shadow .125s ease-in-out}.filepond--item[data-drag-state=drag]{cursor:grabbing}.filepond--item[data-drag-state=drag]>.filepond--panel{box-shadow:0 .125em .3125em #00000053}.filepond--item[data-drag-state]:not([data-drag-state=idle]){z-index:2}.filepond--item-panel{background-color:#64605e}[data-filepond-item-state=processing-complete] .filepond--item-panel{background-color:#369763}[data-filepond-item-state*=error] .filepond--item-panel,[data-filepond-item-state*=invalid] .filepond--item-panel{background-color:#c44e47}.filepond--item-panel{border-radius:.5em;transition:background-color .25s}.filepond--list-scroller{left:0;margin:0;position:absolute;right:0;top:0;will-change:transform}.filepond--list-scroller[data-state=overflow] .filepond--list{bottom:0;right:0}.filepond--list-scroller[data-state=overflow]{-webkit-overflow-scrolling:touch;-webkit-mask:linear-gradient(180deg,#000 calc(100% - .5em),transparent);mask:linear-gradient(180deg,#000 calc(100% - .5em),transparent);overflow-x:hidden;overflow-y:scroll}.filepond--list-scroller::-webkit-scrollbar{background:transparent}.filepond--list-scroller::-webkit-scrollbar:vertical{width:1em}.filepond--list-scroller::-webkit-scrollbar:horizontal{height:0}.filepond--list-scroller::-webkit-scrollbar-thumb{background-clip:content-box;background-color:#0000004d;border:.3125em solid transparent;border-radius:99999px}.filepond--list.filepond--list{list-style-type:none;margin:0;padding:0;position:absolute;top:0;will-change:transform}.filepond--list{left:.75em;right:.75em}.filepond--root[data-style-panel-layout~=integrated]{height:100%;margin:0;max-width:none;width:100%}.filepond--root[data-style-panel-layout~=circle] .filepond--panel-root,.filepond--root[data-style-panel-layout~=integrated] .filepond--panel-root{border-radius:0}.filepond--root[data-style-panel-layout~=circle] .filepond--panel-root>*,.filepond--root[data-style-panel-layout~=integrated] .filepond--panel-root>*{display:none}.filepond--root[data-style-panel-layout~=circle] .filepond--drop-label,.filepond--root[data-style-panel-layout~=integrated] .filepond--drop-label{align-items:center;bottom:0;display:flex;height:auto;justify-content:center;z-index:7}.filepond--root[data-style-panel-layout~=circle] .filepond--item-panel,.filepond--root[data-style-panel-layout~=integrated] .filepond--item-panel{display:none}.filepond--root[data-style-panel-layout~=compact] .filepond--list-scroller,.filepond--root[data-style-panel-layout~=integrated] .filepond--list-scroller{height:100%;margin-bottom:0;margin-top:0;overflow:hidden}.filepond--root[data-style-panel-layout~=compact] .filepond--list,.filepond--root[data-style-panel-layout~=integrated] .filepond--list{height:100%;left:0;right:0}.filepond--root[data-style-panel-layout~=compact] .filepond--item,.filepond--root[data-style-panel-layout~=integrated] .filepond--item{margin:0}.filepond--root[data-style-panel-layout~=compact] .filepond--file-wrapper,.filepond--root[data-style-panel-layout~=integrated] .filepond--file-wrapper{height:100%}.filepond--root[data-style-panel-layout~=compact] .filepond--drop-label,.filepond--root[data-style-panel-layout~=integrated] .filepond--drop-label{z-index:7}.filepond--root[data-style-panel-layout~=circle]{border-radius:99999rem;overflow:hidden}.filepond--root[data-style-panel-layout~=circle]>.filepond--panel{border-radius:inherit}.filepond--root[data-style-panel-layout~=circle] .filepond--file-info,.filepond--root[data-style-panel-layout~=circle] .filepond--file-status,.filepond--root[data-style-panel-layout~=circle]>.filepond--panel>*{display:none}@media not all and (-webkit-min-device-pixel-ratio:0),not all and (min-resolution:.001dpcm){@supports (-webkit-appearance:none) and (stroke-color:transparent){.filepond--root[data-style-panel-layout~=circle]{will-change:transform}}}.filepond--panel-root{background-color:#f1f0ef;border-radius:.5em}.filepond--panel{height:100%!important;left:0;margin:0;pointer-events:none;position:absolute;right:0;top:0}.filepond-panel:not([data-scalable=false]){height:auto!important}.filepond--panel[data-scalable=false]>div{display:none}.filepond--panel[data-scalable=true]{background-color:transparent!important;border:none!important;transform-style:preserve-3d}.filepond--panel-bottom,.filepond--panel-center,.filepond--panel-top{left:0;margin:0;padding:0;position:absolute;right:0;top:0}.filepond--panel-bottom,.filepond--panel-top{height:.5em}.filepond--panel-top{border-bottom:none!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.filepond--panel-top:after{background-color:inherit;bottom:-1px;content:"";height:2px;left:0;position:absolute;right:0}.filepond--panel-bottom,.filepond--panel-center{backface-visibility:hidden;transform:translate3d(0,.5em,0);transform-origin:left top;will-change:transform}.filepond--panel-bottom{border-top:none!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.filepond--panel-bottom:before{background-color:inherit;content:"";height:2px;left:0;position:absolute;right:0;top:-1px}.filepond--panel-center{border-bottom:none!important;border-radius:0!important;border-top:none!important;height:100px!important}.filepond--panel-center:not([style]){visibility:hidden}.filepond--progress-indicator{color:#fff;height:1.25em;margin:0;pointer-events:none;position:static;width:1.25em;will-change:transform,opacity}.filepond--progress-indicator svg{height:100%;transform-box:fill-box;vertical-align:top;width:100%}.filepond--progress-indicator path{fill:none;stroke:currentColor}.filepond--list-scroller{z-index:6}.filepond--drop-label{z-index:5}.filepond--drip{z-index:3}.filepond--root>.filepond--panel{z-index:2}.filepond--browser{z-index:1}.filepond--root{box-sizing:border-box;contain:layout style size;direction:ltr;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:1rem;font-weight:450;line-height:normal;margin-bottom:1em;position:relative;text-align:left;text-rendering:optimizeLegibility}.filepond--root *{box-sizing:inherit;line-height:inherit}.filepond--root :not(text){font-size:inherit}.filepond--root[data-disabled]{pointer-events:none}.filepond--root[data-disabled] .filepond--list-scroller{pointer-events:all}.filepond--root[data-disabled] .filepond--list{pointer-events:none}.filepond--root .filepond--drop-label{min-height:4.75em}.filepond--root .filepond--list-scroller{margin-bottom:1em;margin-top:1em}.filepond--root .filepond--credits{bottom:-14px;color:inherit;font-size:11px;line-height:.85;opacity:.175;position:absolute;right:0;text-decoration:none;z-index:3}.filepond--root .filepond--credits[style]{bottom:auto;margin-top:14px;top:0}.filepond--action-edit-item.filepond--action-edit-item{height:2em;padding:.1875em;width:2em}.filepond--action-edit-item.filepond--action-edit-item[data-align*=center]{margin-left:-.1875em}.filepond--action-edit-item.filepond--action-edit-item[data-align*=bottom]{margin-bottom:-.1875em}.filepond--action-edit-item-alt{background:transparent;border:none;color:inherit;font-family:inherit;line-height:inherit;margin:0 0 0 .25em;outline:none;padding:0;pointer-events:all;position:absolute}.filepond--action-edit-item-alt svg{height:1.3125em;width:1.3125em}.filepond--action-edit-item-alt span{font-size:0;opacity:0}.filepond--root[data-style-panel-layout~=circle] .filepond--action-edit-item{opacity:1!important;visibility:visible!important}.filepond--image-preview-markup{left:0;position:absolute;top:0}.filepond--image-preview-wrapper{z-index:2}.filepond--image-preview-overlay{display:block;left:0;margin:0;max-height:7rem;min-height:5rem;opacity:0;pointer-events:none;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;z-index:2}.filepond--image-preview-overlay svg{color:inherit;height:auto;max-height:inherit;width:100%}.filepond--image-preview-overlay-idle{color:#282828d9;mix-blend-mode:multiply}.filepond--image-preview-overlay-success{color:#369763;mix-blend-mode:normal}.filepond--image-preview-overlay-failure{color:#c44e47;mix-blend-mode:normal}@supports (-webkit-marquee-repetition:infinite) and ((-o-object-fit:fill) or (object-fit:fill)){.filepond--image-preview-overlay-idle{mix-blend-mode:normal}}.filepond--image-preview-wrapper{background:rgba(0,0,0,.01);border-radius:.45em;height:100%;left:0;margin:0;overflow:hidden;position:absolute;right:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.filepond--image-preview{align-items:center;background:#222;display:flex;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;will-change:transform,opacity;z-index:1}.filepond--image-clip{margin:0 auto;overflow:hidden;position:relative}.filepond--image-clip[data-transparency-indicator=grid] canvas,.filepond--image-clip[data-transparency-indicator=grid] img{background-color:#fff;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg' fill='%23eee'%3E%3Cpath d='M0 0h50v50H0M50 50h50v50H50'/%3E%3C/svg%3E");background-size:1.25em 1.25em}.filepond--image-bitmap,.filepond--image-vector{left:0;position:absolute;top:0;will-change:transform}.filepond--root[data-style-panel-layout~=integrated] .filepond--image-preview-wrapper{border-radius:0}.filepond--root[data-style-panel-layout~=integrated] .filepond--image-preview{align-items:center;display:flex;height:100%;justify-content:center}.filepond--root[data-style-panel-layout~=circle] .filepond--image-preview-wrapper{border-radius:99999rem}.filepond--root[data-style-panel-layout~=circle] .filepond--image-preview-overlay{bottom:0;top:auto;transform:scaleY(-1)}.filepond--root[data-style-panel-layout~=circle] .filepond--file .filepond--file-action-button[data-align*=bottom]:not([data-align*=center]){margin-bottom:.325em}.filepond--root[data-style-panel-layout~=circle] .filepond--file [data-align*=left]{left:calc(50% - 3em)}.filepond--root[data-style-panel-layout~=circle] .filepond--file [data-align*=right]{right:calc(50% - 3em)}.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=left],.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=right]{margin-bottom:.5125em}.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=center]{margin-bottom:.1875em;margin-left:.1875em;margin-top:0}.filepond--media-preview audio{display:none}.filepond--media-preview .audioplayer{margin:2.3em auto auto;width:calc(100% - 1.4em)}.filepond--media-preview .playpausebtn{background-position:50%;background-repeat:no-repeat;border:none;border-radius:25px;cursor:pointer;float:left;height:25px;margin-right:.3em;margin-top:.3em;outline:none;width:25px}.filepond--media-preview .playpausebtn:hover{background-color:#00000080}.filepond--media-preview .play{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAyElEQVQ4T9XUsWoCQRRG4XPaFL5SfIy8gKYKBCysrax8Ahs7qzQ2qVIFOwsrsbEWLEK6EBFGBrIQhN2d3dnGgalm+Jh7789Ix8uOPe4YDCH0gZ66atKW0pJDCE/AEngDXtRjCpwCRucbGANzNVTBqWBhfAJDdV+GNgWj8wtM41bPt3AbsDB2f69d/0dzwC0wUDe54A8wAWbqJbfkD+BZPeQO5QsYqYu6LKb0MIb7VT3VYfG8CnwEHtT3FKi4c8e/TZMyk3LYFrwCgMdHFbRDKS8AAAAASUVORK5CYII=)}.filepond--media-preview .pause{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAh0lEQVQ4T+2UsQkCURBE30PLMbAMMResQrAPsQ0TK9AqDKxGZeTLD74aGNwlhzfZssvADDMrPcOe+RggYZIJcG2s2KinMidZAvu6u6uzT8u+JCeZArfmcKUeK+EaONTdQy23bxgJX8aPHvIHsSnVuzTx36rn2pQFsGuqN//ZlK7vbIDvq6vkJ9yteBXzecYbAAAAAElFTkSuQmCC)}.filepond--media-preview .timeline{background:hsla(0,0%,100%,.3);border-radius:15px;float:left;height:3px;margin-top:1em;width:calc(100% - 2.5em)}.filepond--media-preview .playhead{background:#fff;border-radius:50%;height:13px;margin-top:-5px;width:13px}.filepond--media-preview-wrapper{background:rgba(0,0,0,.01);border-radius:.45em;height:100%;left:0;margin:0;overflow:hidden;pointer-events:auto;position:absolute;right:0;top:0}.filepond--media-preview-wrapper:before{background:linear-gradient(180deg,#000 0,transparent);content:" ";filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#000000",endColorstr="#00000000",GradientType=0);height:2em;position:absolute;width:100%;z-index:3}.filepond--media-preview{display:block;height:100%;position:relative;transform-origin:center center;width:100%;will-change:transform,opacity;z-index:1}.filepond--media-preview audio,.filepond--media-preview video{width:100%;will-change:transform}.filepond--root{--tw-bg-opacity:1;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--gray-950),0.1);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);margin-bottom:0}:is(.dark .filepond--root){--tw-ring-color:hsla(0,0%,100%,.2);background-color:hsla(0,0%,100%,.05)}.filepond--root[data-disabled=disabled]{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}:is(.dark .filepond--root[data-disabled=disabled]){--tw-ring-color:hsla(0,0%,100%,.1);background-color:transparent}.filepond--panel-root{background-color:transparent}.filepond--drop-label label{--tw-text-opacity:1;color:rgba(var(--gray-600),var(--tw-text-opacity));font-size:.875rem;line-height:1.25rem;padding:.75rem!important}:is(.dark .filepond--drop-label label){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.filepond--label-action{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity));font-weight:500;text-decoration-line:none;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.filepond--label-action:hover{--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}:is(.dark .filepond--label-action){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .filepond--label-action:hover){--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.filepond--drip-blob{--tw-bg-opacity:1;background-color:rgba(var(--gray-400),var(--tw-bg-opacity))}:is(.dark .filepond--drip-blob){--tw-bg-opacity:1;background-color:rgba(var(--gray-500),var(--tw-bg-opacity))}.filepond--root[data-style-panel-layout=grid] .filepond--item{display:inline;width:calc(50% - .5rem)}@media (min-width:1024px){.filepond--root[data-style-panel-layout=grid] .filepond--item{width:calc(33.33% - .5rem)}}.filepond--download-icon{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));display:inline-block;height:1rem;margin-inline-end:.25rem;pointer-events:auto;vertical-align:bottom;width:1rem}.filepond--download-icon:hover{background-color:hsla(0,0%,100%,.7)}.filepond--download-icon{-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWRvd25sb2FkIj48cGF0aCBkPSJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNE03IDEwbDUgNSA1LTVNMTIgMTVWMyIvPjwvc3ZnPg==);mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWRvd25sb2FkIj48cGF0aCBkPSJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNE03IDEwbDUgNSA1LTVNMTIgMTVWMyIvPjwvc3ZnPg==);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%}.filepond--open-icon{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));display:inline-block;height:1rem;margin-inline-end:.25rem;pointer-events:auto;vertical-align:bottom;width:1rem}.filepond--open-icon:hover{background-color:hsla(0,0%,100%,.7)}.filepond--open-icon{-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJoLTYgdy02IiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTEwIDZINmEyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMnYtNE0xNCA0aDZtMCAwdjZtMC02TDEwIDE0Ii8+PC9zdmc+);mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJoLTYgdy02IiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTEwIDZINmEyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMnYtNE0xNCA0aDZtMCAwdjZtMC02TDEwIDE0Ii8+PC9zdmc+);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%}.filepond--file-action-button.filepond--action-edit-item{background-color:rgba(0,0,0,.5)}.cropper-drag-box.cropper-crop.cropper-modal{background-color:rgba(var(--gray-100),.5);opacity:1}:is(.dark .cropper-drag-box.cropper-crop.cropper-modal){background-color:rgba(var(--gray-900),.8)}.fi-fo-file-upload-circle-cropper .cropper-face,.fi-fo-file-upload-circle-cropper .cropper-view-box{border-radius:50%}.CodeMirror{color:#000;direction:ltr;font-family:monospace;height:300px}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{background-color:#f7f7f7;border-right:1px solid #ddd;white-space:nowrap}.CodeMirror-linenumber{color:#999;min-width:20px;padding:0 3px 0 5px;text-align:right;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{background:#7e7;border:0!important;width:auto}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:0 0}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:0 0}.cm-fat-cursor{caret-color:transparent}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{inset:-50px 0 0;overflow:hidden;position:absolute}.CodeMirror-ruler{border-left:1px solid #ccc;bottom:0;position:absolute;top:0}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{background:#fff;overflow:hidden;position:relative}.CodeMirror-scroll{height:100%;margin-bottom:-50px;margin-right:-50px;outline:0;overflow:scroll!important;padding-bottom:50px;position:relative;z-index:0}.CodeMirror-sizer{border-right:50px solid transparent;position:relative}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{display:none;outline:0;position:absolute;z-index:6}.CodeMirror-vscrollbar{overflow-x:hidden;overflow-y:scroll;right:0;top:0}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-x:scroll;overflow-y:hidden}.CodeMirror-scrollbar-filler{bottom:0;right:0}.CodeMirror-gutter-filler{bottom:0;left:0}.CodeMirror-gutters{left:0;min-height:100%;position:absolute;top:0;z-index:3}.CodeMirror-gutter{display:inline-block;height:100%;margin-bottom:-50px;vertical-align:top;white-space:normal}.CodeMirror-gutter-wrapper{background:0 0!important;border:none!important;position:absolute;z-index:4}.CodeMirror-gutter-background{bottom:0;position:absolute;top:0;z-index:4}.CodeMirror-gutter-elt{cursor:default;position:absolute;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{word-wrap:normal;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-variant-ligatures:contextual;line-height:inherit;margin:0;overflow:visible;position:relative;white-space:pre;z-index:2}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{inset:0;position:absolute;z-index:0}.CodeMirror-linewidget{padding:.1px;position:relative;z-index:2}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{box-sizing:content-box}.CodeMirror-measure{height:0;overflow:hidden;position:absolute;visibility:hidden;width:100%}.CodeMirror-cursor{pointer-events:none;position:absolute}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{position:relative;visibility:hidden;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:#ff06}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:0 0}.EasyMDEContainer{display:block}.CodeMirror-rtl pre{direction:rtl}.EasyMDEContainer.sided--no-fullscreen{display:flex;flex-direction:row;flex-wrap:wrap}.EasyMDEContainer .CodeMirror{word-wrap:break-word;border:1px solid #ced4da;border-bottom-left-radius:4px;border-bottom-right-radius:4px;box-sizing:border-box;font:inherit;height:auto;padding:10px;z-index:0}.EasyMDEContainer .CodeMirror-scroll{cursor:text}.EasyMDEContainer .CodeMirror-fullscreen{background:#fff;border-bottom-right-radius:0!important;border-right:none!important;height:auto;inset:50px 0 0;position:fixed!important;z-index:8}.EasyMDEContainer .CodeMirror-sided{width:50%!important}.EasyMDEContainer.sided--no-fullscreen .CodeMirror-sided{border-bottom-right-radius:0;border-right:none!important;flex:1 1 auto;position:relative}.EasyMDEContainer .CodeMirror-placeholder{opacity:.5}.EasyMDEContainer .CodeMirror-focused .CodeMirror-selected{background:#d9d9d9}.editor-toolbar{border-left:1px solid #ced4da;border-right:1px solid #ced4da;border-top:1px solid #ced4da;border-top-left-radius:4px;border-top-right-radius:4px;padding:9px 10px;position:relative;-webkit-user-select:none;-moz-user-select:none;-o-user-select:none;user-select:none}.editor-toolbar.fullscreen{background:#fff;border:0;box-sizing:border-box;height:50px;left:0;opacity:1;padding-bottom:10px;padding-top:10px;position:fixed;top:0;width:100%;z-index:9}.editor-toolbar.fullscreen:before{background:linear-gradient(90deg,#fff 0,hsla(0,0%,100%,0));height:50px;left:0;margin:0;padding:0;position:fixed;top:0;width:20px}.editor-toolbar.fullscreen:after{background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,#fff);height:50px;margin:0;padding:0;position:fixed;right:0;top:0;width:20px}.EasyMDEContainer.sided--no-fullscreen .editor-toolbar{width:100%}.editor-toolbar .easymde-dropdown,.editor-toolbar button{background:0 0;border:1px solid transparent;border-radius:3px;cursor:pointer;display:inline-block;height:30px;margin:0;padding:0;text-align:center;text-decoration:none!important}.editor-toolbar button{font-weight:700;min-width:30px;padding:0 6px;white-space:nowrap}.editor-toolbar button.active,.editor-toolbar button:hover{background:#fcfcfc;border-color:#95a5a6}.editor-toolbar i.separator{border-left:1px solid #d9d9d9;border-right:1px solid #fff;color:transparent;display:inline-block;margin:0 6px;text-indent:-10px;width:0}.editor-toolbar button:after{font-family:Arial,Helvetica Neue,Helvetica,sans-serif;font-size:65%;position:relative;top:2px;vertical-align:text-bottom}.editor-toolbar button.heading-1:after{content:"1"}.editor-toolbar button.heading-2:after{content:"2"}.editor-toolbar button.heading-3:after{content:"3"}.editor-toolbar button.heading-bigger:after{content:"\25b2"}.editor-toolbar button.heading-smaller:after{content:"\25bc"}.editor-toolbar.disabled-for-preview button:not(.no-disable){opacity:.6;pointer-events:none}@media only screen and (max-width:700px){.editor-toolbar i.no-mobile{display:none}}.editor-statusbar{color:#959694;font-size:12px;padding:8px 10px;text-align:right}.EasyMDEContainer.sided--no-fullscreen .editor-statusbar{width:100%}.editor-statusbar span{display:inline-block;margin-left:1em;min-width:4em}.editor-statusbar .lines:before{content:"lines: "}.editor-statusbar .words:before{content:"words: "}.editor-statusbar .characters:before{content:"characters: "}.editor-preview-full{height:100%;left:0;position:absolute;top:0;width:100%;z-index:7}.editor-preview-full,.editor-preview-side{box-sizing:border-box;display:none;overflow:auto}.editor-preview-side{word-wrap:break-word;border:1px solid #ddd;bottom:0;position:fixed;right:0;top:50px;width:50%;z-index:9}.editor-preview-active-side{display:block}.EasyMDEContainer.sided--no-fullscreen .editor-preview-active-side{flex:1 1 auto;height:auto;position:static}.editor-preview-active{display:block}.editor-preview{background:#fafafa;padding:10px}.editor-preview>p{margin-top:0}.editor-preview pre{background:#eee;margin-bottom:10px}.editor-preview table td,.editor-preview table th{border:1px solid #ddd;padding:5px}.cm-s-easymde .cm-tag{color:#63a35c}.cm-s-easymde .cm-attribute{color:#795da3}.cm-s-easymde .cm-string{color:#183691}.cm-s-easymde .cm-header-1{font-size:calc(1.375rem + 1.5vw)}.cm-s-easymde .cm-header-2{font-size:calc(1.325rem + .9vw)}.cm-s-easymde .cm-header-3{font-size:calc(1.3rem + .6vw)}.cm-s-easymde .cm-header-4{font-size:calc(1.275rem + .3vw)}.cm-s-easymde .cm-header-5{font-size:1.25rem}.cm-s-easymde .cm-header-6{font-size:1rem}.cm-s-easymde .cm-header-1,.cm-s-easymde .cm-header-2,.cm-s-easymde .cm-header-3,.cm-s-easymde .cm-header-4,.cm-s-easymde .cm-header-5,.cm-s-easymde .cm-header-6{line-height:1.2;margin-bottom:.5rem}.cm-s-easymde .cm-comment{background:rgba(0,0,0,.05);border-radius:2px}.cm-s-easymde .cm-link{color:#7f8c8d}.cm-s-easymde .cm-url{color:#aab2b3}.cm-s-easymde .cm-quote{color:#7f8c8d;font-style:italic}.editor-toolbar .easymde-dropdown{border:1px solid #fff;border-radius:0;position:relative}.editor-toolbar .easymde-dropdown,.editor-toolbar .easymde-dropdown:hover{background:linear-gradient(to bottom right,#fff,#fff 84%,#333 0,#333)}.easymde-dropdown-content{background-color:#f9f9f9;box-shadow:0 8px 16px #0003;display:block;padding:8px;position:absolute;top:30px;visibility:hidden;z-index:2}.easymde-dropdown:active .easymde-dropdown-content,.easymde-dropdown:focus .easymde-dropdown-content,.easymde-dropdown:focus-within .easymde-dropdown-content{visibility:visible}.easymde-dropdown-content button{display:block}span[data-img-src]:after{background-image:var(--bg-image);background-repeat:no-repeat;background-size:contain;content:"";display:block;height:0;max-height:100%;max-width:100%;padding-top:var(--height);width:var(--width)}.CodeMirror .cm-spell-error:not(.cm-url):not(.cm-comment):not(.cm-tag):not(.cm-word){background:rgba(255,0,0,.15)}:root{--color-cm-red:#991b1b;--color-cm-orange:#9a3412;--color-cm-amber:#92400e;--color-cm-yellow:#854d0e;--color-cm-lime:#3f6212;--color-cm-green:#166534;--color-cm-emerald:#065f46;--color-cm-teal:#115e59;--color-cm-cyan:#155e75;--color-cm-sky:#075985;--color-cm-blue:#1e40af;--color-cm-indigo:#3730a3;--color-cm-violet:#5b21b6;--color-cm-purple:#6b21a8;--color-cm-fuchsia:#86198f;--color-cm-pink:#9d174d;--color-cm-rose:#9f1239;--color-cm-gray:#18181b;--color-cm-gray-muted:#71717a;--color-cm-gray-background:#e4e4e7}.dark{--color-cm-red:#f87171;--color-cm-orange:#fb923c;--color-cm-amber:#fbbf24;--color-cm-yellow:#facc15;--color-cm-lime:#a3e635;--color-cm-green:#4ade80;--color-cm-emerald:#4ade80;--color-cm-teal:#2dd4bf;--color-cm-cyan:#22d3ee;--color-cm-sky:#38bdf8;--color-cm-blue:#60a5fa;--color-cm-indigo:#818cf8;--color-cm-violet:#a78bfa;--color-cm-purple:#c084fc;--color-cm-fuchsia:#e879f9;--color-cm-pink:#f472b6;--color-cm-rose:#fb7185;--color-cm-gray:#fafafa;--color-cm-gray-muted:#a1a1aa;--color-cm-gray-background:#52525b}.cm-s-easymde .cm-comment{background-color:transparent;color:var(--color-cm-gray-muted)}.EasyMDEContainer .CodeMirror-cursor{border-color:currentColor}.dark .EasyMDEContainer .cm-s-easymde span.CodeMirror-selectedtext{filter:invert(100%)}.EasyMDEContainer .cm-s-easymde .cm-keyword{color:var(--color-cm-violet)}.EasyMDEContainer .cm-s-easymde .cm-atom{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-number{color:var(--color-cm-green)}.EasyMDEContainer .cm-s-easymde .cm-def{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-variable{color:var(--color-cm-yellow)}.EasyMDEContainer .cm-s-easymde .cm-variable-2{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-variable-3{color:var(--color-cm-emerald)}.EasyMDEContainer .cm-s-easymde .cm-operator,.EasyMDEContainer .cm-s-easymde .cm-property{color:var(--color-cm-gray)}.EasyMDEContainer .cm-s-easymde .cm-string,.EasyMDEContainer .cm-s-easymde .cm-string-2{color:var(--color-cm-rose)}.EasyMDEContainer .cm-s-easymde .cm-meta{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-error{color:var(--color-cm-red)}.EasyMDEContainer .cm-s-easymde .cm-qualifier{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-builtin{color:var(--color-cm-violet)}.EasyMDEContainer .cm-s-easymde .cm-bracket{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-tag{color:var(--color-cm-green)}.EasyMDEContainer .cm-s-easymde .cm-attribute{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-hr{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-formatting-quote{color:var(--color-cm-sky)}.EasyMDEContainer .cm-s-easymde .cm-formatting-quote+.cm-quote{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-formatting-list,.EasyMDEContainer .cm-s-easymde .cm-formatting-list+.cm-variable-2,.EasyMDEContainer .cm-s-easymde .cm-tab+.cm-variable-2{color:var(--color-cm-gray)}.EasyMDEContainer .cm-s-easymde .cm-link{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-tag{color:var(--color-cm-red)}.EasyMDEContainer .cm-s-easymde .cm-attribute{color:var(--color-cm-amber)}.EasyMDEContainer .cm-s-easymde .cm-attribute+.cm-string{color:var(--color-cm-green)}.EasyMDEContainer .cm-s-easymde .cm-formatting-code+.cm-comment:not(.cm-formatting-code){background-color:var(--color-cm-gray-background);color:var(--color-cm-gray)}.EasyMDEContainer .cm-s-easymde .cm-header-1{font-size:1.875rem;line-height:2.25rem}.EasyMDEContainer .cm-s-easymde .cm-header-2{font-size:1.5rem;line-height:2rem}.EasyMDEContainer .cm-s-easymde .cm-header-3{font-size:1.25rem;line-height:1.75rem}.EasyMDEContainer .cm-s-easymde .cm-header-4{font-size:1.125rem;line-height:1.75rem}.EasyMDEContainer .cm-s-easymde .cm-header-5{font-size:1rem;line-height:1.5rem}.EasyMDEContainer .cm-s-easymde .cm-header-6{font-size:.875rem;line-height:1.25rem}.EasyMDEContainer .cm-s-easymde .cm-comment{background-image:none}.EasyMDEContainer .CodeMirror,.EasyMDEContainer .cm-s-easymde .cm-formatting-code-block,.EasyMDEContainer .cm-s-easymde .cm-tab+.cm-comment{background-color:transparent;color:inherit}.EasyMDEContainer .CodeMirror{border-style:none;padding:.375rem .75rem}.EasyMDEContainer .CodeMirror-scroll{height:auto}.EasyMDEContainer .editor-toolbar{--tw-border-opacity:1;border-color:rgba(var(--gray-200),var(--tw-border-opacity));border-radius:0;border-width:0 0 1px;-moz-column-gap:.25rem;column-gap:.25rem;display:flex;overflow-x:auto;padding:.5rem .625rem}:is(.dark .EasyMDEContainer .editor-toolbar){border-color:hsla(0,0%,100%,.1)}.EasyMDEContainer .editor-toolbar button{border-radius:.5rem;border-style:none;cursor:pointer;display:grid;height:2rem;padding:0;place-content:center;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:2rem}.EasyMDEContainer .editor-toolbar button:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}:is(.dark .EasyMDEContainer .editor-toolbar button:hover){background-color:hsla(0,0%,100%,.05)}:is(.dark .EasyMDEContainer .editor-toolbar button:focus-visible){background-color:hsla(0,0%,100%,.05)}.EasyMDEContainer .editor-toolbar button.active{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}:is(.dark .EasyMDEContainer .editor-toolbar button.active){background-color:hsla(0,0%,100%,.05)}.EasyMDEContainer .editor-toolbar button:before{--tw-bg-opacity:1;background-color:rgba(var(--gray-700),var(--tw-bg-opacity));display:block;height:1rem;width:1rem}:is(.dark .EasyMDEContainer .editor-toolbar button):before{--tw-bg-opacity:1;background-color:rgba(var(--gray-300),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button:before{content:"";-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.EasyMDEContainer .editor-toolbar button.active:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity))}:is(.dark .EasyMDEContainer .editor-toolbar button.active):before{--tw-bg-opacity:1;background-color:rgba(var(--primary-400),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar .separator{border-style:none;margin:0!important;width:.25rem}.EasyMDEContainer .editor-toolbar .bold:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M321.1 242.4c19-22.3 30.9-50.8 30.9-82.4 0-70.59-57.42-128-128-128l-192 .01c-17.67 0-32 14.31-32 32s14.33 32 32 32h16v320H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h224c70.58 0 128-57.41 128-128 0-46.71-25.4-87.21-62.9-109.61zM112 96.01h112c35.3 0 64 28.72 64 64s-28.7 64-64 64H112v-128zM256 416H112V288h144c35.3 0 64 28.71 64 63.1S291.3 416 256 416z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M321.1 242.4c19-22.3 30.9-50.8 30.9-82.4 0-70.59-57.42-128-128-128l-192 .01c-17.67 0-32 14.31-32 32s14.33 32 32 32h16v320H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h224c70.58 0 128-57.41 128-128 0-46.71-25.4-87.21-62.9-109.61zM112 96.01h112c35.3 0 64 28.72 64 64s-28.7 64-64 64H112v-128zM256 416H112V288h144c35.3 0 64 28.71 64 63.1S291.3 416 256 416z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .italic:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M384 64.01c0 17.69-14.31 32-32 32h-58.67l-133.3 320H224c17.69 0 32 14.31 32 32s-14.31 32-32 32H32c-17.69 0-32-14.31-32-32s14.31-32 32-32h58.67l133.3-320H160c-17.69 0-32-14.31-32-32s14.31-32 32-32h192c17.7 0 32 14.32 32 32z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M384 64.01c0 17.69-14.31 32-32 32h-58.67l-133.3 320H224c17.69 0 32 14.31 32 32s-14.31 32-32 32H32c-17.69 0-32-14.31-32-32s14.31-32 32-32h58.67l133.3-320H160c-17.69 0-32-14.31-32-32s14.31-32 32-32h192c17.7 0 32 14.32 32 32z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .strikethrough:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M332.2 319.9c17.22 12.17 22.33 26.51 18.61 48.21-3.031 17.59-10.88 29.34-24.72 36.99-35.44 19.75-108.5 11.96-186-19.68-16.34-6.686-35.03 1.156-41.72 17.53s1.188 35.05 17.53 41.71c31.75 12.93 95.69 35.37 157.6 35.37 29.62 0 58.81-5.156 83.72-18.96 30.81-17.09 50.44-45.46 56.72-82.11 3.998-23.27 2.168-42.58-3.488-59.05H332.2zm155.8-80-176.5-.03c-15.85-5.614-31.83-10.34-46.7-14.62-85.47-24.62-110.9-39.05-103.7-81.33 2.5-14.53 10.16-25.96 22.72-34.03 20.47-13.15 64.06-23.84 155.4.343 17.09 4.53 34.59-5.654 39.13-22.74 4.531-17.09-5.656-34.59-22.75-39.12-91.31-24.18-160.7-21.62-206.3 7.654C121.8 73.72 103.6 101.1 98.09 133.1c-8.83 51.4 9.81 84.2 39.11 106.8H24c-13.25 0-24 10.75-24 23.1 0 13.25 10.75 23.1 24 23.1h464c13.25 0 24-10.75 24-23.1 0-12.3-10.7-23.1-24-23.1z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M332.2 319.9c17.22 12.17 22.33 26.51 18.61 48.21-3.031 17.59-10.88 29.34-24.72 36.99-35.44 19.75-108.5 11.96-186-19.68-16.34-6.686-35.03 1.156-41.72 17.53s1.188 35.05 17.53 41.71c31.75 12.93 95.69 35.37 157.6 35.37 29.62 0 58.81-5.156 83.72-18.96 30.81-17.09 50.44-45.46 56.72-82.11 3.998-23.27 2.168-42.58-3.488-59.05H332.2zm155.8-80-176.5-.03c-15.85-5.614-31.83-10.34-46.7-14.62-85.47-24.62-110.9-39.05-103.7-81.33 2.5-14.53 10.16-25.96 22.72-34.03 20.47-13.15 64.06-23.84 155.4.343 17.09 4.53 34.59-5.654 39.13-22.74 4.531-17.09-5.656-34.59-22.75-39.12-91.31-24.18-160.7-21.62-206.3 7.654C121.8 73.72 103.6 101.1 98.09 133.1c-8.83 51.4 9.81 84.2 39.11 106.8H24c-13.25 0-24 10.75-24 23.1 0 13.25 10.75 23.1 24 23.1h464c13.25 0 24-10.75 24-23.1 0-12.3-10.7-23.1-24-23.1z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .link:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M598.6 41.41C570.1 13.8 534.8 0 498.6 0s-72.36 13.8-99.96 41.41l-43.36 43.36c15.11 8.012 29.47 17.58 41.91 30.02 3.146 3.146 5.898 6.518 8.742 9.838l37.96-37.96C458.5 72.05 477.1 64 498.6 64c20.67 0 40.1 8.047 54.71 22.66 14.61 14.61 22.66 34.04 22.66 54.71s-8.049 40.1-22.66 54.71l-133.3 133.3C405.5 343.1 386 352 365.4 352s-40.1-8.048-54.71-22.66C296 314.7 287.1 295.3 287.1 274.6s8.047-40.1 22.66-54.71l4.44-3.49c-2.1-3.9-4.3-7.9-7.5-11.1-8.6-8.6-19.9-13.3-32.1-13.3-11.93 0-23.1 4.664-31.61 12.97-30.71 53.96-23.63 123.6 22.39 169.6C293 402.2 329.2 416 365.4 416c36.18 0 72.36-13.8 99.96-41.41L598.6 241.3c28.45-28.45 42.24-66.01 41.37-103.3-.87-35.9-14.57-69.84-41.37-96.59zM234 387.4l-37.9 37.9C181.5 439.1 162 448 141.4 448c-20.67 0-40.1-8.047-54.71-22.66-14.61-14.61-22.66-34.04-22.66-54.71s8.049-40.1 22.66-54.71l133.3-133.3C234.5 168 253.1 160 274.6 160s40.1 8.048 54.71 22.66c14.62 14.61 22.66 34.04 22.66 54.71s-8.047 40.1-22.66 54.71l-3.51 3.52c2.094 3.939 4.219 7.895 7.465 11.15C341.9 315.3 353.3 320 365.4 320c11.93 0 23.1-4.664 31.61-12.97 30.71-53.96 23.63-123.6-22.39-169.6C346.1 109.8 310.8 96 274.6 96c-36.2 0-72.3 13.8-99.9 41.4L41.41 270.7C13.81 298.3 0 334.48 0 370.66c0 36.18 13.8 72.36 41.41 99.97C69.01 498.2 105.2 512 141.4 512c36.18 0 72.36-13.8 99.96-41.41l43.36-43.36c-15.11-8.012-29.47-17.58-41.91-30.02-3.21-3.11-5.91-6.51-8.81-9.81z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M598.6 41.41C570.1 13.8 534.8 0 498.6 0s-72.36 13.8-99.96 41.41l-43.36 43.36c15.11 8.012 29.47 17.58 41.91 30.02 3.146 3.146 5.898 6.518 8.742 9.838l37.96-37.96C458.5 72.05 477.1 64 498.6 64c20.67 0 40.1 8.047 54.71 22.66 14.61 14.61 22.66 34.04 22.66 54.71s-8.049 40.1-22.66 54.71l-133.3 133.3C405.5 343.1 386 352 365.4 352s-40.1-8.048-54.71-22.66C296 314.7 287.1 295.3 287.1 274.6s8.047-40.1 22.66-54.71l4.44-3.49c-2.1-3.9-4.3-7.9-7.5-11.1-8.6-8.6-19.9-13.3-32.1-13.3-11.93 0-23.1 4.664-31.61 12.97-30.71 53.96-23.63 123.6 22.39 169.6C293 402.2 329.2 416 365.4 416c36.18 0 72.36-13.8 99.96-41.41L598.6 241.3c28.45-28.45 42.24-66.01 41.37-103.3-.87-35.9-14.57-69.84-41.37-96.59zM234 387.4l-37.9 37.9C181.5 439.1 162 448 141.4 448c-20.67 0-40.1-8.047-54.71-22.66-14.61-14.61-22.66-34.04-22.66-54.71s8.049-40.1 22.66-54.71l133.3-133.3C234.5 168 253.1 160 274.6 160s40.1 8.048 54.71 22.66c14.62 14.61 22.66 34.04 22.66 54.71s-8.047 40.1-22.66 54.71l-3.51 3.52c2.094 3.939 4.219 7.895 7.465 11.15C341.9 315.3 353.3 320 365.4 320c11.93 0 23.1-4.664 31.61-12.97 30.71-53.96 23.63-123.6-22.39-169.6C346.1 109.8 310.8 96 274.6 96c-36.2 0-72.3 13.8-99.9 41.4L41.41 270.7C13.81 298.3 0 334.48 0 370.66c0 36.18 13.8 72.36 41.41 99.97C69.01 498.2 105.2 512 141.4 512c36.18 0 72.36-13.8 99.96-41.41l43.36-43.36c-15.11-8.012-29.47-17.58-41.91-30.02-3.21-3.11-5.91-6.51-8.81-9.81z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .heading:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M0 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v112h224V96h-16c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v320h16c17.7 0 32 14.3 32 32s-14.3 32-32 32h-96c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112v144h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V96H32C14.3 96 0 81.7 0 64z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M0 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v112h224V96h-16c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v320h16c17.7 0 32 14.3 32 32s-14.3 32-32 32h-96c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112v144h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V96H32C14.3 96 0 81.7 0 64z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .quote:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M96 224c-11.28 0-21.95 2.3-32 5.9V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.3-32-32-32C57.42 96 0 153.4 0 224v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96zm256 0c-11.28 0-21.95 2.305-32 5.879V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.33-32-32-32c-70.58 0-128 57.42-128 128v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M96 224c-11.28 0-21.95 2.3-32 5.9V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.3-32-32-32C57.42 96 0 153.4 0 224v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96zm256 0c-11.28 0-21.95 2.305-32 5.879V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.33-32-32-32c-70.58 0-128 57.42-128 128v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .code:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M416 31.94C416 21.75 408.1 0 384.1 0c-13.98 0-26.87 9.072-30.89 23.18l-128 448a31.933 31.933 0 0 0-1.241 8.801C223.1 490.3 232 512 256 512c13.92 0 26.73-9.157 30.75-23.22l128-448c.85-2.97 1.25-5.93 1.25-8.84zM176 143.1c0-18.28-14.95-32-32-32-8.188 0-16.38 3.125-22.62 9.376l-112 112C3.125 239.6 0 247.8 0 255.1s3.125 17.3 9.375 23.5l112 112c6.225 6.3 14.425 8.5 22.625 8.5 17.05 0 32-13.73 32-32 0-8.188-3.125-16.38-9.375-22.63L77.25 255.1l89.38-89.38c6.27-5.42 9.37-13.52 9.37-22.62zm464 112c0-8.188-3.125-16.38-9.375-22.63l-112-112C512.4 115.1 504.2 111.1 496 111.1c-17.05 0-32 13.73-32 32 0 8.188 3.125 16.38 9.375 22.63l89.38 89.38-89.38 89.38C467.1 351.6 464 359.8 464 367.1c0 18.28 14.95 32 32 32 8.188 0 16.38-3.125 22.62-9.376l112-112C636.9 272.4 640 264.2 640 255.1z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M416 31.94C416 21.75 408.1 0 384.1 0c-13.98 0-26.87 9.072-30.89 23.18l-128 448a31.933 31.933 0 0 0-1.241 8.801C223.1 490.3 232 512 256 512c13.92 0 26.73-9.157 30.75-23.22l128-448c.85-2.97 1.25-5.93 1.25-8.84zM176 143.1c0-18.28-14.95-32-32-32-8.188 0-16.38 3.125-22.62 9.376l-112 112C3.125 239.6 0 247.8 0 255.1s3.125 17.3 9.375 23.5l112 112c6.225 6.3 14.425 8.5 22.625 8.5 17.05 0 32-13.73 32-32 0-8.188-3.125-16.38-9.375-22.63L77.25 255.1l89.38-89.38c6.27-5.42 9.37-13.52 9.37-22.62zm464 112c0-8.188-3.125-16.38-9.375-22.63l-112-112C512.4 115.1 504.2 111.1 496 111.1c-17.05 0-32 13.73-32 32 0 8.188 3.125 16.38 9.375 22.63l89.38 89.38-89.38 89.38C467.1 351.6 464 359.8 464 367.1c0 18.28 14.95 32 32 32 8.188 0 16.38-3.125 22.62-9.376l112-112C636.9 272.4 640 264.2 640 255.1z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .unordered-list:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M16 96c0-26.51 21.49-48 48-48s48 21.49 48 48c0 26.5-21.49 48-48 48s-48-21.5-48-48zm464-32c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zM16 416c0-26.5 21.49-48 48-48s48 21.5 48 48-21.49 48-48 48-48-21.5-48-48zm96-160c0 26.5-21.49 48-48 48s-48-21.5-48-48 21.49-48 48-48 48 21.5 48 48z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M16 96c0-26.51 21.49-48 48-48s48 21.49 48 48c0 26.5-21.49 48-48 48s-48-21.5-48-48zm464-32c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zM16 416c0-26.5 21.49-48 48-48s48 21.5 48 48-21.49 48-48 48-48-21.5-48-48zm96-160c0 26.5-21.49 48-48 48s-48-21.5-48-48 21.49-48 48-48 48 21.5 48 48z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .ordered-list:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M55.1 56.04c0-13.26 11.64-24 24-24h32c14.2 0 24 10.74 24 24V176h16c14.2 0 24 10.8 24 24 0 13.3-9.8 24-24 24h-80c-12.36 0-24-10.7-24-24 0-13.2 11.64-24 24-24h16V80.04h-8c-12.36 0-24-10.75-24-24zm63.6 285.16c-6.6-7.4-18.3-6.9-24.05 1.2l-11.12 15.5c-7.7 10.8-22.69 13.3-33.48 5.6-10.79-7.7-13.28-22.7-5.58-33.4l11.12-15.6c23.74-33.3 72.31-35.7 99.21-4.9 21.3 23.5 20.8 60.9-1.1 84.7L118.8 432H152c13.3 0 24 10.7 24 24s-10.7 24-24 24H64c-9.53 0-18.16-5.6-21.98-14.4-3.83-8.7-2.12-18.9 4.34-25.9l72.04-78c5.3-5.8 5.4-14.6.3-20.5zM512 64c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M55.1 56.04c0-13.26 11.64-24 24-24h32c14.2 0 24 10.74 24 24V176h16c14.2 0 24 10.8 24 24 0 13.3-9.8 24-24 24h-80c-12.36 0-24-10.7-24-24 0-13.2 11.64-24 24-24h16V80.04h-8c-12.36 0-24-10.75-24-24zm63.6 285.16c-6.6-7.4-18.3-6.9-24.05 1.2l-11.12 15.5c-7.7 10.8-22.69 13.3-33.48 5.6-10.79-7.7-13.28-22.7-5.58-33.4l11.12-15.6c23.74-33.3 72.31-35.7 99.21-4.9 21.3 23.5 20.8 60.9-1.1 84.7L118.8 432H152c13.3 0 24 10.7 24 24s-10.7 24-24 24H64c-9.53 0-18.16-5.6-21.98-14.4-3.83-8.7-2.12-18.9 4.34-25.9l72.04-78c5.3-5.8 5.4-14.6.3-20.5zM512 64c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .table:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1792 1792'%3E%3Cpath d='M576 1376v-192q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V800q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zM576 608V416q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768V416q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V416q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm128-320v1088q0 66-47 113t-113 47H224q-66 0-113-47t-47-113V288q0-66 47-113t113-47h1344q66 0 113 47t47 113z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1792 1792'%3E%3Cpath d='M576 1376v-192q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V800q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zM576 608V416q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768V416q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V416q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm128-320v1088q0 66-47 113t-113 47H224q-66 0-113-47t-47-113V288q0-66 47-113t113-47h1344q66 0 113 47t47 113z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .upload-image:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M447.1 32h-484C28.64 32-.01 60.65-.01 96v320c0 35.35 28.65 64 63.1 64h384c35.35 0 64-28.65 64-64V96c.01-35.35-27.79-64-63.99-64zm-336 64c26.51 0 48 21.49 48 48s-20.6 48-48 48-48-21.49-48-48 22.38-48 48-48zm335 311.6c-2.8 5.2-8.2 8.4-14.1 8.4H82.01a15.993 15.993 0 0 1-14.26-8.75 16 16 0 0 1 1.334-16.68l70-96C142.1 290.4 146.9 288 152 288s9.916 2.441 12.93 6.574l32.46 44.51 93.3-139.1C293.7 194.7 298.7 192 304 192s10.35 2.672 13.31 7.125l128 192c3.29 4.875 3.59 11.175.79 16.475z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M447.1 32h-484C28.64 32-.01 60.65-.01 96v320c0 35.35 28.65 64 63.1 64h384c35.35 0 64-28.65 64-64V96c.01-35.35-27.79-64-63.99-64zm-336 64c26.51 0 48 21.49 48 48s-20.6 48-48 48-48-21.49-48-48 22.38-48 48-48zm335 311.6c-2.8 5.2-8.2 8.4-14.1 8.4H82.01a15.993 15.993 0 0 1-14.26-8.75 16 16 0 0 1 1.334-16.68l70-96C142.1 290.4 146.9 288 152 288s9.916 2.441 12.93 6.574l32.46 44.51 93.3-139.1C293.7 194.7 298.7 192 304 192s10.35 2.672 13.31 7.125l128 192c3.29 4.875 3.59 11.175.79 16.475z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .undo:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M480 256c0 123.4-100.5 223.9-223.9 223.9-48.84 0-95.17-15.58-134.2-44.86-14.12-10.59-16.97-30.66-6.375-44.81 10.59-14.12 30.62-16.94 44.81-6.375 27.84 20.91 61 31.94 95.88 31.94C344.3 415.8 416 344.1 416 256S344.31 96.2 256.2 96.2c-37.46 0-73.09 13.49-101.3 36.64l45.12 45.14c17.01 17.02 4.955 46.1-19.1 46.1H35.17C24.58 224.1 16 215.5 16 204.9V59.04C16 35 45.07 22.96 62.07 39.97l47.6 47.63C149.9 52.71 201.5 32.11 256.1 32.11 379.5 32.11 480 132.6 480 256z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M480 256c0 123.4-100.5 223.9-223.9 223.9-48.84 0-95.17-15.58-134.2-44.86-14.12-10.59-16.97-30.66-6.375-44.81 10.59-14.12 30.62-16.94 44.81-6.375 27.84 20.91 61 31.94 95.88 31.94C344.3 415.8 416 344.1 416 256S344.31 96.2 256.2 96.2c-37.46 0-73.09 13.49-101.3 36.64l45.12 45.14c17.01 17.02 4.955 46.1-19.1 46.1H35.17C24.58 224.1 16 215.5 16 204.9V59.04C16 35 45.07 22.96 62.07 39.97l47.6 47.63C149.9 52.71 201.5 32.11 256.1 32.11 379.5 32.11 480 132.6 480 256z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .redo:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M468.9 32.11c13.87 0 27.18 10.77 27.18 27.04v145.9c0 10.59-8.584 19.17-19.17 19.17h-145.7c-16.28 0-27.06-13.32-27.06-27.2 0-6.634 2.461-13.4 7.96-18.9l45.12-45.14c-28.22-23.14-63.85-36.64-101.3-36.64-88.09 0-159.8 71.69-159.8 159.8S167.8 415.9 255.9 415.9c73.14 0 89.44-38.31 115.1-38.31 18.48 0 31.97 15.04 31.97 31.96 0 35.04-81.59 70.41-147 70.41-123.4 0-223.9-100.5-223.9-223.9S132.6 32.44 256 32.44c54.6 0 106.2 20.39 146.4 55.26L450 40.07c5.5-5.5 12.3-7.96 18.9-7.96z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M468.9 32.11c13.87 0 27.18 10.77 27.18 27.04v145.9c0 10.59-8.584 19.17-19.17 19.17h-145.7c-16.28 0-27.06-13.32-27.06-27.2 0-6.634 2.461-13.4 7.96-18.9l45.12-45.14c-28.22-23.14-63.85-36.64-101.3-36.64-88.09 0-159.8 71.69-159.8 159.8S167.8 415.9 255.9 415.9c73.14 0 89.44-38.31 115.1-38.31 18.48 0 31.97 15.04 31.97 31.96 0 35.04-81.59 70.41-147 70.41-123.4 0-223.9-100.5-223.9-223.9S132.6 32.44 256 32.44c54.6 0 106.2 20.39 146.4 55.26L450 40.07c5.5-5.5 12.3-7.96 18.9-7.96z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-statusbar{display:none}.fi-fo-rich-editor trix-toolbar .trix-dialogs{position:relative}.fi-fo-rich-editor trix-toolbar .trix-dialog{--tw-bg-opacity:1;--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);background-color:rgba(var(--gray-50),var(--tw-bg-opacity));border-radius:.5rem;bottom:auto;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);left:0;padding:.5rem;position:absolute;right:0;top:1rem}:is(.dark .fi-fo-rich-editor trix-toolbar .trix-dialog){--tw-bg-opacity:1;background-color:rgba(var(--gray-800),var(--tw-bg-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields{display:flex;flex-direction:column;gap:.5rem;width:100%}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group{display:flex;gap:.5rem}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--gray-950),0.1);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;border-style:none;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgba(var(--gray-950),var(--tw-text-opacity));display:block;font-size:.875rem;line-height:1.25rem;outline:2px solid transparent;outline-offset:2px;padding-bottom:.375rem;padding-inline-end:.75rem;padding-top:.375rem;padding-inline-start:.75rem;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:100%}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}:is(.dark .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input){--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-color:hsla(0,0%,100%,.2);background-color:rgba(var(--gray-700),var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:focus-within){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}@media (min-width:640px){.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input{font-size:.875rem;line-height:1.5rem}}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group .trix-button{--tw-bg-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-200),var(--tw-ring-opacity));background-color:rgba(var(--gray-50),var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);font-size:.75rem;line-height:1rem;padding:.125rem .5rem}:is(.dark .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group .trix-button){--tw-bg-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-600),var(--tw-ring-opacity));background-color:rgba(var(--gray-700),var(--tw-bg-opacity))}.fi-fo-rich-editor trix-editor:empty:before{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .fi-fo-rich-editor trix-editor:empty):before{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.fi-fo-rich-editor trix-editor:empty:before{content:attr(placeholder)}.fi-fo-rich-editor trix-editor.prose :where(ol):not(:where([class~=not-prose] *)),.fi-fo-rich-editor trix-editor.prose :where(ul):not(:where([class~=not-prose] *)){padding-inline-end:0!important;padding-inline-start:1.625em!important}.fi-fo-rich-editor trix-editor.prose :where(ul>li):not(:where([class~=not-prose] *)){padding-inline-end:0!important;padding-inline-start:.375em!important}select:not(.choices){background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E")}[dir=rtl] select{background-position:left .5rem center!important}.choices{outline:2px solid transparent;outline-offset:2px;position:relative}.choices [hidden]{display:none!important}.choices[data-type*=select-one] .has-no-choices{display:none}.choices[data-type*=select-one] .choices__input{display:block;margin:0;width:100%}.choices__inner{background-repeat:no-repeat;outline:2px solid transparent;outline-offset:2px;padding-bottom:.375rem;padding-inline-end:2rem;padding-top:.375rem;padding-inline-start:.75rem}@media (min-width:640px){.choices__inner{font-size:.875rem;line-height:1.5rem}}.choices__inner{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-size:1.5em 1.5em}.choices.is-disabled .choices__inner{cursor:default}[dir=rtl] .choices__inner{background-position:left .5rem center}.choices__list--single{display:inline-block}.choices__list--single .choices__item{--tw-text-opacity:1;color:rgba(var(--gray-950),var(--tw-text-opacity))}:is(.dark .choices__list--single .choices__item){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.choices.is-disabled .choices__list--single .choices__item{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .choices.is-disabled .choices__list--single .choices__item){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__list--multiple{display:flex;flex-wrap:wrap;gap:.375rem}.choices__list--multiple:not(:empty){margin-bottom:.25rem;margin-left:-.25rem;margin-right:-.25rem;padding-bottom:.125rem;padding-top:.125rem}.choices__list--multiple .choices__item{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-color:rgba(var(--primary-600),0.1);align-items:center;background-color:rgba(var(--primary-50),var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgba(var(--primary-600),var(--tw-text-opacity));display:inline-flex;font-size:.75rem;font-weight:500;gap:.25rem;line-height:1rem;padding:.25rem .5rem;word-break:break-all}:is(.dark .choices__list--multiple .choices__item){--tw-text-opacity:1;--tw-ring-color:rgba(var(--primary-400),0.3);background-color:rgba(var(--primary-400),.1);color:rgba(var(--primary-400),var(--tw-text-opacity))}.choices__list--dropdown,.choices__list[aria-expanded]{--tw-bg-opacity:1;--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--gray-950),0.05);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);display:none;font-size:.875rem;line-height:1.25rem;margin-top:.5rem;overflow:hidden;overflow-wrap:break-word;position:absolute;top:100%;width:100%;will-change:visibility;z-index:10}:is(.dark .choices__list--dropdown),:is(.dark .choices__list[aria-expanded]){--tw-bg-opacity:1;--tw-ring-color:hsla(0,0%,100%,.1);background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.is-active.choices__list--dropdown,.is-active.choices__list[aria-expanded]{display:block;padding:.25rem}.choices__list--dropdown .choices__list,.choices__list[aria-expanded] .choices__list{max-height:15rem;overflow:auto;will-change:scroll-position}.choices__item--choice{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity));padding:.5rem;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}:is(.dark .choices__item--choice){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__item--choice.choices__item--selectable{--tw-text-opacity:1;border-radius:.375rem;color:rgba(var(--gray-950),var(--tw-text-opacity))}:is(.dark .choices__item--choice.choices__item--selectable){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.choices__list--dropdown .choices__item--selectable.is-highlighted,.choices__list[aria-expanded] .choices__item--selectable.is-highlighted{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}:is(.dark .choices__list--dropdown .choices__item--selectable.is-highlighted),:is(.dark .choices__list[aria-expanded] .choices__item--selectable.is-highlighted){background-color:hsla(0,0%,100%,.05)}.choices__item{cursor:default}.choices__item--disabled{pointer-events:none}.choices__item--disabled:disabled{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .choices__item--disabled:disabled){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices.is-disabled .choices__placeholder.choices__item,.choices__placeholder.choices__item{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity));cursor:default}:is(.dark .choices.is-disabled .choices__placeholder.choices__item),:is(.dark .choices__placeholder.choices__item){--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.choices__button{background-color:transparent;background-position:50%;background-repeat:no-repeat;border-width:0;outline:2px solid transparent;outline-offset:2px;text-indent:-9999px}.choices[data-type*=select-one] .choices__button{height:1rem;inset-inline-end:0;margin-inline-end:2.25rem;opacity:.5;padding:0;position:absolute;transition-duration:75ms;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);width:1rem}:is(.dark .choices[data-type*=select-one] .choices__button){opacity:.4}.choices[data-type*=select-one] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=);background-size:.7142em .7142em;top:calc(50% - .5714em)}.dark .choices[data-type*=select-one] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=)}.choices[data-type*=select-multiple] .choices__button{height:1rem;opacity:.5;width:1rem}:is(.dark .choices[data-type*=select-multiple] .choices__button){opacity:.4}.choices[data-type*=select-multiple] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=);background-size:.7142em .7142em}.dark .choices[data-type*=select-multiple] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=)}.choices[data-type*=select-multiple] .choices__button:focus-visible,.choices[data-type*=select-multiple] .choices__button:hover,.choices[data-type*=select-one] .choices__button:focus-visible,.choices[data-type*=select-one] .choices__button:hover{opacity:.7}:is(.dark .choices[data-type*=select-multiple] .choices__button:focus-visible),:is(.dark .choices[data-type*=select-multiple] .choices__button:hover),:is(.dark .choices[data-type*=select-one] .choices__button:focus-visible),:is(.dark .choices[data-type*=select-one] .choices__button:hover){opacity:.6}.choices.is-disabled .choices__button,.choices[data-type*=select-one] .choices__item[data-value=""] .choices__button{display:none}.choices__input{--tw-text-opacity:1;background-color:transparent!important;border-style:none;color:rgba(var(--gray-950),var(--tw-text-opacity));font-size:1rem!important;line-height:1.5rem!important;padding:0!important;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.choices__input::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__input::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__input:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important}.choices__input:disabled{--tw-text-opacity:1;-webkit-text-fill-color:rgba(var(--gray-500),1);color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .choices__input){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .choices__input)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .choices__input)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .choices__input:disabled){--tw-text-opacity:1;-webkit-text-fill-color:rgba(var(--gray-400),1);color:rgba(var(--gray-400),var(--tw-text-opacity))}@media (min-width:640px){.choices__input{font-size:.875rem!important;line-height:1.5rem}}.choices__list--dropdown .choices__input{padding:.5rem!important}.choices__input::-webkit-search-cancel-button,.choices__input::-webkit-search-decoration,.choices__input::-webkit-search-results-button,.choices__input::-webkit-search-results-decoration{display:none}.choices__input::-ms-clear,.choices__input::-ms-reveal{display:none;height:0;width:0}.choices__group{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity));padding:1rem .5rem .5rem}.choices__group:first-child{padding-top:.5rem}:is(.dark .choices__group){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.webkit-calendar-picker-indicator\:opacity-0::-webkit-calendar-picker-indicator{opacity:0}/*! Bundled license information: + +cropperjs/dist/cropper.min.css: + (*! + * Cropper.js v1.6.1 + * https://fengyuanchen.github.io/cropperjs + * + * Copyright 2015-present Chen Fengyuan + * Released under the MIT license + * + * Date: 2023-09-17T03:44:17.565Z + *) + +filepond/dist/filepond.min.css: + (*! + * FilePond 4.30.6 + * Licensed under MIT, https://opensource.org/licenses/MIT/ + * Please visit https://pqina.nl/filepond/ for details. + *) + +filepond-plugin-image-edit/dist/filepond-plugin-image-edit.css: + (*! + * FilePondPluginImageEdit 1.6.3 + * Licensed under MIT, https://opensource.org/licenses/MIT/ + * Please visit https://pqina.nl/filepond/ for details. + *) + +filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css: + (*! + * FilePondPluginImagePreview 4.6.12 + * Licensed under MIT, https://opensource.org/licenses/MIT/ + * Please visit https://pqina.nl/filepond/ for details. + *) + +filepond-plugin-media-preview/dist/filepond-plugin-media-preview.css: + (*! + * FilePondPluginmediaPreview 1.0.11 + * Licensed under MIT, https://opensource.org/licenses/MIT/ + * Please visit undefined for details. + *) + +easymde/dist/easymde.min.css: + (** + * easymde v2.18.0 + * Copyright Jeroen Akkerman + * @link https://github.com/ionaru/easy-markdown-editor + * @license MIT + *) +*/ \ No newline at end of file diff --git a/public/css/filament/support/support.css b/public/css/filament/support/support.css new file mode 100644 index 000000000..a80d070c8 --- /dev/null +++ b/public/css/filament/support/support.css @@ -0,0 +1 @@ +.fi-pagination-items,.fi-pagination-overview,.fi-pagination-records-per-page-select:not(.fi-compact){display:none}@supports (container-type:inline-size){.fi-pagination{container-type:inline-size}@container (min-width: 28rem){.fi-pagination-records-per-page-select.fi-compact{display:none}.fi-pagination-records-per-page-select:not(.fi-compact){display:inline}}@container (min-width: 56rem){.fi-pagination:not(.fi-simple)>.fi-pagination-previous-btn{display:none}.fi-pagination-overview{display:inline}.fi-pagination:not(.fi-simple)>.fi-pagination-next-btn{display:none}.fi-pagination-items{display:flex}}}@supports not (container-type:inline-size){@media (min-width:640px){.fi-pagination-records-per-page-select.fi-compact{display:none}.fi-pagination-records-per-page-select:not(.fi-compact){display:inline}}@media (min-width:768px){.fi-pagination:not(.fi-simple)>.fi-pagination-previous-btn{display:none}.fi-pagination-overview{display:inline}.fi-pagination:not(.fi-simple)>.fi-pagination-next-btn{display:none}.fi-pagination-items{display:flex}}}.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{background-color:#333;border-radius:4px;color:#fff;font-size:14px;line-height:1.4;outline:0;position:relative;transition-property:transform,visibility,opacity;white-space:normal}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{border-top-color:initial;border-width:8px 8px 0;bottom:-7px;left:0;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:initial;border-width:0 8px 8px;left:0;top:-7px;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-left-color:initial;border-width:8px 0 8px 8px;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{border-right-color:initial;border-width:8px 8px 8px 0;left:-7px;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{color:#333;height:16px;width:16px}.tippy-arrow:before{border-color:transparent;border-style:solid;content:"";position:absolute}.tippy-content{padding:5px 9px;position:relative;z-index:1}.tippy-box[data-theme~=light]{background-color:#fff;box-shadow:0 0 20px 4px #9aa1b126,0 4px 80px -8px #24282f40,0 4px 4px -2px #5b5e6926;color:#26323d}.tippy-box[data-theme~=light][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=light][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff}.tippy-box[data-theme~=light][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=light][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff}.tippy-box[data-theme~=light]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=light]>.tippy-svg-arrow{fill:#fff}.fi-sortable-ghost{opacity:.3} \ No newline at end of file diff --git a/public/js/filament/filament/app.js b/public/js/filament/filament/app.js new file mode 100644 index 000000000..1ea8686be --- /dev/null +++ b/public/js/filament/filament/app.js @@ -0,0 +1 @@ +(()=>{var Z=Object.create,L=Object.defineProperty,ee=Object.getPrototypeOf,te=Object.prototype.hasOwnProperty,re=Object.getOwnPropertyNames,ne=Object.getOwnPropertyDescriptor,ae=s=>L(s,"__esModule",{value:!0}),ie=(s,n)=>()=>(n||(n={exports:{}},s(n.exports,n)),n.exports),oe=(s,n,p)=>{if(n&&typeof n=="object"||typeof n=="function")for(let d of re(n))!te.call(s,d)&&d!=="default"&&L(s,d,{get:()=>n[d],enumerable:!(p=ne(n,d))||p.enumerable});return s},se=s=>oe(ae(L(s!=null?Z(ee(s)):{},"default",s&&s.__esModule&&"default"in s?{get:()=>s.default,enumerable:!0}:{value:s,enumerable:!0})),s),fe=ie((s,n)=>{(function(p,d,M){if(!p)return;for(var h={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"ins",46:"del",91:"meta",93:"meta",224:"meta"},y={106:"*",107:"+",109:"-",110:".",111:"/",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},g={"~":"`","!":"1","@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"},q={option:"alt",command:"meta",return:"enter",escape:"esc",plus:"+",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"},S,w=1;w<20;++w)h[111+w]="f"+w;for(w=0;w<=9;++w)h[w+96]=w.toString();function C(e,t,a){if(e.addEventListener){e.addEventListener(t,a,!1);return}e.attachEvent("on"+t,a)}function T(e){if(e.type=="keypress"){var t=String.fromCharCode(e.which);return e.shiftKey||(t=t.toLowerCase()),t}return h[e.which]?h[e.which]:y[e.which]?y[e.which]:String.fromCharCode(e.which).toLowerCase()}function V(e,t){return e.sort().join(",")===t.sort().join(",")}function $(e){var t=[];return e.shiftKey&&t.push("shift"),e.altKey&&t.push("alt"),e.ctrlKey&&t.push("ctrl"),e.metaKey&&t.push("meta"),t}function B(e){if(e.preventDefault){e.preventDefault();return}e.returnValue=!1}function H(e){if(e.stopPropagation){e.stopPropagation();return}e.cancelBubble=!0}function O(e){return e=="shift"||e=="ctrl"||e=="alt"||e=="meta"}function J(){if(!S){S={};for(var e in h)e>95&&e<112||h.hasOwnProperty(e)&&(S[h[e]]=e)}return S}function U(e,t,a){return a||(a=J()[e]?"keydown":"keypress"),a=="keypress"&&t.length&&(a="keydown"),a}function X(e){return e==="+"?["+"]:(e=e.replace(/\+{2}/g,"+plus"),e.split("+"))}function I(e,t){var a,c,b,P=[];for(a=X(e),b=0;b1){z(r,m,o,l);return}f=I(r,l),t._callbacks[f.key]=t._callbacks[f.key]||[],j(f.key,f.modifiers,{type:f.action},i,r,u),t._callbacks[f.key][i?"unshift":"push"]({callback:o,modifiers:f.modifiers,action:f.action,seq:i,level:u,combo:r})}t._bindMultiple=function(r,o,l){for(var i=0;i-1||D(t,a.target))return!1;if("composedPath"in e&&typeof e.composedPath=="function"){var c=e.composedPath()[0];c!==e.target&&(t=c)}return t.tagName=="INPUT"||t.tagName=="SELECT"||t.tagName=="TEXTAREA"||t.isContentEditable},v.prototype.handleKey=function(){var e=this;return e._handleKey.apply(e,arguments)},v.addKeycodes=function(e){for(var t in e)e.hasOwnProperty(t)&&(h[t]=e[t]);S=null},v.init=function(){var e=v(d);for(var t in e)t.charAt(0)!=="_"&&(v[t]=function(a){return function(){return e[a].apply(e,arguments)}}(t))},v.init(),p.Mousetrap=v,typeof n<"u"&&n.exports&&(n.exports=v),typeof define=="function"&&define.amd&&define(function(){return v})})(typeof window<"u"?window:null,typeof window<"u"?document:null)}),R=se(fe());(function(s){if(s){var n={},p=s.prototype.stopCallback;s.prototype.stopCallback=function(d,M,h,y){var g=this;return g.paused?!0:n[h]||n[y]?!1:p.call(g,d,M,h)},s.prototype.bindGlobal=function(d,M,h){var y=this;if(y.bind(d,M,h),d instanceof Array){for(var g=0;g{s.directive("mousetrap",(n,{modifiers:p,expression:d},{evaluate:M})=>{let h=()=>d?M(d):n.click();p=p.map(y=>y.replace("-","+")),p.includes("global")&&(p=p.filter(y=>y!=="global"),R.default.bindGlobal(p,y=>{y.preventDefault(),h()})),R.default.bind(p,y=>{y.preventDefault(),h()})})},F=le;document.addEventListener("alpine:init",()=>{window.Alpine.plugin(F),window.Alpine.store("sidebar",{isOpen:window.Alpine.$persist(!0).as("isOpen"),collapsedGroups:window.Alpine.$persist(null).as("collapsedGroups"),groupIsCollapsed:function(n){return this.collapsedGroups.includes(n)},collapseGroup:function(n){this.collapsedGroups.includes(n)||(this.collapsedGroups=this.collapsedGroups.concat(n))},toggleCollapsedGroup:function(n){this.collapsedGroups=this.collapsedGroups.includes(n)?this.collapsedGroups.filter(p=>p!==n):this.collapsedGroups.concat(n)},close:function(){this.isOpen=!1},open:function(){this.isOpen=!0}});let s=localStorage.getItem("theme")??getComputedStyle(document.documentElement).getPropertyValue("--default-theme-mode");window.Alpine.store("theme",s==="dark"||s==="system"&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),window.addEventListener("theme-changed",n=>{let p=n.detail;localStorage.setItem("theme",p),p==="system"&&(p=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),window.Alpine.store("theme",p)}),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",n=>{localStorage.getItem("theme")==="system"&&window.Alpine.store("theme",n.matches?"dark":"light")}),window.Alpine.effect(()=>{window.Alpine.store("theme")==="dark"?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")})});})(); diff --git a/public/js/filament/filament/echo.js b/public/js/filament/filament/echo.js new file mode 100644 index 000000000..c039aea73 --- /dev/null +++ b/public/js/filament/filament/echo.js @@ -0,0 +1,13 @@ +(()=>{var ki=Object.create;var he=Object.defineProperty;var Si=Object.getOwnPropertyDescriptor;var Ci=Object.getOwnPropertyNames;var Ti=Object.getPrototypeOf,Pi=Object.prototype.hasOwnProperty;var xi=(l,h)=>()=>(h||l((h={exports:{}}).exports,h),h.exports);var Oi=(l,h,a,c)=>{if(h&&typeof h=="object"||typeof h=="function")for(let s of Ci(h))!Pi.call(l,s)&&s!==a&&he(l,s,{get:()=>h[s],enumerable:!(c=Si(h,s))||c.enumerable});return l};var Ai=(l,h,a)=>(a=l!=null?ki(Ti(l)):{},Oi(h||!l||!l.__esModule?he(a,"default",{value:l,enumerable:!0}):a,l));var _e=xi((vt,It)=>{(function(h,a){typeof vt=="object"&&typeof It=="object"?It.exports=a():typeof define=="function"&&define.amd?define([],a):typeof vt=="object"?vt.Pusher=a():h.Pusher=a()})(window,function(){return function(l){var h={};function a(c){if(h[c])return h[c].exports;var s=h[c]={i:c,l:!1,exports:{}};return l[c].call(s.exports,s,s.exports,a),s.l=!0,s.exports}return a.m=l,a.c=h,a.d=function(c,s,f){a.o(c,s)||Object.defineProperty(c,s,{enumerable:!0,get:f})},a.r=function(c){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})},a.t=function(c,s){if(s&1&&(c=a(c)),s&8||s&4&&typeof c=="object"&&c&&c.__esModule)return c;var f=Object.create(null);if(a.r(f),Object.defineProperty(f,"default",{enumerable:!0,value:c}),s&2&&typeof c!="string")for(var d in c)a.d(f,d,function(N){return c[N]}.bind(null,d));return f},a.n=function(c){var s=c&&c.__esModule?function(){return c.default}:function(){return c};return a.d(s,"a",s),s},a.o=function(c,s){return Object.prototype.hasOwnProperty.call(c,s)},a.p="",a(a.s=2)}([function(l,h,a){"use strict";var c=this&&this.__extends||function(){var m=function(v,y){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(w,O){w.__proto__=O}||function(w,O){for(var I in O)O.hasOwnProperty(I)&&(w[I]=O[I])},m(v,y)};return function(v,y){m(v,y);function w(){this.constructor=v}v.prototype=y===null?Object.create(y):(w.prototype=y.prototype,new w)}}();Object.defineProperty(h,"__esModule",{value:!0});var s=256,f=function(){function m(v){v===void 0&&(v="="),this._paddingCharacter=v}return m.prototype.encodedLength=function(v){return this._paddingCharacter?(v+2)/3*4|0:(v*8+5)/6|0},m.prototype.encode=function(v){for(var y="",w=0;w>>3*6&63),y+=this._encodeByte(O>>>2*6&63),y+=this._encodeByte(O>>>1*6&63),y+=this._encodeByte(O>>>0*6&63)}var I=v.length-w;if(I>0){var O=v[w]<<16|(I===2?v[w+1]<<8:0);y+=this._encodeByte(O>>>3*6&63),y+=this._encodeByte(O>>>2*6&63),I===2?y+=this._encodeByte(O>>>1*6&63):y+=this._paddingCharacter||"",y+=this._paddingCharacter||""}return y},m.prototype.maxDecodedLength=function(v){return this._paddingCharacter?v/4*3|0:(v*6+7)/8|0},m.prototype.decodedLength=function(v){return this.maxDecodedLength(v.length-this._getPaddingLength(v))},m.prototype.decode=function(v){if(v.length===0)return new Uint8Array(0);for(var y=this._getPaddingLength(v),w=v.length-y,O=new Uint8Array(this.maxDecodedLength(w)),I=0,q=0,M=0,J=0,F=0,z=0,B=0;q>>4,O[I++]=F<<4|z>>>2,O[I++]=z<<6|B,M|=J&s,M|=F&s,M|=z&s,M|=B&s;if(q>>4,M|=J&s,M|=F&s),q>>2,M|=z&s),q>>8&0-65-26+97,y+=51-v>>>8&26-97-52+48,y+=61-v>>>8&52-48-62+43,y+=62-v>>>8&62-43-63+47,String.fromCharCode(y)},m.prototype._decodeChar=function(v){var y=s;return y+=(42-v&v-44)>>>8&-s+v-43+62,y+=(46-v&v-48)>>>8&-s+v-47+63,y+=(47-v&v-58)>>>8&-s+v-48+52,y+=(64-v&v-91)>>>8&-s+v-65+0,y+=(96-v&v-123)>>>8&-s+v-97+26,y},m.prototype._getPaddingLength=function(v){var y=0;if(this._paddingCharacter){for(var w=v.length-1;w>=0&&v[w]===this._paddingCharacter;w--)y++;if(v.length<4||y>2)throw new Error("Base64Coder: incorrect padding")}return y},m}();h.Coder=f;var d=new f;function N(m){return d.encode(m)}h.encode=N;function P(m){return d.decode(m)}h.decode=P;var T=function(m){c(v,m);function v(){return m!==null&&m.apply(this,arguments)||this}return v.prototype._encodeByte=function(y){var w=y;return w+=65,w+=25-y>>>8&0-65-26+97,w+=51-y>>>8&26-97-52+48,w+=61-y>>>8&52-48-62+45,w+=62-y>>>8&62-45-63+95,String.fromCharCode(w)},v.prototype._decodeChar=function(y){var w=s;return w+=(44-y&y-46)>>>8&-s+y-45+62,w+=(94-y&y-96)>>>8&-s+y-95+63,w+=(47-y&y-58)>>>8&-s+y-48+52,w+=(64-y&y-91)>>>8&-s+y-65+0,w+=(96-y&y-123)>>>8&-s+y-97+26,w},v}(f);h.URLSafeCoder=T;var S=new T;function C(m){return S.encode(m)}h.encodeURLSafe=C;function x(m){return S.decode(m)}h.decodeURLSafe=x,h.encodedLength=function(m){return d.encodedLength(m)},h.maxDecodedLength=function(m){return d.maxDecodedLength(m)},h.decodedLength=function(m){return d.decodedLength(m)}},function(l,h,a){"use strict";Object.defineProperty(h,"__esModule",{value:!0});var c="utf8: invalid string",s="utf8: invalid source encoding";function f(P){for(var T=new Uint8Array(d(P)),S=0,C=0;C>6,T[S++]=128|x&63):x<55296?(T[S++]=224|x>>12,T[S++]=128|x>>6&63,T[S++]=128|x&63):(C++,x=(x&1023)<<10,x|=P.charCodeAt(C)&1023,x+=65536,T[S++]=240|x>>18,T[S++]=128|x>>12&63,T[S++]=128|x>>6&63,T[S++]=128|x&63)}return T}h.encode=f;function d(P){for(var T=0,S=0;S=P.length-1)throw new Error(c);S++,T+=4}else throw new Error(c)}return T}h.encodedLength=d;function N(P){for(var T=[],S=0;S=P.length)throw new Error(s);var m=P[++S];if((m&192)!==128)throw new Error(s);C=(C&31)<<6|m&63,x=128}else if(C<240){if(S>=P.length-1)throw new Error(s);var m=P[++S],v=P[++S];if((m&192)!==128||(v&192)!==128)throw new Error(s);C=(C&15)<<12|(m&63)<<6|v&63,x=2048}else if(C<248){if(S>=P.length-2)throw new Error(s);var m=P[++S],v=P[++S],y=P[++S];if((m&192)!==128||(v&192)!==128||(y&192)!==128)throw new Error(s);C=(C&15)<<18|(m&63)<<12|(v&63)<<6|y&63,x=65536}else throw new Error(s);if(C=55296&&C<=57343)throw new Error(s);if(C>=65536){if(C>1114111)throw new Error(s);C-=65536,T.push(String.fromCharCode(55296|C>>10)),C=56320|C&1023}}T.push(String.fromCharCode(C))}return T.join("")}h.decode=N},function(l,h,a){l.exports=a(3).default},function(l,h,a){"use strict";a.r(h);var c=function(){function e(t,n){this.lastId=0,this.prefix=t,this.name=n}return e.prototype.create=function(t){this.lastId++;var n=this.lastId,r=this.prefix+n,i=this.name+"["+n+"]",o=!1,u=function(){o||(t.apply(null,arguments),o=!0)};return this[n]=u,{number:n,id:r,name:i,callback:u}},e.prototype.remove=function(t){delete this[t.number]},e}(),s=new c("_pusher_script_","Pusher.ScriptReceivers"),f={VERSION:"7.6.0",PROTOCOL:7,wsPort:80,wssPort:443,wsPath:"",httpHost:"sockjs.pusher.com",httpPort:80,httpsPort:443,httpPath:"/pusher",stats_host:"stats.pusher.com",authEndpoint:"/pusher/auth",authTransport:"ajax",activityTimeout:12e4,pongTimeout:3e4,unavailableTimeout:1e4,cluster:"mt1",userAuthentication:{endpoint:"/pusher/user-auth",transport:"ajax"},channelAuthorization:{endpoint:"/pusher/auth",transport:"ajax"},cdn_http:"http://js.pusher.com",cdn_https:"https://js.pusher.com",dependency_suffix:""},d=f,N=function(){function e(t){this.options=t,this.receivers=t.receivers||s,this.loading={}}return e.prototype.load=function(t,n,r){var i=this;if(i.loading[t]&&i.loading[t].length>0)i.loading[t].push(r);else{i.loading[t]=[r];var o=b.createScriptRequest(i.getPath(t,n)),u=i.receivers.create(function(p){if(i.receivers.remove(u),i.loading[t]){var _=i.loading[t];delete i.loading[t];for(var g=function(L){L||o.cleanup()},k=0;k<_.length;k++)_[k](p,g)}});o.send(u)}},e.prototype.getRoot=function(t){var n,r=b.getDocument().location.protocol;return t&&t.useTLS||r==="https:"?n=this.options.cdn_https:n=this.options.cdn_http,n.replace(/\/*$/,"")+"/"+this.options.version},e.prototype.getPath=function(t,n){return this.getRoot(n)+"/"+t+this.options.suffix+".js"},e}(),P=N,T=new c("_pusher_dependencies","Pusher.DependenciesReceivers"),S=new P({cdn_http:d.cdn_http,cdn_https:d.cdn_https,version:d.VERSION,suffix:d.dependency_suffix,receivers:T}),C={baseUrl:"https://pusher.com",urls:{authenticationEndpoint:{path:"/docs/channels/server_api/authenticating_users"},authorizationEndpoint:{path:"/docs/channels/server_api/authorizing-users/"},javascriptQuickStart:{path:"/docs/javascript_quick_start"},triggeringClientEvents:{path:"/docs/client_api_guide/client_events#trigger-events"},encryptedChannelSupport:{fullUrl:"https://github.com/pusher/pusher-js/tree/cc491015371a4bde5743d1c87a0fbac0feb53195#encrypted-channel-support"}}},x=function(e){var t="See:",n=C.urls[e];if(!n)return"";var r;return n.fullUrl?r=n.fullUrl:n.path&&(r=C.baseUrl+n.path),r?t+" "+r:""},m={buildLogSuffix:x},v;(function(e){e.UserAuthentication="user-authentication",e.ChannelAuthorization="channel-authorization"})(v||(v={}));var y=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),w=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),O=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),I=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),q=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),M=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),J=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),F=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),z=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),B=function(e){y(t,e);function t(n,r){var i=this.constructor,o=e.call(this,r)||this;return o.status=n,Object.setPrototypeOf(o,i.prototype),o}return t}(Error),be=function(e,t,n,r,i){var o=b.createXHR();o.open("POST",n.endpoint,!0),o.setRequestHeader("Content-Type","application/x-www-form-urlencoded");for(var u in n.headers)o.setRequestHeader(u,n.headers[u]);if(n.headersProvider!=null){var p=n.headersProvider();for(var u in p)o.setRequestHeader(u,p[u])}return o.onreadystatechange=function(){if(o.readyState===4)if(o.status===200){var _=void 0,g=!1;try{_=JSON.parse(o.responseText),g=!0}catch{i(new B(200,"JSON returned from "+r.toString()+" endpoint was invalid, yet status code was 200. Data was: "+o.responseText),null)}g&&i(null,_)}else{var k="";switch(r){case v.UserAuthentication:k=m.buildLogSuffix("authenticationEndpoint");break;case v.ChannelAuthorization:k="Clients must be authorized to join private or presence channels. "+m.buildLogSuffix("authorizationEndpoint");break}i(new B(o.status,"Unable to retrieve auth string from "+r.toString()+" endpoint - "+("received status: "+o.status+" from "+n.endpoint+". "+k)),null)}},o.send(t),o},we=be;function ke(e){return Oe(Pe(e))}for(var nt=String.fromCharCode,Z="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Se={},at=0,Ce=Z.length;at>>6)+nt(128|t&63):nt(224|t>>>12&15)+nt(128|t>>>6&63)+nt(128|t&63)},Pe=function(e){return e.replace(/[^\x00-\x7F]/g,Te)},xe=function(e){var t=[0,2,1][e.length%3],n=e.charCodeAt(0)<<16|(e.length>1?e.charCodeAt(1):0)<<8|(e.length>2?e.charCodeAt(2):0),r=[Z.charAt(n>>>18),Z.charAt(n>>>12&63),t>=2?"=":Z.charAt(n>>>6&63),t>=1?"=":Z.charAt(n&63)];return r.join("")},Oe=window.btoa||function(e){return e.replace(/[\s\S]{1,3}/g,xe)},Ae=function(){function e(t,n,r,i){var o=this;this.clear=n,this.timer=t(function(){o.timer&&(o.timer=i(o.timer))},r)}return e.prototype.isRunning=function(){return this.timer!==null},e.prototype.ensureAborted=function(){this.timer&&(this.clear(this.timer),this.timer=null)},e}(),jt=Ae,Nt=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();function Le(e){window.clearTimeout(e)}function Ee(e){window.clearInterval(e)}var Q=function(e){Nt(t,e);function t(n,r){return e.call(this,setTimeout,Le,n,function(i){return r(),null})||this}return t}(jt),Re=function(e){Nt(t,e);function t(n,r){return e.call(this,setInterval,Ee,n,function(i){return r(),i})||this}return t}(jt),Ie={now:function(){return Date.now?Date.now():new Date().valueOf()},defer:function(e){return new Q(0,e)},method:function(e){for(var t=[],n=1;n0)for(var i=0;i=1002&&e.code<=1004?"backoff":null:e.code===4e3?"tls_only":e.code<4100?"refused":e.code<4200?"backoff":e.code<4300?"retry":"refused"},getCloseError:function(e){return e.code!==1e3&&e.code!==1001?{type:"PusherError",data:{code:e.code,message:e.reason||e.message}}:null}},K=Vt,kn=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),Sn=function(e){kn(t,e);function t(n,r){var i=e.call(this)||this;return i.id=n,i.transport=r,i.activityTimeout=r.activityTimeout,i.bindListeners(),i}return t.prototype.handlesActivityChecks=function(){return this.transport.handlesActivityChecks()},t.prototype.send=function(n){return this.transport.send(n)},t.prototype.send_event=function(n,r,i){var o={event:n,data:r};return i&&(o.channel=i),A.debug("Event sent",o),this.send(K.encodeMessage(o))},t.prototype.ping=function(){this.transport.supportsPing()?this.transport.ping():this.send_event("pusher:ping",{})},t.prototype.close=function(){this.transport.close()},t.prototype.bindListeners=function(){var n=this,r={message:function(o){var u;try{u=K.decodeMessage(o)}catch(p){n.emit("error",{type:"MessageParseError",error:p,data:o.data})}if(u!==void 0){switch(A.debug("Event recd",u),u.event){case"pusher:error":n.emit("error",{type:"PusherError",data:u.data});break;case"pusher:ping":n.emit("ping");break;case"pusher:pong":n.emit("pong");break}n.emit("message",u)}},activity:function(){n.emit("activity")},error:function(o){n.emit("error",o)},closed:function(o){i(),o&&o.code&&n.handleCloseEvent(o),n.transport=null,n.emit("closed")}},i=function(){W(r,function(o,u){n.transport.unbind(u,o)})};W(r,function(o,u){n.transport.bind(u,o)})},t.prototype.handleCloseEvent=function(n){var r=K.getCloseAction(n),i=K.getCloseError(n);i&&this.emit("error",i),r&&this.emit(r,{action:r,error:i})},t}(V),Cn=Sn,Tn=function(){function e(t,n){this.transport=t,this.callback=n,this.bindListeners()}return e.prototype.close=function(){this.unbindListeners(),this.transport.close()},e.prototype.bindListeners=function(){var t=this;this.onMessage=function(n){t.unbindListeners();var r;try{r=K.processHandshake(n)}catch(i){t.finish("error",{error:i}),t.transport.close();return}r.action==="connected"?t.finish("connected",{connection:new Cn(r.id,t.transport),activityTimeout:r.activityTimeout}):(t.finish(r.action,{error:r.error}),t.transport.close())},this.onClosed=function(n){t.unbindListeners();var r=K.getCloseAction(n)||"backoff",i=K.getCloseError(n);t.finish(r,{error:i})},this.transport.bind("message",this.onMessage),this.transport.bind("closed",this.onClosed)},e.prototype.unbindListeners=function(){this.transport.unbind("message",this.onMessage),this.transport.unbind("closed",this.onClosed)},e.prototype.finish=function(t,n){this.callback(U({transport:this.transport,action:t},n))},e}(),Pn=Tn,xn=function(){function e(t,n){this.timeline=t,this.options=n||{}}return e.prototype.send=function(t,n){this.timeline.isEmpty()||this.timeline.send(b.TimelineTransport.getAgent(this,t),n)},e}(),On=xn,An=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),Ln=function(e){An(t,e);function t(n,r){var i=e.call(this,function(o,u){A.debug("No callbacks on "+n+" for "+o)})||this;return i.name=n,i.pusher=r,i.subscribed=!1,i.subscriptionPending=!1,i.subscriptionCancelled=!1,i}return t.prototype.authorize=function(n,r){return r(null,{auth:""})},t.prototype.trigger=function(n,r){if(n.indexOf("client-")!==0)throw new w("Event '"+n+"' does not start with 'client-'");if(!this.subscribed){var i=m.buildLogSuffix("triggeringClientEvents");A.warn("Client event triggered before channel 'subscription_succeeded' event . "+i)}return this.pusher.send_event(n,r,this.name)},t.prototype.disconnect=function(){this.subscribed=!1,this.subscriptionPending=!1},t.prototype.handleEvent=function(n){var r=n.event,i=n.data;if(r==="pusher_internal:subscription_succeeded")this.handleSubscriptionSucceededEvent(n);else if(r==="pusher_internal:subscription_count")this.handleSubscriptionCountEvent(n);else if(r.indexOf("pusher_internal:")!==0){var o={};this.emit(r,i,o)}},t.prototype.handleSubscriptionSucceededEvent=function(n){this.subscriptionPending=!1,this.subscribed=!0,this.subscriptionCancelled?this.pusher.unsubscribe(this.name):this.emit("pusher:subscription_succeeded",n.data)},t.prototype.handleSubscriptionCountEvent=function(n){n.data.subscription_count&&(this.subscriptionCount=n.data.subscription_count),this.emit("pusher:subscription_count",n.data)},t.prototype.subscribe=function(){var n=this;this.subscribed||(this.subscriptionPending=!0,this.subscriptionCancelled=!1,this.authorize(this.pusher.connection.socket_id,function(r,i){r?(n.subscriptionPending=!1,A.error(r.toString()),n.emit("pusher:subscription_error",Object.assign({},{type:"AuthError",error:r.message},r instanceof B?{status:r.status}:{}))):n.pusher.send_event("pusher:subscribe",{auth:i.auth,channel_data:i.channel_data,channel:n.name})}))},t.prototype.unsubscribe=function(){this.subscribed=!1,this.pusher.send_event("pusher:unsubscribe",{channel:this.name})},t.prototype.cancelSubscription=function(){this.subscriptionCancelled=!0},t.prototype.reinstateSubscription=function(){this.subscriptionCancelled=!1},t}(V),mt=Ln,En=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),Rn=function(e){En(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.authorize=function(n,r){return this.pusher.config.channelAuthorizer({channelName:this.name,socketId:n},r)},t}(mt),bt=Rn,In=function(){function e(){this.reset()}return e.prototype.get=function(t){return Object.prototype.hasOwnProperty.call(this.members,t)?{id:t,info:this.members[t]}:null},e.prototype.each=function(t){var n=this;W(this.members,function(r,i){t(n.get(i))})},e.prototype.setMyID=function(t){this.myID=t},e.prototype.onSubscription=function(t){this.members=t.presence.hash,this.count=t.presence.count,this.me=this.get(this.myID)},e.prototype.addMember=function(t){return this.get(t.user_id)===null&&this.count++,this.members[t.user_id]=t.user_info,this.get(t.user_id)},e.prototype.removeMember=function(t){var n=this.get(t.user_id);return n&&(delete this.members[t.user_id],this.count--),n},e.prototype.reset=function(){this.members={},this.count=0,this.myID=null,this.me=null},e}(),jn=In,Nn=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),qn=function(e,t,n,r){function i(o){return o instanceof n?o:new n(function(u){u(o)})}return new(n||(n=Promise))(function(o,u){function p(k){try{g(r.next(k))}catch(L){u(L)}}function _(k){try{g(r.throw(k))}catch(L){u(L)}}function g(k){k.done?o(k.value):i(k.value).then(p,_)}g((r=r.apply(e,t||[])).next())})},Un=function(e,t){var n={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},r,i,o,u;return u={next:p(0),throw:p(1),return:p(2)},typeof Symbol=="function"&&(u[Symbol.iterator]=function(){return this}),u;function p(g){return function(k){return _([g,k])}}function _(g){if(r)throw new TypeError("Generator is already executing.");for(;n;)try{if(r=1,i&&(o=g[0]&2?i.return:g[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,g[1])).done)return o;switch(i=0,o&&(g=[g[0]&2,o.value]),g[0]){case 0:case 1:o=g;break;case 4:return n.label++,{value:g[1],done:!1};case 5:n.label++,i=g[1],g=[0];continue;case 7:g=n.ops.pop(),n.trys.pop();continue;default:if(o=n.trys,!(o=o.length>0&&o[o.length-1])&&(g[0]===6||g[0]===2)){n=0;continue}if(g[0]===3&&(!o||g[1]>o[0]&&g[1]0&&this.emit("connecting_in",Math.round(n/1e3)),this.retryTimer=new Q(n||0,function(){r.disconnectInternally(),r.connect()})},t.prototype.clearRetryTimer=function(){this.retryTimer&&(this.retryTimer.ensureAborted(),this.retryTimer=null)},t.prototype.setUnavailableTimer=function(){var n=this;this.unavailableTimer=new Q(this.options.unavailableTimeout,function(){n.updateState("unavailable")})},t.prototype.clearUnavailableTimer=function(){this.unavailableTimer&&this.unavailableTimer.ensureAborted()},t.prototype.sendActivityCheck=function(){var n=this;this.stopActivityCheck(),this.connection.ping(),this.activityTimer=new Q(this.options.pongTimeout,function(){n.timeline.error({pong_timed_out:n.options.pongTimeout}),n.retryIn(0)})},t.prototype.resetActivityCheck=function(){var n=this;this.stopActivityCheck(),this.connection&&!this.connection.handlesActivityChecks()&&(this.activityTimer=new Q(this.activityTimeout,function(){n.sendActivityCheck()}))},t.prototype.stopActivityCheck=function(){this.activityTimer&&this.activityTimer.ensureAborted()},t.prototype.buildConnectionCallbacks=function(n){var r=this;return U({},n,{message:function(i){r.resetActivityCheck(),r.emit("message",i)},ping:function(){r.send_event("pusher:pong",{})},activity:function(){r.resetActivityCheck()},error:function(i){r.emit("error",i)},closed:function(){r.abandonConnection(),r.shouldRetry()&&r.retryIn(1e3)}})},t.prototype.buildHandshakeCallbacks=function(n){var r=this;return U({},n,{connected:function(i){r.activityTimeout=Math.min(r.options.activityTimeout,i.activityTimeout,i.connection.activityTimeout||1/0),r.clearUnavailableTimer(),r.setConnection(i.connection),r.socket_id=r.connection.id,r.updateState("connected",{socket_id:r.socket_id})}})},t.prototype.buildErrorCallbacks=function(){var n=this,r=function(i){return function(o){o.error&&n.emit("error",{type:"WebSocketError",error:o.error}),i(o)}};return{tls_only:r(function(){n.usingTLS=!0,n.updateStrategy(),n.retryIn(0)}),refused:r(function(){n.disconnect()}),backoff:r(function(){n.retryIn(1e3)}),retry:r(function(){n.retryIn(0)})}},t.prototype.setConnection=function(n){this.connection=n;for(var r in this.connectionCallbacks)this.connection.bind(r,this.connectionCallbacks[r]);this.resetActivityCheck()},t.prototype.abandonConnection=function(){if(this.connection){this.stopActivityCheck();for(var n in this.connectionCallbacks)this.connection.unbind(n,this.connectionCallbacks[n]);var r=this.connection;return this.connection=null,r}},t.prototype.updateState=function(n,r){var i=this.state;if(this.state=n,i!==n){var o=n;o==="connected"&&(o+=" with new socket ID "+r.socket_id),A.debug("State changed",i+" -> "+o),this.timeline.info({state:n,params:r}),this.emit("state_change",{previous:i,current:n}),this.emit(n,r)}},t.prototype.shouldRetry=function(){return this.state==="connecting"||this.state==="connected"},t}(V),Wn=Jn,Vn=function(){function e(){this.channels={}}return e.prototype.add=function(t,n){return this.channels[t]||(this.channels[t]=Qn(t,n)),this.channels[t]},e.prototype.all=function(){return Ne(this.channels)},e.prototype.find=function(t){return this.channels[t]},e.prototype.remove=function(t){var n=this.channels[t];return delete this.channels[t],n},e.prototype.disconnect=function(){W(this.channels,function(t){t.disconnect()})},e}(),Gn=Vn;function Qn(e,t){if(e.indexOf("private-encrypted-")===0){if(t.config.nacl)return G.createEncryptedChannel(e,t,t.config.nacl);var n="Tried to subscribe to a private-encrypted- channel but no nacl implementation available",r=m.buildLogSuffix("encryptedChannelSupport");throw new J(n+". "+r)}else{if(e.indexOf("private-")===0)return G.createPrivateChannel(e,t);if(e.indexOf("presence-")===0)return G.createPresenceChannel(e,t);if(e.indexOf("#")===0)throw new O('Cannot create a channel with name "'+e+'".');return G.createChannel(e,t)}}var Kn={createChannels:function(){return new Gn},createConnectionManager:function(e,t){return new Wn(e,t)},createChannel:function(e,t){return new mt(e,t)},createPrivateChannel:function(e,t){return new bt(e,t)},createPresenceChannel:function(e,t){return new Hn(e,t)},createEncryptedChannel:function(e,t,n){return new Bn(e,t,n)},createTimelineSender:function(e,t){return new On(e,t)},createHandshake:function(e,t){return new Pn(e,t)},createAssistantToTheTransportManager:function(e,t,n){return new wn(e,t,n)}},G=Kn,Yn=function(){function e(t){this.options=t||{},this.livesLeft=this.options.lives||1/0}return e.prototype.getAssistant=function(t){return G.createAssistantToTheTransportManager(this,t,{minPingDelay:this.options.minPingDelay,maxPingDelay:this.options.maxPingDelay})},e.prototype.isAlive=function(){return this.livesLeft>0},e.prototype.reportDeath=function(){this.livesLeft-=1},e}(),Gt=Yn,$n=function(){function e(t,n){this.strategies=t,this.loop=!!n.loop,this.failFast=!!n.failFast,this.timeout=n.timeout,this.timeoutLimit=n.timeoutLimit}return e.prototype.isSupported=function(){return zt(this.strategies,j.method("isSupported"))},e.prototype.connect=function(t,n){var r=this,i=this.strategies,o=0,u=this.timeout,p=null,_=function(g,k){k?n(null,k):(o=o+1,r.loop&&(o=o%i.length),o0&&(o=new Q(r.timeout,function(){u.abort(),i(!0)})),u=t.connect(n,function(p,_){p&&o&&o.isRunning()&&!r.failFast||(o&&o.ensureAborted(),i(p,_))}),{abort:function(){o&&o.ensureAborted(),u.abort()},forceMinPriority:function(p){u.forceMinPriority(p)}}},e}(),Y=$n,Zn=function(){function e(t){this.strategies=t}return e.prototype.isSupported=function(){return zt(this.strategies,j.method("isSupported"))},e.prototype.connect=function(t,n){return tr(this.strategies,t,function(r,i){return function(o,u){if(i[r].error=o,o){er(i)&&n(!0);return}rt(i,function(p){p.forceMinPriority(u.transport.priority)}),n(null,u)}})},e}(),kt=Zn;function tr(e,t,n){var r=Dt(e,function(i,o,u,p){return i.connect(t,n(o,p))});return{abort:function(){rt(r,nr)},forceMinPriority:function(i){rt(r,function(o){o.forceMinPriority(i)})}}}function er(e){return De(e,function(t){return!!t.error})}function nr(e){!e.error&&!e.aborted&&(e.abort(),e.aborted=!0)}var rr=function(){function e(t,n,r){this.strategy=t,this.transports=n,this.ttl=r.ttl||1800*1e3,this.usingTLS=r.useTLS,this.timeline=r.timeline}return e.prototype.isSupported=function(){return this.strategy.isSupported()},e.prototype.connect=function(t,n){var r=this.usingTLS,i=or(r),o=[this.strategy];if(i&&i.timestamp+this.ttl>=j.now()){var u=this.transports[i.transport];u&&(this.timeline.info({cached:!0,transport:i.transport,latency:i.latency}),o.push(new Y([u],{timeout:i.latency*2+1e3,failFast:!0})))}var p=j.now(),_=o.pop().connect(t,function g(k,L){k?(Qt(r),o.length>0?(p=j.now(),_=o.pop().connect(t,g)):n(k)):(sr(r,L.transport.name,j.now()-p),n(null,L))});return{abort:function(){_.abort()},forceMinPriority:function(g){t=g,_&&_.forceMinPriority(g)}}},e}(),ir=rr;function St(e){return"pusherTransport"+(e?"TLS":"NonTLS")}function or(e){var t=b.getLocalStorage();if(t)try{var n=t[St(e)];if(n)return JSON.parse(n)}catch{Qt(e)}return null}function sr(e,t,n){var r=b.getLocalStorage();if(r)try{r[St(e)]=ct({timestamp:j.now(),transport:t,latency:n})}catch{}}function Qt(e){var t=b.getLocalStorage();if(t)try{delete t[St(e)]}catch{}}var ar=function(){function e(t,n){var r=n.delay;this.strategy=t,this.options={delay:r}}return e.prototype.isSupported=function(){return this.strategy.isSupported()},e.prototype.connect=function(t,n){var r=this.strategy,i,o=new Q(this.options.delay,function(){i=r.connect(t,n)});return{abort:function(){o.ensureAborted(),i&&i.abort()},forceMinPriority:function(u){t=u,i&&i.forceMinPriority(u)}}},e}(),ht=ar,cr=function(){function e(t,n,r){this.test=t,this.trueBranch=n,this.falseBranch=r}return e.prototype.isSupported=function(){var t=this.test()?this.trueBranch:this.falseBranch;return t.isSupported()},e.prototype.connect=function(t,n){var r=this.test()?this.trueBranch:this.falseBranch;return r.connect(t,n)},e}(),it=cr,ur=function(){function e(t){this.strategy=t}return e.prototype.isSupported=function(){return this.strategy.isSupported()},e.prototype.connect=function(t,n){var r=this.strategy.connect(t,function(i,o){o&&r.abort(),n(i,o)});return r},e}(),hr=ur;function ot(e){return function(){return e.isSupported()}}var lr=function(e,t,n){var r={};function i(ce,_i,mi,bi,wi){var ue=n(e,ce,_i,mi,bi,wi);return r[ce]=ue,ue}var o=Object.assign({},t,{hostNonTLS:e.wsHost+":"+e.wsPort,hostTLS:e.wsHost+":"+e.wssPort,httpPath:e.wsPath}),u=Object.assign({},o,{useTLS:!0}),p=Object.assign({},t,{hostNonTLS:e.httpHost+":"+e.httpPort,hostTLS:e.httpHost+":"+e.httpsPort,httpPath:e.httpPath}),_={loop:!0,timeout:15e3,timeoutLimit:6e4},g=new Gt({lives:2,minPingDelay:1e4,maxPingDelay:e.activityTimeout}),k=new Gt({lives:2,minPingDelay:1e4,maxPingDelay:e.activityTimeout}),L=i("ws","ws",3,o,g),X=i("wss","ws",3,u,g),pi=i("sockjs","sockjs",1,p),ne=i("xhr_streaming","xhr_streaming",1,p,k),di=i("xdr_streaming","xdr_streaming",1,p,k),re=i("xhr_polling","xhr_polling",1,p),vi=i("xdr_polling","xdr_polling",1,p),ie=new Y([L],_),yi=new Y([X],_),gi=new Y([pi],_),oe=new Y([new it(ot(ne),ne,di)],_),se=new Y([new it(ot(re),re,vi)],_),ae=new Y([new it(ot(oe),new kt([oe,new ht(se,{delay:4e3})]),se)],_),xt=new it(ot(ae),ae,gi),Ot;return t.useTLS?Ot=new kt([ie,new ht(xt,{delay:2e3})]):Ot=new kt([ie,new ht(yi,{delay:2e3}),new ht(xt,{delay:5e3})]),new ir(new hr(new it(ot(L),Ot,xt)),r,{ttl:18e5,timeline:t.timeline,useTLS:t.useTLS})},fr=lr,pr=function(){var e=this;e.timeline.info(e.buildTimelineMessage({transport:e.name+(e.options.useTLS?"s":"")})),e.hooks.isInitialized()?e.changeState("initialized"):e.hooks.file?(e.changeState("initializing"),S.load(e.hooks.file,{useTLS:e.options.useTLS},function(t,n){e.hooks.isInitialized()?(e.changeState("initialized"),n(!0)):(t&&e.onError(t),e.onClose(),n(!1))})):e.onClose()},dr={getRequest:function(e){var t=new window.XDomainRequest;return t.ontimeout=function(){e.emit("error",new I),e.close()},t.onerror=function(n){e.emit("error",n),e.close()},t.onprogress=function(){t.responseText&&t.responseText.length>0&&e.onChunk(200,t.responseText)},t.onload=function(){t.responseText&&t.responseText.length>0&&e.onChunk(200,t.responseText),e.emit("finished",200),e.close()},t},abortRequest:function(e){e.ontimeout=e.onerror=e.onprogress=e.onload=null,e.abort()}},vr=dr,yr=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),gr=256*1024,_r=function(e){yr(t,e);function t(n,r,i){var o=e.call(this)||this;return o.hooks=n,o.method=r,o.url=i,o}return t.prototype.start=function(n){var r=this;this.position=0,this.xhr=this.hooks.getRequest(this),this.unloader=function(){r.close()},b.addUnloadListener(this.unloader),this.xhr.open(this.method,this.url,!0),this.xhr.setRequestHeader&&this.xhr.setRequestHeader("Content-Type","application/json"),this.xhr.send(n)},t.prototype.close=function(){this.unloader&&(b.removeUnloadListener(this.unloader),this.unloader=null),this.xhr&&(this.hooks.abortRequest(this.xhr),this.xhr=null)},t.prototype.onChunk=function(n,r){for(;;){var i=this.advanceBuffer(r);if(i)this.emit("chunk",{status:n,data:i});else break}this.isBufferTooLong(r)&&this.emit("buffer_too_long")},t.prototype.advanceBuffer=function(n){var r=n.slice(this.position),i=r.indexOf(` +`);return i!==-1?(this.position+=i+1,r.slice(0,i)):null},t.prototype.isBufferTooLong=function(n){return this.position===n.length&&n.length>gr},t}(V),mr=_r,Ct;(function(e){e[e.CONNECTING=0]="CONNECTING",e[e.OPEN=1]="OPEN",e[e.CLOSED=3]="CLOSED"})(Ct||(Ct={}));var $=Ct,br=1,wr=function(){function e(t,n){this.hooks=t,this.session=Yt(1e3)+"/"+Tr(8),this.location=kr(n),this.readyState=$.CONNECTING,this.openStream()}return e.prototype.send=function(t){return this.sendRaw(JSON.stringify([t]))},e.prototype.ping=function(){this.hooks.sendHeartbeat(this)},e.prototype.close=function(t,n){this.onClose(t,n,!0)},e.prototype.sendRaw=function(t){if(this.readyState===$.OPEN)try{return b.createSocketRequest("POST",Kt(Sr(this.location,this.session))).start(t),!0}catch{return!1}else return!1},e.prototype.reconnect=function(){this.closeStream(),this.openStream()},e.prototype.onClose=function(t,n,r){this.closeStream(),this.readyState=$.CLOSED,this.onclose&&this.onclose({code:t,reason:n,wasClean:r})},e.prototype.onChunk=function(t){if(t.status===200){this.readyState===$.OPEN&&this.onActivity();var n,r=t.data.slice(0,1);switch(r){case"o":n=JSON.parse(t.data.slice(1)||"{}"),this.onOpen(n);break;case"a":n=JSON.parse(t.data.slice(1)||"[]");for(var i=0;i0&&e.onChunk(n.status,n.responseText);break;case 4:n.responseText&&n.responseText.length>0&&e.onChunk(n.status,n.responseText),e.emit("finished",n.status),e.close();break}},n},abortRequest:function(e){e.onreadystatechange=null,e.abort()}},Rr=Er,Ir={createStreamingSocket:function(e){return this.createSocket(Or,e)},createPollingSocket:function(e){return this.createSocket(Lr,e)},createSocket:function(e,t){return new Pr(e,t)},createXHR:function(e,t){return this.createRequest(Rr,e,t)},createRequest:function(e,t,n){return new mr(e,t,n)}},$t=Ir;$t.createXDR=function(e,t){return this.createRequest(vr,e,t)};var jr=$t,Nr={nextAuthCallbackID:1,auth_callbacks:{},ScriptReceivers:s,DependenciesReceivers:T,getDefaultStrategy:fr,Transports:yn,transportConnectionInitializer:pr,HTTPFactory:jr,TimelineTransport:Ye,getXHRAPI:function(){return window.XMLHttpRequest},getWebSocketAPI:function(){return window.WebSocket||window.MozWebSocket},setup:function(e){var t=this;window.Pusher=e;var n=function(){t.onDocumentBody(e.ready)};window.JSON?n():S.load("json2",{},n)},getDocument:function(){return document},getProtocol:function(){return this.getDocument().location.protocol},getAuthorizers:function(){return{ajax:we,jsonp:Xe}},onDocumentBody:function(e){var t=this;document.body?e():setTimeout(function(){t.onDocumentBody(e)},0)},createJSONPRequest:function(e,t){return new Ge(e,t)},createScriptRequest:function(e){return new We(e)},getLocalStorage:function(){try{return window.localStorage}catch{return}},createXHR:function(){return this.getXHRAPI()?this.createXMLHttpRequest():this.createMicrosoftXHR()},createXMLHttpRequest:function(){var e=this.getXHRAPI();return new e},createMicrosoftXHR:function(){return new ActiveXObject("Microsoft.XMLHTTP")},getNetwork:function(){return mn},createWebSocket:function(e){var t=this.getWebSocketAPI();return new t(e)},createSocketRequest:function(e,t){if(this.isXHRSupported())return this.HTTPFactory.createXHR(e,t);if(this.isXDRSupported(t.indexOf("https:")===0))return this.HTTPFactory.createXDR(e,t);throw"Cross-origin HTTP requests are not supported"},isXHRSupported:function(){var e=this.getXHRAPI();return!!e&&new e().withCredentials!==void 0},isXDRSupported:function(e){var t=e?"https:":"http:",n=this.getProtocol();return!!window.XDomainRequest&&n===t},addUnloadListener:function(e){window.addEventListener!==void 0?window.addEventListener("unload",e,!1):window.attachEvent!==void 0&&window.attachEvent("onunload",e)},removeUnloadListener:function(e){window.addEventListener!==void 0?window.removeEventListener("unload",e,!1):window.detachEvent!==void 0&&window.detachEvent("onunload",e)},randomInt:function(e){var t=function(){var n=window.crypto||window.msCrypto,r=n.getRandomValues(new Uint32Array(1))[0];return r/Math.pow(2,32)};return Math.floor(t()*e)}},b=Nr,Tt;(function(e){e[e.ERROR=3]="ERROR",e[e.INFO=6]="INFO",e[e.DEBUG=7]="DEBUG"})(Tt||(Tt={}));var lt=Tt,qr=function(){function e(t,n,r){this.key=t,this.session=n,this.events=[],this.options=r||{},this.sent=0,this.uniqueID=0}return e.prototype.log=function(t,n){t<=this.options.level&&(this.events.push(U({},n,{timestamp:j.now()})),this.options.limit&&this.events.length>this.options.limit&&this.events.shift())},e.prototype.error=function(t){this.log(lt.ERROR,t)},e.prototype.info=function(t){this.log(lt.INFO,t)},e.prototype.debug=function(t){this.log(lt.DEBUG,t)},e.prototype.isEmpty=function(){return this.events.length===0},e.prototype.send=function(t,n){var r=this,i=U({session:this.session,bundle:this.sent+1,key:this.key,lib:"js",version:this.options.version,cluster:this.options.cluster,features:this.options.features,timeline:this.events},this.options.params);return this.events=[],t(i,function(o,u){o||r.sent++,n&&n(o,u)}),!0},e.prototype.generateUniqueID=function(){return this.uniqueID++,this.uniqueID},e}(),Ur=qr,Dr=function(){function e(t,n,r,i){this.name=t,this.priority=n,this.transport=r,this.options=i||{}}return e.prototype.isSupported=function(){return this.transport.isSupported({useTLS:this.options.useTLS})},e.prototype.connect=function(t,n){var r=this;if(this.isSupported()){if(this.priority"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Ei(l){if(l===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return l}function Ri(l,h){if(h&&(typeof h=="object"||typeof h=="function"))return h;if(h!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Ei(l)}function H(l){var h=Li();return function(){var c=ft(l),s;if(h){var f=ft(this).constructor;s=Reflect.construct(c,arguments,f)}else s=c.apply(this,arguments);return Ri(this,s)}}var Et=function(){function l(){E(this,l)}return R(l,[{key:"listenForWhisper",value:function(a,c){return this.listen(".client-"+a,c)}},{key:"notification",value:function(a){return this.listen(".Illuminate\\Notifications\\Events\\BroadcastNotificationCreated",a)}},{key:"stopListeningForWhisper",value:function(a,c){return this.stopListening(".client-"+a,c)}}]),l}(),de=function(){function l(h){E(this,l),this.namespace=h}return R(l,[{key:"format",value:function(a){return a.charAt(0)==="."||a.charAt(0)==="\\"?a.substr(1):(this.namespace&&(a=this.namespace+"."+a),a.replace(/\./g,"\\"))}},{key:"setNamespace",value:function(a){this.namespace=a}}]),l}(),dt=function(l){D(a,l);var h=H(a);function a(c,s,f){var d;return E(this,a),d=h.call(this),d.name=s,d.pusher=c,d.options=f,d.eventFormatter=new de(d.options.namespace),d.subscribe(),d}return R(a,[{key:"subscribe",value:function(){this.subscription=this.pusher.subscribe(this.name)}},{key:"unsubscribe",value:function(){this.pusher.unsubscribe(this.name)}},{key:"listen",value:function(s,f){return this.on(this.eventFormatter.format(s),f),this}},{key:"listenToAll",value:function(s){var f=this;return this.subscription.bind_global(function(d,N){if(!d.startsWith("pusher:")){var P=f.options.namespace.replace(/\./g,"\\"),T=d.startsWith(P)?d.substring(P.length+1):"."+d;s(T,N)}}),this}},{key:"stopListening",value:function(s,f){return f?this.subscription.unbind(this.eventFormatter.format(s),f):this.subscription.unbind(this.eventFormatter.format(s)),this}},{key:"stopListeningToAll",value:function(s){return s?this.subscription.unbind_global(s):this.subscription.unbind_global(),this}},{key:"subscribed",value:function(s){return this.on("pusher:subscription_succeeded",function(){s()}),this}},{key:"error",value:function(s){return this.on("pusher:subscription_error",function(f){s(f)}),this}},{key:"on",value:function(s,f){return this.subscription.bind(s,f),this}}]),a}(Et),Ii=function(l){D(a,l);var h=H(a);function a(){return E(this,a),h.apply(this,arguments)}return R(a,[{key:"whisper",value:function(s,f){return this.pusher.channels.channels[this.name].trigger("client-".concat(s),f),this}}]),a}(dt),ji=function(l){D(a,l);var h=H(a);function a(){return E(this,a),h.apply(this,arguments)}return R(a,[{key:"whisper",value:function(s,f){return this.pusher.channels.channels[this.name].trigger("client-".concat(s),f),this}}]),a}(dt),Ni=function(l){D(a,l);var h=H(a);function a(){return E(this,a),h.apply(this,arguments)}return R(a,[{key:"here",value:function(s){return this.on("pusher:subscription_succeeded",function(f){s(Object.keys(f.members).map(function(d){return f.members[d]}))}),this}},{key:"joining",value:function(s){return this.on("pusher:member_added",function(f){s(f.info)}),this}},{key:"whisper",value:function(s,f){return this.pusher.channels.channels[this.name].trigger("client-".concat(s),f),this}},{key:"leaving",value:function(s){return this.on("pusher:member_removed",function(f){s(f.info)}),this}}]),a}(dt),ve=function(l){D(a,l);var h=H(a);function a(c,s,f){var d;return E(this,a),d=h.call(this),d.events={},d.listeners={},d.name=s,d.socket=c,d.options=f,d.eventFormatter=new de(d.options.namespace),d.subscribe(),d}return R(a,[{key:"subscribe",value:function(){this.socket.emit("subscribe",{channel:this.name,auth:this.options.auth||{}})}},{key:"unsubscribe",value:function(){this.unbind(),this.socket.emit("unsubscribe",{channel:this.name,auth:this.options.auth||{}})}},{key:"listen",value:function(s,f){return this.on(this.eventFormatter.format(s),f),this}},{key:"stopListening",value:function(s,f){return this.unbindEvent(this.eventFormatter.format(s),f),this}},{key:"subscribed",value:function(s){return this.on("connect",function(f){s(f)}),this}},{key:"error",value:function(s){return this}},{key:"on",value:function(s,f){var d=this;return this.listeners[s]=this.listeners[s]||[],this.events[s]||(this.events[s]=function(N,P){d.name===N&&d.listeners[s]&&d.listeners[s].forEach(function(T){return T(P)})},this.socket.on(s,this.events[s])),this.listeners[s].push(f),this}},{key:"unbind",value:function(){var s=this;Object.keys(this.events).forEach(function(f){s.unbindEvent(f)})}},{key:"unbindEvent",value:function(s,f){this.listeners[s]=this.listeners[s]||[],f&&(this.listeners[s]=this.listeners[s].filter(function(d){return d!==f})),(!f||this.listeners[s].length===0)&&(this.events[s]&&(this.socket.removeListener(s,this.events[s]),delete this.events[s]),delete this.listeners[s])}}]),a}(Et),ye=function(l){D(a,l);var h=H(a);function a(){return E(this,a),h.apply(this,arguments)}return R(a,[{key:"whisper",value:function(s,f){return this.socket.emit("client event",{channel:this.name,event:"client-".concat(s),data:f}),this}}]),a}(ve),qi=function(l){D(a,l);var h=H(a);function a(){return E(this,a),h.apply(this,arguments)}return R(a,[{key:"here",value:function(s){return this.on("presence:subscribed",function(f){s(f.map(function(d){return d.user_info}))}),this}},{key:"joining",value:function(s){return this.on("presence:joining",function(f){return s(f.user_info)}),this}},{key:"whisper",value:function(s,f){return this.socket.emit("client event",{channel:this.name,event:"client-".concat(s),data:f}),this}},{key:"leaving",value:function(s){return this.on("presence:leaving",function(f){return s(f.user_info)}),this}}]),a}(ye),pt=function(l){D(a,l);var h=H(a);function a(){return E(this,a),h.apply(this,arguments)}return R(a,[{key:"subscribe",value:function(){}},{key:"unsubscribe",value:function(){}},{key:"listen",value:function(s,f){return this}},{key:"listenToAll",value:function(s){return this}},{key:"stopListening",value:function(s,f){return this}},{key:"subscribed",value:function(s){return this}},{key:"error",value:function(s){return this}},{key:"on",value:function(s,f){return this}}]),a}(Et),fe=function(l){D(a,l);var h=H(a);function a(){return E(this,a),h.apply(this,arguments)}return R(a,[{key:"whisper",value:function(s,f){return this}}]),a}(pt),Ui=function(l){D(a,l);var h=H(a);function a(){return E(this,a),h.apply(this,arguments)}return R(a,[{key:"here",value:function(s){return this}},{key:"joining",value:function(s){return this}},{key:"whisper",value:function(s,f){return this}},{key:"leaving",value:function(s){return this}}]),a}(pt),Rt=function(){function l(h){E(this,l),this._defaultOptions={auth:{headers:{}},authEndpoint:"/broadcasting/auth",userAuthentication:{endpoint:"/broadcasting/user-auth",headers:{}},broadcaster:"pusher",csrfToken:null,bearerToken:null,host:null,key:null,namespace:"App.Events"},this.setOptions(h),this.connect()}return R(l,[{key:"setOptions",value:function(a){this.options=st(this._defaultOptions,a);var c=this.csrfToken();return c&&(this.options.auth.headers["X-CSRF-TOKEN"]=c,this.options.userAuthentication.headers["X-CSRF-TOKEN"]=c),c=this.options.bearerToken,c&&(this.options.auth.headers.Authorization="Bearer "+c,this.options.userAuthentication.headers.Authorization="Bearer "+c),a}},{key:"csrfToken",value:function(){var a;return typeof window<"u"&&window.Laravel&&window.Laravel.csrfToken?window.Laravel.csrfToken:this.options.csrfToken?this.options.csrfToken:typeof document<"u"&&typeof document.querySelector=="function"&&(a=document.querySelector('meta[name="csrf-token"]'))?a.getAttribute("content"):null}}]),l}(),pe=function(l){D(a,l);var h=H(a);function a(){var c;return E(this,a),c=h.apply(this,arguments),c.channels={},c}return R(a,[{key:"connect",value:function(){typeof this.options.client<"u"?this.pusher=this.options.client:this.options.Pusher?this.pusher=new this.options.Pusher(this.options.key,this.options):this.pusher=new Pusher(this.options.key,this.options)}},{key:"signin",value:function(){this.pusher.signin()}},{key:"listen",value:function(s,f,d){return this.channel(s).listen(f,d)}},{key:"channel",value:function(s){return this.channels[s]||(this.channels[s]=new dt(this.pusher,s,this.options)),this.channels[s]}},{key:"privateChannel",value:function(s){return this.channels["private-"+s]||(this.channels["private-"+s]=new Ii(this.pusher,"private-"+s,this.options)),this.channels["private-"+s]}},{key:"encryptedPrivateChannel",value:function(s){return this.channels["private-encrypted-"+s]||(this.channels["private-encrypted-"+s]=new ji(this.pusher,"private-encrypted-"+s,this.options)),this.channels["private-encrypted-"+s]}},{key:"presenceChannel",value:function(s){return this.channels["presence-"+s]||(this.channels["presence-"+s]=new Ni(this.pusher,"presence-"+s,this.options)),this.channels["presence-"+s]}},{key:"leave",value:function(s){var f=this,d=[s,"private-"+s,"private-encrypted-"+s,"presence-"+s];d.forEach(function(N,P){f.leaveChannel(N)})}},{key:"leaveChannel",value:function(s){this.channels[s]&&(this.channels[s].unsubscribe(),delete this.channels[s])}},{key:"socketId",value:function(){return this.pusher.connection.socket_id}},{key:"disconnect",value:function(){this.pusher.disconnect()}}]),a}(Rt),Di=function(l){D(a,l);var h=H(a);function a(){var c;return E(this,a),c=h.apply(this,arguments),c.channels={},c}return R(a,[{key:"connect",value:function(){var s=this,f=this.getSocketIO();return this.socket=f(this.options.host,this.options),this.socket.on("reconnect",function(){Object.values(s.channels).forEach(function(d){d.subscribe()})}),this.socket}},{key:"getSocketIO",value:function(){if(typeof this.options.client<"u")return this.options.client;if(typeof io<"u")return io;throw new Error("Socket.io client not found. Should be globally available or passed via options.client")}},{key:"listen",value:function(s,f,d){return this.channel(s).listen(f,d)}},{key:"channel",value:function(s){return this.channels[s]||(this.channels[s]=new ve(this.socket,s,this.options)),this.channels[s]}},{key:"privateChannel",value:function(s){return this.channels["private-"+s]||(this.channels["private-"+s]=new ye(this.socket,"private-"+s,this.options)),this.channels["private-"+s]}},{key:"presenceChannel",value:function(s){return this.channels["presence-"+s]||(this.channels["presence-"+s]=new qi(this.socket,"presence-"+s,this.options)),this.channels["presence-"+s]}},{key:"leave",value:function(s){var f=this,d=[s,"private-"+s,"presence-"+s];d.forEach(function(N){f.leaveChannel(N)})}},{key:"leaveChannel",value:function(s){this.channels[s]&&(this.channels[s].unsubscribe(),delete this.channels[s])}},{key:"socketId",value:function(){return this.socket.id}},{key:"disconnect",value:function(){this.socket.disconnect()}}]),a}(Rt),Hi=function(l){D(a,l);var h=H(a);function a(){var c;return E(this,a),c=h.apply(this,arguments),c.channels={},c}return R(a,[{key:"connect",value:function(){}},{key:"listen",value:function(s,f,d){return new pt}},{key:"channel",value:function(s){return new pt}},{key:"privateChannel",value:function(s){return new fe}},{key:"encryptedPrivateChannel",value:function(s){return new fe}},{key:"presenceChannel",value:function(s){return new Ui}},{key:"leave",value:function(s){}},{key:"leaveChannel",value:function(s){}},{key:"socketId",value:function(){return"fake-socket-id"}},{key:"disconnect",value:function(){}}]),a}(Rt),ge=function(){function l(h){E(this,l),this.options=h,this.connect(),this.options.withoutInterceptors||this.registerInterceptors()}return R(l,[{key:"channel",value:function(a){return this.connector.channel(a)}},{key:"connect",value:function(){this.options.broadcaster=="reverb"?this.connector=new pe(st(st({},this.options),{cluster:""})):this.options.broadcaster=="pusher"?this.connector=new pe(this.options):this.options.broadcaster=="socket.io"?this.connector=new Di(this.options):this.options.broadcaster=="null"?this.connector=new Hi(this.options):typeof this.options.broadcaster=="function"&&(this.connector=new this.options.broadcaster(this.options))}},{key:"disconnect",value:function(){this.connector.disconnect()}},{key:"join",value:function(a){return this.connector.presenceChannel(a)}},{key:"leave",value:function(a){this.connector.leave(a)}},{key:"leaveChannel",value:function(a){this.connector.leaveChannel(a)}},{key:"leaveAllChannels",value:function(){for(var a in this.connector.channels)this.leaveChannel(a)}},{key:"listen",value:function(a,c,s){return this.connector.listen(a,c,s)}},{key:"private",value:function(a){return this.connector.privateChannel(a)}},{key:"encryptedPrivate",value:function(a){return this.connector.encryptedPrivateChannel(a)}},{key:"socketId",value:function(){return this.connector.socketId()}},{key:"registerInterceptors",value:function(){typeof Vue=="function"&&Vue.http&&this.registerVueRequestInterceptor(),typeof axios=="function"&&this.registerAxiosRequestInterceptor(),typeof jQuery=="function"&&this.registerjQueryAjaxSetup(),(typeof Turbo>"u"?"undefined":At(Turbo))==="object"&&this.registerTurboRequestInterceptor()}},{key:"registerVueRequestInterceptor",value:function(){var a=this;Vue.http.interceptors.push(function(c,s){a.socketId()&&c.headers.set("X-Socket-ID",a.socketId()),s()})}},{key:"registerAxiosRequestInterceptor",value:function(){var a=this;axios.interceptors.request.use(function(c){return a.socketId()&&(c.headers["X-Socket-Id"]=a.socketId()),c})}},{key:"registerjQueryAjaxSetup",value:function(){var a=this;typeof jQuery.ajax<"u"&&jQuery.ajaxPrefilter(function(c,s,f){a.socketId()&&f.setRequestHeader("X-Socket-Id",a.socketId())})}},{key:"registerTurboRequestInterceptor",value:function(){var a=this;document.addEventListener("turbo:before-fetch-request",function(c){c.detail.fetchOptions.headers["X-Socket-Id"]=a.socketId()})}}]),l}();var me=Ai(_e(),1);window.EchoFactory=ge;window.Pusher=me.default;})(); +/*! Bundled license information: + +pusher-js/dist/web/pusher.js: + (*! + * Pusher JavaScript Library v7.6.0 + * https://pusher.com/ + * + * Copyright 2020, Pusher + * Released under the MIT licence. + *) +*/ diff --git a/public/js/filament/forms/components/color-picker.js b/public/js/filament/forms/components/color-picker.js new file mode 100644 index 000000000..67e4f5d6f --- /dev/null +++ b/public/js/filament/forms/components/color-picker.js @@ -0,0 +1 @@ +var c=(e,t=0,r=1)=>e>r?r:eMath.round(r*e)/r;var nt={grad:360/400,turn:360,rad:360/(Math.PI*2)},F=e=>G(b(e)),b=e=>(e[0]==="#"&&(e=e.substr(1)),e.length<6?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:1}:{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:1}),it=(e,t="deg")=>Number(e)*(nt[t]||1),lt=e=>{let r=/hsla?\(?\s*(-?\d*\.?\d+)(deg|rad|grad|turn)?[,\s]+(-?\d*\.?\d+)%?[,\s]+(-?\d*\.?\d+)%?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(e);return r?ct({h:it(r[1],r[2]),s:Number(r[3]),l:Number(r[4]),a:r[5]===void 0?1:Number(r[5])/(r[6]?100:1)}):{h:0,s:0,v:0,a:1}},J=lt,ct=({h:e,s:t,l:r,a:o})=>(t*=(r<50?r:100-r)/100,{h:e,s:t>0?2*t/(r+t)*100:0,v:r+t,a:o}),X=e=>pt(A(e)),Y=({h:e,s:t,v:r,a:o})=>{let s=(200-t)*r/100;return{h:n(e),s:n(s>0&&s<200?t*r/100/(s<=100?s:200-s)*100:0),l:n(s/2),a:n(o,2)}};var d=e=>{let{h:t,s:r,l:o}=Y(e);return`hsl(${t}, ${r}%, ${o}%)`},v=e=>{let{h:t,s:r,l:o,a:s}=Y(e);return`hsla(${t}, ${r}%, ${o}%, ${s})`},A=({h:e,s:t,v:r,a:o})=>{e=e/360*6,t=t/100,r=r/100;let s=Math.floor(e),a=r*(1-t),i=r*(1-(e-s)*t),l=r*(1-(1-e+s)*t),N=s%6;return{r:n([r,i,a,a,l,r][N]*255),g:n([l,r,r,i,a,a][N]*255),b:n([a,a,l,r,r,i][N]*255),a:n(o,2)}},B=e=>{let{r:t,g:r,b:o}=A(e);return`rgb(${t}, ${r}, ${o})`},D=e=>{let{r:t,g:r,b:o,a:s}=A(e);return`rgba(${t}, ${r}, ${o}, ${s})`};var L=e=>{let r=/rgba?\(?\s*(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(e);return r?G({r:Number(r[1])/(r[2]?100/255:1),g:Number(r[3])/(r[4]?100/255:1),b:Number(r[5])/(r[6]?100/255:1),a:r[7]===void 0?1:Number(r[7])/(r[8]?100:1)}):{h:0,s:0,v:0,a:1}},U=L,q=e=>{let t=e.toString(16);return t.length<2?"0"+t:t},pt=({r:e,g:t,b:r})=>"#"+q(e)+q(t)+q(r),G=({r:e,g:t,b:r,a:o})=>{let s=Math.max(e,t,r),a=s-Math.min(e,t,r),i=a?s===e?(t-r)/a:s===t?2+(r-e)/a:4+(e-t)/a:0;return{h:n(60*(i<0?i+6:i)),s:n(s?a/s*100:0),v:n(s/255*100),a:o}};var O=(e,t)=>{if(e===t)return!0;for(let r in e)if(e[r]!==t[r])return!1;return!0},h=(e,t)=>e.replace(/\s/g,"")===t.replace(/\s/g,""),K=(e,t)=>e.toLowerCase()===t.toLowerCase()?!0:O(b(e),b(t));var Q={},$=e=>{let t=Q[e];return t||(t=document.createElement("template"),t.innerHTML=e,Q[e]=t),t},f=(e,t,r)=>{e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:r}))};var m=!1,I=e=>"touches"in e,ut=e=>m&&!I(e)?!1:(m||(m=I(e)),!0),W=(e,t)=>{let r=I(t)?t.touches[0]:t,o=e.el.getBoundingClientRect();f(e.el,"move",e.getMove({x:c((r.pageX-(o.left+window.pageXOffset))/o.width),y:c((r.pageY-(o.top+window.pageYOffset))/o.height)}))},dt=(e,t)=>{let r=t.keyCode;r>40||e.xy&&r<37||r<33||(t.preventDefault(),f(e.el,"move",e.getMove({x:r===39?.01:r===37?-.01:r===34?.05:r===33?-.05:r===35?1:r===36?-1:0,y:r===40?.01:r===38?-.01:0},!0)))},u=class{constructor(t,r,o,s){let a=$(`
`);t.appendChild(a.content.cloneNode(!0));let i=t.querySelector(`[part=${r}]`);i.addEventListener("mousedown",this),i.addEventListener("touchstart",this),i.addEventListener("keydown",this),this.el=i,this.xy=s,this.nodes=[i.firstChild,i]}set dragging(t){let r=t?document.addEventListener:document.removeEventListener;r(m?"touchmove":"mousemove",this),r(m?"touchend":"mouseup",this)}handleEvent(t){switch(t.type){case"mousedown":case"touchstart":if(t.preventDefault(),!ut(t)||!m&&t.button!=0)return;this.el.focus(),W(this,t),this.dragging=!0;break;case"mousemove":case"touchmove":t.preventDefault(),W(this,t);break;case"mouseup":case"touchend":this.dragging=!1;break;case"keydown":dt(this,t);break}}style(t){t.forEach((r,o)=>{for(let s in r)this.nodes[o].style.setProperty(s,r[s])})}};var S=class extends u{constructor(t){super(t,"hue",'aria-label="Hue" aria-valuemin="0" aria-valuemax="360"',!1)}update({h:t}){this.h=t,this.style([{left:`${t/360*100}%`,color:d({h:t,s:100,v:100,a:1})}]),this.el.setAttribute("aria-valuenow",`${n(t)}`)}getMove(t,r){return{h:r?c(this.h+t.x*360,0,360):360*t.x}}};var H=class extends u{constructor(t){super(t,"saturation",'aria-label="Color"',!0)}update(t){this.hsva=t,this.style([{top:`${100-t.v}%`,left:`${t.s}%`,color:d(t)},{"background-color":d({h:t.h,s:100,v:100,a:1})}]),this.el.setAttribute("aria-valuetext",`Saturation ${n(t.s)}%, Brightness ${n(t.v)}%`)}getMove(t,r){return{s:r?c(this.hsva.s+t.x*100,0,100):t.x*100,v:r?c(this.hsva.v-t.y*100,0,100):Math.round(100-t.y*100)}}};var Z=":host{display:flex;flex-direction:column;position:relative;width:200px;height:200px;user-select:none;-webkit-user-select:none;cursor:default}:host([hidden]){display:none!important}[role=slider]{position:relative;touch-action:none;user-select:none;-webkit-user-select:none;outline:0}[role=slider]:last-child{border-radius:0 0 8px 8px}[part$=pointer]{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}[part$=pointer]::after{display:block;content:'';position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;background-color:currentColor}[role=slider]:focus [part$=pointer]{transform:translate(-50%,-50%) scale(1.1)}";var tt="[part=hue]{flex:0 0 24px;background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}[part=hue-pointer]{top:50%;z-index:2}";var rt="[part=saturation]{flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(to top,#000,transparent),linear-gradient(to right,#fff,rgba(255,255,255,0));box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}[part=saturation-pointer]{z-index:3}";var T=Symbol("same"),et=Symbol("color"),ot=Symbol("hsva"),R=Symbol("change"),_=Symbol("update"),st=Symbol("parts"),g=Symbol("css"),x=Symbol("sliders"),p=class extends HTMLElement{static get observedAttributes(){return["color"]}get[g](){return[Z,tt,rt]}get[x](){return[H,S]}get color(){return this[et]}set color(t){if(!this[T](t)){let r=this.colorModel.toHsva(t);this[_](r),this[R](t)}}constructor(){super();let t=$(``),r=this.attachShadow({mode:"open"});r.appendChild(t.content.cloneNode(!0)),r.addEventListener("move",this),this[st]=this[x].map(o=>new o(r))}connectedCallback(){if(this.hasOwnProperty("color")){let t=this.color;delete this.color,this.color=t}else this.color||(this.color=this.colorModel.defaultColor)}attributeChangedCallback(t,r,o){let s=this.colorModel.fromAttr(o);this[T](s)||(this.color=s)}handleEvent(t){let r=this[ot],o={...r,...t.detail};this[_](o);let s;!O(o,r)&&!this[T](s=this.colorModel.fromHsva(o))&&this[R](s)}[T](t){return this.color&&this.colorModel.equal(t,this.color)}[_](t){this[ot]=t,this[st].forEach(r=>r.update(t))}[R](t){this[et]=t,f(this,"color-changed",{value:t})}};var ht={defaultColor:"#000",toHsva:F,fromHsva:X,equal:K,fromAttr:e=>e},y=class extends p{get colorModel(){return ht}};var P=class extends y{};customElements.define("hex-color-picker",P);var mt={defaultColor:"hsl(0, 0%, 0%)",toHsva:J,fromHsva:d,equal:h,fromAttr:e=>e},w=class extends p{get colorModel(){return mt}};var z=class extends w{};customElements.define("hsl-string-color-picker",z);var ft={defaultColor:"rgb(0, 0, 0)",toHsva:U,fromHsva:B,equal:h,fromAttr:e=>e},M=class extends p{get colorModel(){return ft}};var V=class extends M{};customElements.define("rgb-string-color-picker",V);var k=class extends u{constructor(t){super(t,"alpha",'aria-label="Alpha" aria-valuemin="0" aria-valuemax="1"',!1)}update(t){this.hsva=t;let r=v({...t,a:0}),o=v({...t,a:1}),s=t.a*100;this.style([{left:`${s}%`,color:v(t)},{"--gradient":`linear-gradient(90deg, ${r}, ${o}`}]);let a=n(s);this.el.setAttribute("aria-valuenow",`${a}`),this.el.setAttribute("aria-valuetext",`${a}%`)}getMove(t,r){return{a:r?c(this.hsva.a+t.x):t.x}}};var at=`[part=alpha]{flex:0 0 24px}[part=alpha]::after{display:block;content:'';position:absolute;top:0;left:0;right:0;bottom:0;border-radius:inherit;background-image:var(--gradient);box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}[part^=alpha]{background-color:#fff;background-image:url('data:image/svg+xml,')}[part=alpha-pointer]{top:50%}`;var C=class extends p{get[g](){return[...super[g],at]}get[x](){return[...super[x],k]}};var gt={defaultColor:"rgba(0, 0, 0, 1)",toHsva:L,fromHsva:D,equal:h,fromAttr:e=>e},E=class extends C{get colorModel(){return gt}};var j=class extends E{};customElements.define("rgba-string-color-picker",j);function xt({isAutofocused:e,isDisabled:t,isLive:r,isLiveDebounced:o,isLiveOnBlur:s,liveDebounce:a,state:i}){return{state:i,init:function(){this.state===null||this.state===""||this.setState(this.state),e&&this.togglePanelVisibility(this.$refs.input),this.$refs.input.addEventListener("change",l=>{this.setState(l.target.value)}),this.$refs.panel.addEventListener("color-changed",l=>{this.setState(l.detail.value),!(s||!(r||o))&&setTimeout(()=>{this.state===l.detail.value&&this.commitState()},o?a:250)}),(r||o||s)&&new MutationObserver(()=>this.isOpen()?null:this.commitState()).observe(this.$refs.panel,{attributes:!0,childList:!0})},togglePanelVisibility:function(){t||this.$refs.panel.toggle(this.$refs.input)},setState:function(l){this.state=l,this.$refs.input.value=l,this.$refs.panel.color=l},isOpen:function(){return this.$refs.panel.style.display==="block"},commitState:function(){JSON.stringify(this.$wire.__instance.canonical)!==JSON.stringify(this.$wire.__instance.ephemeral)&&this.$wire.$commit()}}}export{xt as default}; diff --git a/public/js/filament/forms/components/date-time-picker.js b/public/js/filament/forms/components/date-time-picker.js new file mode 100644 index 000000000..23bcb79f8 --- /dev/null +++ b/public/js/filament/forms/components/date-time-picker.js @@ -0,0 +1 @@ +var oi=Object.create;var en=Object.defineProperty;var di=Object.getOwnPropertyDescriptor;var _i=Object.getOwnPropertyNames;var li=Object.getPrototypeOf,fi=Object.prototype.hasOwnProperty;var H=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports);var mi=(n,t,s,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of _i(t))!fi.call(n,e)&&e!==s&&en(n,e,{get:()=>t[e],enumerable:!(i=di(t,e))||i.enumerable});return n};var le=(n,t,s)=>(s=n!=null?oi(li(n)):{},mi(t||!n||!n.__esModule?en(s,"default",{value:n,enumerable:!0}):s,n));var hn=H((ge,Se)=>{(function(n,t){typeof ge=="object"&&typeof Se<"u"?Se.exports=t():typeof define=="function"&&define.amd?define(t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_plugin_customParseFormat=t()})(ge,function(){"use strict";var n={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},t=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,s=/\d\d/,i=/\d\d?/,e=/\d*[^-_:/,()\s\d]+/,a={},u=function(_){return(_=+_)+(_>68?1900:2e3)},r=function(_){return function(h){this[_]=+h}},o=[/[+-]\d\d:?(\d\d)?|Z/,function(_){(this.zone||(this.zone={})).offset=function(h){if(!h||h==="Z")return 0;var D=h.match(/([+-]|\d\d)/g),p=60*D[1]+(+D[2]||0);return p===0?0:D[0]==="+"?-p:p}(_)}],d=function(_){var h=a[_];return h&&(h.indexOf?h:h.s.concat(h.f))},l=function(_,h){var D,p=a.meridiem;if(p){for(var b=1;b<=24;b+=1)if(_.indexOf(p(b,0,h))>-1){D=b>12;break}}else D=_===(h?"pm":"PM");return D},y={A:[e,function(_){this.afternoon=l(_,!1)}],a:[e,function(_){this.afternoon=l(_,!0)}],S:[/\d/,function(_){this.milliseconds=100*+_}],SS:[s,function(_){this.milliseconds=10*+_}],SSS:[/\d{3}/,function(_){this.milliseconds=+_}],s:[i,r("seconds")],ss:[i,r("seconds")],m:[i,r("minutes")],mm:[i,r("minutes")],H:[i,r("hours")],h:[i,r("hours")],HH:[i,r("hours")],hh:[i,r("hours")],D:[i,r("day")],DD:[s,r("day")],Do:[e,function(_){var h=a.ordinal,D=_.match(/\d+/);if(this.day=D[0],h)for(var p=1;p<=31;p+=1)h(p).replace(/\[|\]/g,"")===_&&(this.day=p)}],M:[i,r("month")],MM:[s,r("month")],MMM:[e,function(_){var h=d("months"),D=(d("monthsShort")||h.map(function(p){return p.slice(0,3)})).indexOf(_)+1;if(D<1)throw new Error;this.month=D%12||D}],MMMM:[e,function(_){var h=d("months").indexOf(_)+1;if(h<1)throw new Error;this.month=h%12||h}],Y:[/[+-]?\d+/,r("year")],YY:[s,function(_){this.year=u(_)}],YYYY:[/\d{4}/,r("year")],Z:o,ZZ:o};function f(_){var h,D;h=_,D=a&&a.formats;for(var p=(_=h.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(q,w,k){var U=k&&k.toUpperCase();return w||D[k]||n[k]||D[U].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(Z,L,M){return L||M.slice(1)})})).match(t),b=p.length,T=0;T-1)return new Date((Y==="X"?1e3:1)*m);var v=f(Y)(m),g=v.year,C=v.month,x=v.day,N=v.hours,E=v.minutes,P=v.seconds,ee=v.milliseconds,G=v.zone,X=new Date,V=x||(g||C?1:X.getDate()),F=g||X.getFullYear(),W=0;g&&!C||(W=C>0?C-1:X.getMonth());var Q=N||0,te=E||0,ye=P||0,Ye=ee||0;return G?new Date(Date.UTC(F,W,V,Q,te,ye,Ye+60*G.offset*1e3)):c?new Date(Date.UTC(F,W,V,Q,te,ye,Ye)):new Date(F,W,V,Q,te,ye,Ye)}catch{return new Date("")}}(S,I,$),this.init(),U&&U!==!0&&(this.$L=this.locale(U).$L),k&&S!=this.format(I)&&(this.$d=new Date("")),a={}}else if(I instanceof Array)for(var Z=I.length,L=1;L<=Z;L+=1){O[1]=I[L-1];var M=D.apply(this,O);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}L===Z&&(this.$d=new Date(""))}else b.call(this,T)}}})});var Mn=H((be,ke)=>{(function(n,t){typeof be=="object"&&typeof ke<"u"?ke.exports=t():typeof define=="function"&&define.amd?define(t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_plugin_localeData=t()})(be,function(){"use strict";return function(n,t,s){var i=t.prototype,e=function(d){return d&&(d.indexOf?d:d.s)},a=function(d,l,y,f,_){var h=d.name?d:d.$locale(),D=e(h[l]),p=e(h[y]),b=D||p.map(function(S){return S.slice(0,f)});if(!_)return b;var T=h.weekStart;return b.map(function(S,$){return b[($+(T||0))%7]})},u=function(){return s.Ls[s.locale()]},r=function(d,l){return d.formats[l]||function(y){return y.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(f,_,h){return _||h.slice(1)})}(d.formats[l.toUpperCase()])},o=function(){var d=this;return{months:function(l){return l?l.format("MMMM"):a(d,"months")},monthsShort:function(l){return l?l.format("MMM"):a(d,"monthsShort","months",3)},firstDayOfWeek:function(){return d.$locale().weekStart||0},weekdays:function(l){return l?l.format("dddd"):a(d,"weekdays")},weekdaysMin:function(l){return l?l.format("dd"):a(d,"weekdaysMin","weekdays",2)},weekdaysShort:function(l){return l?l.format("ddd"):a(d,"weekdaysShort","weekdays",3)},longDateFormat:function(l){return r(d.$locale(),l)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};i.localeData=function(){return o.bind(this)()},s.localeData=function(){var d=u();return{firstDayOfWeek:function(){return d.weekStart||0},weekdays:function(){return s.weekdays()},weekdaysShort:function(){return s.weekdaysShort()},weekdaysMin:function(){return s.weekdaysMin()},months:function(){return s.months()},monthsShort:function(){return s.monthsShort()},longDateFormat:function(l){return r(d,l)},meridiem:d.meridiem,ordinal:d.ordinal}},s.months=function(){return a(u(),"months")},s.monthsShort=function(){return a(u(),"monthsShort","months",3)},s.weekdays=function(d){return a(u(),"weekdays",null,null,d)},s.weekdaysShort=function(d){return a(u(),"weekdaysShort","weekdays",3,d)},s.weekdaysMin=function(d){return a(u(),"weekdaysMin","weekdays",2,d)}}})});var yn=H((He,je)=>{(function(n,t){typeof He=="object"&&typeof je<"u"?je.exports=t():typeof define=="function"&&define.amd?define(t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_plugin_timezone=t()})(He,function(){"use strict";var n={year:0,month:1,day:2,hour:3,minute:4,second:5},t={};return function(s,i,e){var a,u=function(l,y,f){f===void 0&&(f={});var _=new Date(l),h=function(D,p){p===void 0&&(p={});var b=p.timeZoneName||"short",T=D+"|"+b,S=t[T];return S||(S=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:D,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:b}),t[T]=S),S}(y,f);return h.formatToParts(_)},r=function(l,y){for(var f=u(l,y),_=[],h=0;h=0&&(_[T]=parseInt(b,10))}var S=_[3],$=S===24?0:S,O=_[0]+"-"+_[1]+"-"+_[2]+" "+$+":"+_[4]+":"+_[5]+":000",I=+l;return(e.utc(O).valueOf()-(I-=I%1e3))/6e4},o=i.prototype;o.tz=function(l,y){l===void 0&&(l=a);var f=this.utcOffset(),_=this.toDate(),h=_.toLocaleString("en-US",{timeZone:l}),D=Math.round((_-new Date(h))/1e3/60),p=e(h,{locale:this.$L}).$set("millisecond",this.$ms).utcOffset(15*-Math.round(_.getTimezoneOffset()/15)-D,!0);if(y){var b=p.utcOffset();p=p.add(f-b,"minute")}return p.$x.$timezone=l,p},o.offsetName=function(l){var y=this.$x.$timezone||e.tz.guess(),f=u(this.valueOf(),y,{timeZoneName:l}).find(function(_){return _.type.toLowerCase()==="timezonename"});return f&&f.value};var d=o.startOf;o.startOf=function(l,y){if(!this.$x||!this.$x.$timezone)return d.call(this,l,y);var f=e(this.format("YYYY-MM-DD HH:mm:ss:SSS"),{locale:this.$L});return d.call(f,l,y).tz(this.$x.$timezone,!0)},e.tz=function(l,y,f){var _=f&&y,h=f||y||a,D=r(+e(),h);if(typeof l!="string")return e(l).tz(h);var p=function($,O,I){var q=$-60*O*1e3,w=r(q,I);if(O===w)return[q,O];var k=r(q-=60*(w-O)*1e3,I);return w===k?[q,w]:[$-60*Math.min(w,k)*1e3,Math.max(w,k)]}(e.utc(l,_).valueOf(),D,h),b=p[0],T=p[1],S=e(b).utcOffset(T);return S.$x.$timezone=h,S},e.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},e.tz.setDefault=function(l){a=l}}})});var Yn=H((Te,we)=>{(function(n,t){typeof Te=="object"&&typeof we<"u"?we.exports=t():typeof define=="function"&&define.amd?define(t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_plugin_utc=t()})(Te,function(){"use strict";var n="minute",t=/[+-]\d\d(?::?\d\d)?/g,s=/([+-]|\d\d)/g;return function(i,e,a){var u=e.prototype;a.utc=function(_){var h={date:_,utc:!0,args:arguments};return new e(h)},u.utc=function(_){var h=a(this.toDate(),{locale:this.$L,utc:!0});return _?h.add(this.utcOffset(),n):h},u.local=function(){return a(this.toDate(),{locale:this.$L,utc:!1})};var r=u.parse;u.parse=function(_){_.utc&&(this.$u=!0),this.$utils().u(_.$offset)||(this.$offset=_.$offset),r.call(this,_)};var o=u.init;u.init=function(){if(this.$u){var _=this.$d;this.$y=_.getUTCFullYear(),this.$M=_.getUTCMonth(),this.$D=_.getUTCDate(),this.$W=_.getUTCDay(),this.$H=_.getUTCHours(),this.$m=_.getUTCMinutes(),this.$s=_.getUTCSeconds(),this.$ms=_.getUTCMilliseconds()}else o.call(this)};var d=u.utcOffset;u.utcOffset=function(_,h){var D=this.$utils().u;if(D(_))return this.$u?0:D(this.$offset)?d.call(this):this.$offset;if(typeof _=="string"&&(_=function(S){S===void 0&&(S="");var $=S.match(t);if(!$)return null;var O=(""+$[0]).match(s)||["-",0,0],I=O[0],q=60*+O[1]+ +O[2];return q===0?0:I==="+"?q:-q}(_),_===null))return this;var p=Math.abs(_)<=16?60*_:_,b=this;if(h)return b.$offset=p,b.$u=_===0,b;if(_!==0){var T=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(b=this.local().add(p+T,n)).$offset=p,b.$x.$localOffset=T}else b=this.utc();return b};var l=u.format;u.format=function(_){var h=_||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return l.call(this,h)},u.valueOf=function(){var _=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*_},u.isUTC=function(){return!!this.$u},u.toISOString=function(){return this.toDate().toISOString()},u.toString=function(){return this.toDate().toUTCString()};var y=u.toDate;u.toDate=function(_){return _==="s"&&this.$offset?a(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():y.call(this)};var f=u.diff;u.diff=function(_,h,D){if(_&&this.$u===_.$u)return f.call(this,_,h,D);var p=this.local(),b=a(_).local();return f.call(p,b,h,D)}}})});var j=H(($e,Ce)=>{(function(n,t){typeof $e=="object"&&typeof Ce<"u"?Ce.exports=t():typeof define=="function"&&define.amd?define(t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs=t()})($e,function(){"use strict";var n=1e3,t=6e4,s=36e5,i="millisecond",e="second",a="minute",u="hour",r="day",o="week",d="month",l="quarter",y="year",f="date",_="Invalid Date",h=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,D=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,p={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(L){var M=["th","st","nd","rd"],m=L%100;return"["+L+(M[(m-20)%10]||M[m]||M[0])+"]"}},b=function(L,M,m){var Y=String(L);return!Y||Y.length>=M?L:""+Array(M+1-Y.length).join(m)+L},T={s:b,z:function(L){var M=-L.utcOffset(),m=Math.abs(M),Y=Math.floor(m/60),c=m%60;return(M<=0?"+":"-")+b(Y,2,"0")+":"+b(c,2,"0")},m:function L(M,m){if(M.date()1)return L(g[0])}else{var C=M.name;$[C]=M,c=C}return!Y&&c&&(S=c),c||!Y&&S},w=function(L,M){if(I(L))return L.clone();var m=typeof M=="object"?M:{};return m.date=L,m.args=arguments,new U(m)},k=T;k.l=q,k.i=I,k.w=function(L,M){return w(L,{locale:M.$L,utc:M.$u,x:M.$x,$offset:M.$offset})};var U=function(){function L(m){this.$L=q(m.locale,null,!0),this.parse(m),this.$x=this.$x||m.x||{},this[O]=!0}var M=L.prototype;return M.parse=function(m){this.$d=function(Y){var c=Y.date,v=Y.utc;if(c===null)return new Date(NaN);if(k.u(c))return new Date;if(c instanceof Date)return new Date(c);if(typeof c=="string"&&!/Z$/i.test(c)){var g=c.match(h);if(g){var C=g[2]-1||0,x=(g[7]||"0").substring(0,3);return v?new Date(Date.UTC(g[1],C,g[3]||1,g[4]||0,g[5]||0,g[6]||0,x)):new Date(g[1],C,g[3]||1,g[4]||0,g[5]||0,g[6]||0,x)}}return new Date(c)}(m),this.init()},M.init=function(){var m=this.$d;this.$y=m.getFullYear(),this.$M=m.getMonth(),this.$D=m.getDate(),this.$W=m.getDay(),this.$H=m.getHours(),this.$m=m.getMinutes(),this.$s=m.getSeconds(),this.$ms=m.getMilliseconds()},M.$utils=function(){return k},M.isValid=function(){return this.$d.toString()!==_},M.isSame=function(m,Y){var c=w(m);return this.startOf(Y)<=c&&c<=this.endOf(Y)},M.isAfter=function(m,Y){return w(m){(function(n,t){typeof Oe=="object"&&typeof ze<"u"?ze.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_ar=t(n.dayjs)})(Oe,function(n){"use strict";function t(r){return r&&typeof r=="object"&&"default"in r?r:{default:r}}var s=t(n),i="\u064A\u0646\u0627\u064A\u0631_\u0641\u0628\u0631\u0627\u064A\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064A\u0644_\u0645\u0627\u064A\u0648_\u064A\u0648\u0646\u064A\u0648_\u064A\u0648\u0644\u064A\u0648_\u0623\u063A\u0633\u0637\u0633_\u0633\u0628\u062A\u0645\u0628\u0631_\u0623\u0643\u062A\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062F\u064A\u0633\u0645\u0628\u0631".split("_"),e={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},a={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},u={name:"ar",weekdays:"\u0627\u0644\u0623\u062D\u062F_\u0627\u0644\u0625\u062B\u0646\u064A\u0646_\u0627\u0644\u062B\u0644\u0627\u062B\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062E\u0645\u064A\u0633_\u0627\u0644\u062C\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062A".split("_"),weekdaysShort:"\u0623\u062D\u062F_\u0625\u062B\u0646\u064A\u0646_\u062B\u0644\u0627\u062B\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062E\u0645\u064A\u0633_\u062C\u0645\u0639\u0629_\u0633\u0628\u062A".split("_"),weekdaysMin:"\u062D_\u0646_\u062B_\u0631_\u062E_\u062C_\u0633".split("_"),months:i,monthsShort:i,weekStart:6,meridiem:function(r){return r>12?"\u0645":"\u0635"},relativeTime:{future:"\u0628\u0639\u062F %s",past:"\u0645\u0646\u0630 %s",s:"\u062B\u0627\u0646\u064A\u0629 \u0648\u0627\u062D\u062F\u0629",m:"\u062F\u0642\u064A\u0642\u0629 \u0648\u0627\u062D\u062F\u0629",mm:"%d \u062F\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629 \u0648\u0627\u062D\u062F\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062A",d:"\u064A\u0648\u0645 \u0648\u0627\u062D\u062F",dd:"%d \u0623\u064A\u0627\u0645",M:"\u0634\u0647\u0631 \u0648\u0627\u062D\u062F",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0639\u0627\u0645 \u0648\u0627\u062D\u062F",yy:"%d \u0623\u0639\u0648\u0627\u0645"},preparse:function(r){return r.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(o){return a[o]}).replace(/،/g,",")},postformat:function(r){return r.replace(/\d/g,function(o){return e[o]}).replace(/,/g,"\u060C")},ordinal:function(r){return r},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200FM/\u200FYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"}};return s.default.locale(u,null,!0),u})});var Dn=H((Ae,Ie)=>{(function(n,t){typeof Ae=="object"&&typeof Ie<"u"?Ie.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_bs=t(n.dayjs)})(Ae,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"bs",weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010Detvrtak_petak_subota".split("_"),months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),weekStart:1,weekdaysShort:"ned._pon._uto._sri._\u010Det._pet._sub.".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010De_pe_su".split("_"),ordinal:function(e){return e},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return s.default.locale(i,null,!0),i})});var Ln=H((xe,qe)=>{(function(n,t){typeof xe=="object"&&typeof qe<"u"?qe.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_ca=t(n.dayjs)})(xe,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"ca",weekdays:"Diumenge_Dilluns_Dimarts_Dimecres_Dijous_Divendres_Dissabte".split("_"),weekdaysShort:"Dg._Dl._Dt._Dc._Dj._Dv._Ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),months:"Gener_Febrer_Mar\xE7_Abril_Maig_Juny_Juliol_Agost_Setembre_Octubre_Novembre_Desembre".split("_"),monthsShort:"Gen._Febr._Mar\xE7_Abr._Maig_Juny_Jul._Ag._Set._Oct._Nov._Des.".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",ll:"D MMM YYYY",lll:"D MMM YYYY, H:mm",llll:"ddd D MMM YYYY, H:mm"},relativeTime:{future:"d'aqu\xED %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinal:function(e){return""+e+(e===1||e===3?"r":e===2?"n":e===4?"t":"\xE8")}};return s.default.locale(i,null,!0),i})});var Ne=H((Me,vn)=>{(function(n,t){typeof Me=="object"&&typeof vn<"u"?t(Me,j()):typeof define=="function"&&define.amd?define(["exports","dayjs"],t):t((n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_ku={},n.dayjs)})(Me,function(n,t){"use strict";function s(o){return o&&typeof o=="object"&&"default"in o?o:{default:o}}var i=s(t),e={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},a={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},u=["\u06A9\u0627\u0646\u0648\u0648\u0646\u06CC \u062F\u0648\u0648\u06D5\u0645","\u0634\u0648\u0628\u0627\u062A","\u0626\u0627\u062F\u0627\u0631","\u0646\u06CC\u0633\u0627\u0646","\u0626\u0627\u06CC\u0627\u0631","\u062D\u0648\u0632\u06D5\u06CC\u0631\u0627\u0646","\u062A\u06D5\u0645\u0645\u0648\u0648\u0632","\u0626\u0627\u0628","\u0626\u06D5\u06CC\u0644\u0648\u0648\u0644","\u062A\u0634\u0631\u06CC\u0646\u06CC \u06CC\u06D5\u06A9\u06D5\u0645","\u062A\u0634\u0631\u06CC\u0646\u06CC \u062F\u0648\u0648\u06D5\u0645","\u06A9\u0627\u0646\u0648\u0648\u0646\u06CC \u06CC\u06D5\u06A9\u06D5\u0645"],r={name:"ku",months:u,monthsShort:u,weekdays:"\u06CC\u06D5\u06A9\u0634\u06D5\u0645\u0645\u06D5_\u062F\u0648\u0648\u0634\u06D5\u0645\u0645\u06D5_\u0633\u06CE\u0634\u06D5\u0645\u0645\u06D5_\u0686\u0648\u0627\u0631\u0634\u06D5\u0645\u0645\u06D5_\u067E\u06CE\u0646\u062C\u0634\u06D5\u0645\u0645\u06D5_\u0647\u06D5\u06CC\u0646\u06CC_\u0634\u06D5\u0645\u0645\u06D5".split("_"),weekdaysShort:"\u06CC\u06D5\u06A9\u0634\u06D5\u0645_\u062F\u0648\u0648\u0634\u06D5\u0645_\u0633\u06CE\u0634\u06D5\u0645_\u0686\u0648\u0627\u0631\u0634\u06D5\u0645_\u067E\u06CE\u0646\u062C\u0634\u06D5\u0645_\u0647\u06D5\u06CC\u0646\u06CC_\u0634\u06D5\u0645\u0645\u06D5".split("_"),weekStart:6,weekdaysMin:"\u06CC_\u062F_\u0633_\u0686_\u067E_\u0647\u0640_\u0634".split("_"),preparse:function(o){return o.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(d){return a[d]}).replace(/،/g,",")},postformat:function(o){return o.replace(/\d/g,function(d){return e[d]}).replace(/,/g,"\u060C")},ordinal:function(o){return o},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiem:function(o){return o<12?"\u067E.\u0646":"\u062F.\u0646"},relativeTime:{future:"\u0644\u06D5 %s",past:"\u0644\u06D5\u0645\u06D5\u0648\u067E\u06CE\u0634 %s",s:"\u0686\u06D5\u0646\u062F \u0686\u0631\u06A9\u06D5\u06CC\u06D5\u06A9",m:"\u06CC\u06D5\u06A9 \u062E\u0648\u0644\u06D5\u06A9",mm:"%d \u062E\u0648\u0644\u06D5\u06A9",h:"\u06CC\u06D5\u06A9 \u06A9\u0627\u062A\u0698\u0645\u06CE\u0631",hh:"%d \u06A9\u0627\u062A\u0698\u0645\u06CE\u0631",d:"\u06CC\u06D5\u06A9 \u0695\u06C6\u0698",dd:"%d \u0695\u06C6\u0698",M:"\u06CC\u06D5\u06A9 \u0645\u0627\u0646\u06AF",MM:"%d \u0645\u0627\u0646\u06AF",y:"\u06CC\u06D5\u06A9 \u0633\u0627\u06B5",yy:"%d \u0633\u0627\u06B5"}};i.default.locale(r,null,!0),n.default=r,n.englishToArabicNumbersMap=e,Object.defineProperty(n,"__esModule",{value:!0})})});var gn=H((Ee,Fe)=>{(function(n,t){typeof Ee=="object"&&typeof Fe<"u"?Fe.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_cs=t(n.dayjs)})(Ee,function(n){"use strict";function t(u){return u&&typeof u=="object"&&"default"in u?u:{default:u}}var s=t(n);function i(u){return u>1&&u<5&&~~(u/10)!=1}function e(u,r,o,d){var l=u+" ";switch(o){case"s":return r||d?"p\xE1r sekund":"p\xE1r sekundami";case"m":return r?"minuta":d?"minutu":"minutou";case"mm":return r||d?l+(i(u)?"minuty":"minut"):l+"minutami";case"h":return r?"hodina":d?"hodinu":"hodinou";case"hh":return r||d?l+(i(u)?"hodiny":"hodin"):l+"hodinami";case"d":return r||d?"den":"dnem";case"dd":return r||d?l+(i(u)?"dny":"dn\xED"):l+"dny";case"M":return r||d?"m\u011Bs\xEDc":"m\u011Bs\xEDcem";case"MM":return r||d?l+(i(u)?"m\u011Bs\xEDce":"m\u011Bs\xEDc\u016F"):l+"m\u011Bs\xEDci";case"y":return r||d?"rok":"rokem";case"yy":return r||d?l+(i(u)?"roky":"let"):l+"lety"}}var a={name:"cs",weekdays:"ned\u011Ble_pond\u011Bl\xED_\xFAter\xFD_st\u0159eda_\u010Dtvrtek_p\xE1tek_sobota".split("_"),weekdaysShort:"ne_po_\xFAt_st_\u010Dt_p\xE1_so".split("_"),weekdaysMin:"ne_po_\xFAt_st_\u010Dt_p\xE1_so".split("_"),months:"leden_\xFAnor_b\u0159ezen_duben_kv\u011Bten_\u010Derven_\u010Dervenec_srpen_z\xE1\u0159\xED_\u0159\xEDjen_listopad_prosinec".split("_"),monthsShort:"led_\xFAno_b\u0159e_dub_kv\u011B_\u010Dvn_\u010Dvc_srp_z\xE1\u0159_\u0159\xEDj_lis_pro".split("_"),weekStart:1,yearStart:4,ordinal:function(u){return u+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},relativeTime:{future:"za %s",past:"p\u0159ed %s",s:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e}};return s.default.locale(a,null,!0),a})});var Sn=H((Je,Ue)=>{(function(n,t){typeof Je=="object"&&typeof Ue<"u"?Ue.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_cy=t(n.dayjs)})(Je,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"cy",weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),weekStart:1,weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"mewn %s",past:"%s yn \xF4l",s:"ychydig eiliadau",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"}};return s.default.locale(i,null,!0),i})});var bn=H((Pe,We)=>{(function(n,t){typeof Pe=="object"&&typeof We<"u"?We.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_da=t(n.dayjs)})(Pe,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"da",weekdays:"s\xF8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xF8rdag".split("_"),weekdaysShort:"s\xF8n._man._tirs._ons._tors._fre._l\xF8r.".split("_"),weekdaysMin:"s\xF8._ma._ti._on._to._fr._l\xF8.".split("_"),months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj_juni_juli_aug._sept._okt._nov._dec.".split("_"),weekStart:1,ordinal:function(e){return e+"."},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},relativeTime:{future:"om %s",past:"%s siden",s:"f\xE5 sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en m\xE5ned",MM:"%d m\xE5neder",y:"et \xE5r",yy:"%d \xE5r"}};return s.default.locale(i,null,!0),i})});var kn=H((Re,Ze)=>{(function(n,t){typeof Re=="object"&&typeof Ze<"u"?Ze.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_de=t(n.dayjs)})(Re,function(n){"use strict";function t(u){return u&&typeof u=="object"&&"default"in u?u:{default:u}}var s=t(n),i={s:"ein paar Sekunden",m:["eine Minute","einer Minute"],mm:"%d Minuten",h:["eine Stunde","einer Stunde"],hh:"%d Stunden",d:["ein Tag","einem Tag"],dd:["%d Tage","%d Tagen"],M:["ein Monat","einem Monat"],MM:["%d Monate","%d Monaten"],y:["ein Jahr","einem Jahr"],yy:["%d Jahre","%d Jahren"]};function e(u,r,o){var d=i[o];return Array.isArray(d)&&(d=d[r?0:1]),d.replace("%d",u)}var a={name:"de",weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),months:"Januar_Februar_M\xE4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xE4rz_Apr._Mai_Juni_Juli_Aug._Sept._Okt._Nov._Dez.".split("_"),ordinal:function(u){return u+"."},weekStart:1,yearStart:4,formats:{LTS:"HH:mm:ss",LT:"HH:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"vor %s",s:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e}};return s.default.locale(a,null,!0),a})});var Hn=H((Ve,Ge)=>{(function(n,t){typeof Ve=="object"&&typeof Ge<"u"?Ge.exports=t():typeof define=="function"&&define.amd?define(t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_en=t()})(Ve,function(){"use strict";return{name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(n){var t=["th","st","nd","rd"],s=n%100;return"["+n+(t[(s-20)%10]||t[s]||t[0])+"]"}}})});var jn=H((Ke,Be)=>{(function(n,t){typeof Ke=="object"&&typeof Be<"u"?Be.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_es=t(n.dayjs)})(Ke,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"es",monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),weekdays:"domingo_lunes_martes_mi\xE9rcoles_jueves_viernes_s\xE1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xE9._jue._vie._s\xE1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xE1".split("_"),months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xEDa",dd:"%d d\xEDas",M:"un mes",MM:"%d meses",y:"un a\xF1o",yy:"%d a\xF1os"},ordinal:function(e){return e+"\xBA"}};return s.default.locale(i,null,!0),i})});var Tn=H((Xe,Qe)=>{(function(n,t){typeof Xe=="object"&&typeof Qe<"u"?Qe.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_et=t(n.dayjs)})(Xe,function(n){"use strict";function t(a){return a&&typeof a=="object"&&"default"in a?a:{default:a}}var s=t(n);function i(a,u,r,o){var d={s:["m\xF5ne sekundi","m\xF5ni sekund","paar sekundit"],m:["\xFChe minuti","\xFCks minut"],mm:["%d minuti","%d minutit"],h:["\xFChe tunni","tund aega","\xFCks tund"],hh:["%d tunni","%d tundi"],d:["\xFChe p\xE4eva","\xFCks p\xE4ev"],M:["kuu aja","kuu aega","\xFCks kuu"],MM:["%d kuu","%d kuud"],y:["\xFChe aasta","aasta","\xFCks aasta"],yy:["%d aasta","%d aastat"]};return u?(d[r][2]?d[r][2]:d[r][1]).replace("%d",a):(o?d[r][0]:d[r][1]).replace("%d",a)}var e={name:"et",weekdays:"p\xFChap\xE4ev_esmasp\xE4ev_teisip\xE4ev_kolmap\xE4ev_neljap\xE4ev_reede_laup\xE4ev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),months:"jaanuar_veebruar_m\xE4rts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_m\xE4rts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),ordinal:function(a){return a+"."},weekStart:1,relativeTime:{future:"%s p\xE4rast",past:"%s tagasi",s:i,m:i,mm:i,h:i,hh:i,d:i,dd:"%d p\xE4eva",M:i,MM:i,y:i,yy:i},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return s.default.locale(e,null,!0),e})});var wn=H((et,tt)=>{(function(n,t){typeof et=="object"&&typeof tt<"u"?tt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_fa=t(n.dayjs)})(et,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"fa",weekdays:"\u06CC\u06A9\u200C\u0634\u0646\u0628\u0647_\u062F\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200C\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067E\u0646\u062C\u200C\u0634\u0646\u0628\u0647_\u062C\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysShort:"\u06CC\u06A9\u200C\u0634\u0646\u0628\u0647_\u062F\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200C\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067E\u0646\u062C\u200C\u0634\u0646\u0628\u0647_\u062C\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysMin:"\u06CC_\u062F_\u0633_\u0686_\u067E_\u062C_\u0634".split("_"),weekStart:6,months:"\u0698\u0627\u0646\u0648\u06CC\u0647_\u0641\u0648\u0631\u06CC\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06CC\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06CC\u0647_\u0627\u0648\u062A_\u0633\u067E\u062A\u0627\u0645\u0628\u0631_\u0627\u06A9\u062A\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062F\u0633\u0627\u0645\u0628\u0631".split("_"),monthsShort:"\u0698\u0627\u0646\u0648\u06CC\u0647_\u0641\u0648\u0631\u06CC\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06CC\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06CC\u0647_\u0627\u0648\u062A_\u0633\u067E\u062A\u0627\u0645\u0628\u0631_\u0627\u06A9\u062A\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062F\u0633\u0627\u0645\u0628\u0631".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"\u062F\u0631 %s",past:"%s \u067E\u06CC\u0634",s:"\u0686\u0646\u062F \u062B\u0627\u0646\u06CC\u0647",m:"\u06CC\u06A9 \u062F\u0642\u06CC\u0642\u0647",mm:"%d \u062F\u0642\u06CC\u0642\u0647",h:"\u06CC\u06A9 \u0633\u0627\u0639\u062A",hh:"%d \u0633\u0627\u0639\u062A",d:"\u06CC\u06A9 \u0631\u0648\u0632",dd:"%d \u0631\u0648\u0632",M:"\u06CC\u06A9 \u0645\u0627\u0647",MM:"%d \u0645\u0627\u0647",y:"\u06CC\u06A9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"}};return s.default.locale(i,null,!0),i})});var $n=H((nt,it)=>{(function(n,t){typeof nt=="object"&&typeof it<"u"?it.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_fi=t(n.dayjs)})(nt,function(n){"use strict";function t(a){return a&&typeof a=="object"&&"default"in a?a:{default:a}}var s=t(n);function i(a,u,r,o){var d={s:"muutama sekunti",m:"minuutti",mm:"%d minuuttia",h:"tunti",hh:"%d tuntia",d:"p\xE4iv\xE4",dd:"%d p\xE4iv\xE4\xE4",M:"kuukausi",MM:"%d kuukautta",y:"vuosi",yy:"%d vuotta",numbers:"nolla_yksi_kaksi_kolme_nelj\xE4_viisi_kuusi_seitsem\xE4n_kahdeksan_yhdeks\xE4n".split("_")},l={s:"muutaman sekunnin",m:"minuutin",mm:"%d minuutin",h:"tunnin",hh:"%d tunnin",d:"p\xE4iv\xE4n",dd:"%d p\xE4iv\xE4n",M:"kuukauden",MM:"%d kuukauden",y:"vuoden",yy:"%d vuoden",numbers:"nollan_yhden_kahden_kolmen_nelj\xE4n_viiden_kuuden_seitsem\xE4n_kahdeksan_yhdeks\xE4n".split("_")},y=o&&!u?l:d,f=y[r];return a<10?f.replace("%d",y.numbers[a]):f.replace("%d",a)}var e={name:"fi",weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes\xE4kuu_hein\xE4kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kes\xE4_hein\xE4_elo_syys_loka_marras_joulu".split("_"),ordinal:function(a){return a+"."},weekStart:1,yearStart:4,relativeTime:{future:"%s p\xE4\xE4st\xE4",past:"%s sitten",s:i,m:i,mm:i,h:i,hh:i,d:i,dd:i,M:i,MM:i,y:i,yy:i},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM[ta] YYYY",LLL:"D. MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, D. MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"D. MMM YYYY",lll:"D. MMM YYYY, [klo] HH.mm",llll:"ddd, D. MMM YYYY, [klo] HH.mm"}};return s.default.locale(e,null,!0),e})});var Cn=H((st,rt)=>{(function(n,t){typeof st=="object"&&typeof rt<"u"?rt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_fr=t(n.dayjs)})(st,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"fr",weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),months:"janvier_f\xE9vrier_mars_avril_mai_juin_juillet_ao\xFBt_septembre_octobre_novembre_d\xE9cembre".split("_"),monthsShort:"janv._f\xE9vr._mars_avr._mai_juin_juil._ao\xFBt_sept._oct._nov._d\xE9c.".split("_"),weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(e){return""+e+(e===1?"er":"")}};return s.default.locale(i,null,!0),i})});var On=H((at,ut)=>{(function(n,t){typeof at=="object"&&typeof ut<"u"?ut.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_hi=t(n.dayjs)})(at,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"hi",weekdays:"\u0930\u0935\u093F\u0935\u093E\u0930_\u0938\u094B\u092E\u0935\u093E\u0930_\u092E\u0902\u0917\u0932\u0935\u093E\u0930_\u092C\u0941\u0927\u0935\u093E\u0930_\u0917\u0941\u0930\u0942\u0935\u093E\u0930_\u0936\u0941\u0915\u094D\u0930\u0935\u093E\u0930_\u0936\u0928\u093F\u0935\u093E\u0930".split("_"),months:"\u091C\u0928\u0935\u0930\u0940_\u092B\u093C\u0930\u0935\u0930\u0940_\u092E\u093E\u0930\u094D\u091A_\u0905\u092A\u094D\u0930\u0948\u0932_\u092E\u0908_\u091C\u0942\u0928_\u091C\u0941\u0932\u093E\u0908_\u0905\u0917\u0938\u094D\u0924_\u0938\u093F\u0924\u092E\u094D\u092C\u0930_\u0905\u0915\u094D\u091F\u0942\u092C\u0930_\u0928\u0935\u092E\u094D\u092C\u0930_\u0926\u093F\u0938\u092E\u094D\u092C\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093F_\u0938\u094B\u092E_\u092E\u0902\u0917\u0932_\u092C\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094D\u0930_\u0936\u0928\u093F".split("_"),monthsShort:"\u091C\u0928._\u092B\u093C\u0930._\u092E\u093E\u0930\u094D\u091A_\u0905\u092A\u094D\u0930\u0948._\u092E\u0908_\u091C\u0942\u0928_\u091C\u0941\u0932._\u0905\u0917._\u0938\u093F\u0924._\u0905\u0915\u094D\u091F\u0942._\u0928\u0935._\u0926\u093F\u0938.".split("_"),weekdaysMin:"\u0930_\u0938\u094B_\u092E\u0902_\u092C\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),ordinal:function(e){return e},formats:{LT:"A h:mm \u092C\u091C\u0947",LTS:"A h:mm:ss \u092C\u091C\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u092C\u091C\u0947",LLLL:"dddd, D MMMM YYYY, A h:mm \u092C\u091C\u0947"},relativeTime:{future:"%s \u092E\u0947\u0902",past:"%s \u092A\u0939\u0932\u0947",s:"\u0915\u0941\u091B \u0939\u0940 \u0915\u094D\u0937\u0923",m:"\u090F\u0915 \u092E\u093F\u0928\u091F",mm:"%d \u092E\u093F\u0928\u091F",h:"\u090F\u0915 \u0918\u0902\u091F\u093E",hh:"%d \u0918\u0902\u091F\u0947",d:"\u090F\u0915 \u0926\u093F\u0928",dd:"%d \u0926\u093F\u0928",M:"\u090F\u0915 \u092E\u0939\u0940\u0928\u0947",MM:"%d \u092E\u0939\u0940\u0928\u0947",y:"\u090F\u0915 \u0935\u0930\u094D\u0937",yy:"%d \u0935\u0930\u094D\u0937"}};return s.default.locale(i,null,!0),i})});var zn=H((ot,dt)=>{(function(n,t){typeof ot=="object"&&typeof dt<"u"?dt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_hu=t(n.dayjs)})(ot,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"hu",weekdays:"vas\xE1rnap_h\xE9tf\u0151_kedd_szerda_cs\xFCt\xF6rt\xF6k_p\xE9ntek_szombat".split("_"),weekdaysShort:"vas_h\xE9t_kedd_sze_cs\xFCt_p\xE9n_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),months:"janu\xE1r_febru\xE1r_m\xE1rcius_\xE1prilis_m\xE1jus_j\xFAnius_j\xFAlius_augusztus_szeptember_okt\xF3ber_november_december".split("_"),monthsShort:"jan_feb_m\xE1rc_\xE1pr_m\xE1j_j\xFAn_j\xFAl_aug_szept_okt_nov_dec".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"%s m\xFAlva",past:"%s",s:function(e,a,u,r){return"n\xE9h\xE1ny m\xE1sodperc"+(r||a?"":"e")},m:function(e,a,u,r){return"egy perc"+(r||a?"":"e")},mm:function(e,a,u,r){return e+" perc"+(r||a?"":"e")},h:function(e,a,u,r){return"egy "+(r||a?"\xF3ra":"\xF3r\xE1ja")},hh:function(e,a,u,r){return e+" "+(r||a?"\xF3ra":"\xF3r\xE1ja")},d:function(e,a,u,r){return"egy "+(r||a?"nap":"napja")},dd:function(e,a,u,r){return e+" "+(r||a?"nap":"napja")},M:function(e,a,u,r){return"egy "+(r||a?"h\xF3nap":"h\xF3napja")},MM:function(e,a,u,r){return e+" "+(r||a?"h\xF3nap":"h\xF3napja")},y:function(e,a,u,r){return"egy "+(r||a?"\xE9v":"\xE9ve")},yy:function(e,a,u,r){return e+" "+(r||a?"\xE9v":"\xE9ve")}},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"}};return s.default.locale(i,null,!0),i})});var An=H((_t,lt)=>{(function(n,t){typeof _t=="object"&&typeof lt<"u"?lt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_hy_am=t(n.dayjs)})(_t,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"hy-am",weekdays:"\u056F\u056B\u0580\u0561\u056F\u056B_\u0565\u0580\u056F\u0578\u0582\u0577\u0561\u0562\u0569\u056B_\u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056B_\u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056B_\u0570\u056B\u0576\u0563\u0577\u0561\u0562\u0569\u056B_\u0578\u0582\u0580\u0562\u0561\u0569_\u0577\u0561\u0562\u0561\u0569".split("_"),months:"\u0570\u0578\u0582\u0576\u057E\u0561\u0580\u056B_\u0583\u0565\u057F\u0580\u057E\u0561\u0580\u056B_\u0574\u0561\u0580\u057F\u056B_\u0561\u057A\u0580\u056B\u056C\u056B_\u0574\u0561\u0575\u056B\u057D\u056B_\u0570\u0578\u0582\u0576\u056B\u057D\u056B_\u0570\u0578\u0582\u056C\u056B\u057D\u056B_\u0585\u0563\u0578\u057D\u057F\u0578\u057D\u056B_\u057D\u0565\u057A\u057F\u0565\u0574\u0562\u0565\u0580\u056B_\u0570\u0578\u056F\u057F\u0565\u0574\u0562\u0565\u0580\u056B_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580\u056B_\u0564\u0565\u056F\u057F\u0565\u0574\u0562\u0565\u0580\u056B".split("_"),weekStart:1,weekdaysShort:"\u056F\u0580\u056F_\u0565\u0580\u056F_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),monthsShort:"\u0570\u0576\u057E_\u0583\u057F\u0580_\u0574\u0580\u057F_\u0561\u057A\u0580_\u0574\u0575\u057D_\u0570\u0576\u057D_\u0570\u056C\u057D_\u0585\u0563\u057D_\u057D\u057A\u057F_\u0570\u056F\u057F_\u0576\u0574\u0562_\u0564\u056F\u057F".split("_"),weekdaysMin:"\u056F\u0580\u056F_\u0565\u0580\u056F_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0569.",LLL:"D MMMM YYYY \u0569., HH:mm",LLLL:"dddd, D MMMM YYYY \u0569., HH:mm"},relativeTime:{future:"%s \u0570\u0565\u057F\u0578",past:"%s \u0561\u057C\u0561\u057B",s:"\u0574\u056B \u0584\u0561\u0576\u056B \u057E\u0561\u0575\u0580\u056F\u0575\u0561\u0576",m:"\u0580\u0578\u057A\u0565",mm:"%d \u0580\u0578\u057A\u0565",h:"\u056A\u0561\u0574",hh:"%d \u056A\u0561\u0574",d:"\u0585\u0580",dd:"%d \u0585\u0580",M:"\u0561\u0574\u056B\u057D",MM:"%d \u0561\u0574\u056B\u057D",y:"\u057F\u0561\u0580\u056B",yy:"%d \u057F\u0561\u0580\u056B"}};return s.default.locale(i,null,!0),i})});var In=H((ft,mt)=>{(function(n,t){typeof ft=="object"&&typeof mt<"u"?mt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_id=t(n.dayjs)})(ft,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"id",weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),weekStart:1,formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},ordinal:function(e){return e+"."}};return s.default.locale(i,null,!0),i})});var xn=H((ct,ht)=>{(function(n,t){typeof ct=="object"&&typeof ht<"u"?ht.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_it=t(n.dayjs)})(ct,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"it",weekdays:"domenica_luned\xEC_marted\xEC_mercoled\xEC_gioved\xEC_venerd\xEC_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),weekStart:1,monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"tra %s",past:"%s fa",s:"qualche secondo",m:"un minuto",mm:"%d minuti",h:"un' ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinal:function(e){return e+"\xBA"}};return s.default.locale(i,null,!0),i})});var qn=H((Mt,yt)=>{(function(n,t){typeof Mt=="object"&&typeof yt<"u"?yt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_ja=t(n.dayjs)})(Mt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"ja",weekdays:"\u65E5\u66DC\u65E5_\u6708\u66DC\u65E5_\u706B\u66DC\u65E5_\u6C34\u66DC\u65E5_\u6728\u66DC\u65E5_\u91D1\u66DC\u65E5_\u571F\u66DC\u65E5".split("_"),weekdaysShort:"\u65E5_\u6708_\u706B_\u6C34_\u6728_\u91D1_\u571F".split("_"),weekdaysMin:"\u65E5_\u6708_\u706B_\u6C34_\u6728_\u91D1_\u571F".split("_"),months:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),ordinal:function(e){return e+"\u65E5"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5E74M\u6708D\u65E5",LLL:"YYYY\u5E74M\u6708D\u65E5 HH:mm",LLLL:"YYYY\u5E74M\u6708D\u65E5 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY\u5E74M\u6708D\u65E5",lll:"YYYY\u5E74M\u6708D\u65E5 HH:mm",llll:"YYYY\u5E74M\u6708D\u65E5(ddd) HH:mm"},meridiem:function(e){return e<12?"\u5348\u524D":"\u5348\u5F8C"},relativeTime:{future:"%s\u5F8C",past:"%s\u524D",s:"\u6570\u79D2",m:"1\u5206",mm:"%d\u5206",h:"1\u6642\u9593",hh:"%d\u6642\u9593",d:"1\u65E5",dd:"%d\u65E5",M:"1\u30F6\u6708",MM:"%d\u30F6\u6708",y:"1\u5E74",yy:"%d\u5E74"}};return s.default.locale(i,null,!0),i})});var Nn=H((Yt,pt)=>{(function(n,t){typeof Yt=="object"&&typeof pt<"u"?pt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_ka=t(n.dayjs)})(Yt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"ka",weekdays:"\u10D9\u10D5\u10D8\u10E0\u10D0_\u10DD\u10E0\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8_\u10E1\u10D0\u10DB\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8_\u10DD\u10D7\u10EE\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8_\u10EE\u10E3\u10D7\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8_\u10DE\u10D0\u10E0\u10D0\u10E1\u10D9\u10D4\u10D5\u10D8_\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8".split("_"),weekdaysShort:"\u10D9\u10D5\u10D8_\u10DD\u10E0\u10E8_\u10E1\u10D0\u10DB_\u10DD\u10D7\u10EE_\u10EE\u10E3\u10D7_\u10DE\u10D0\u10E0_\u10E8\u10D0\u10D1".split("_"),weekdaysMin:"\u10D9\u10D5_\u10DD\u10E0_\u10E1\u10D0_\u10DD\u10D7_\u10EE\u10E3_\u10DE\u10D0_\u10E8\u10D0".split("_"),months:"\u10D8\u10D0\u10DC\u10D5\u10D0\u10E0\u10D8_\u10D7\u10D4\u10D1\u10D4\u10E0\u10D5\u10D0\u10DA\u10D8_\u10DB\u10D0\u10E0\u10E2\u10D8_\u10D0\u10DE\u10E0\u10D8\u10DA\u10D8_\u10DB\u10D0\u10D8\u10E1\u10D8_\u10D8\u10D5\u10DC\u10D8\u10E1\u10D8_\u10D8\u10D5\u10DA\u10D8\u10E1\u10D8_\u10D0\u10D2\u10D5\u10D8\u10E1\u10E2\u10DD_\u10E1\u10D4\u10E5\u10E2\u10D4\u10DB\u10D1\u10D4\u10E0\u10D8_\u10DD\u10E5\u10E2\u10DD\u10DB\u10D1\u10D4\u10E0\u10D8_\u10DC\u10DD\u10D4\u10DB\u10D1\u10D4\u10E0\u10D8_\u10D3\u10D4\u10D9\u10D4\u10DB\u10D1\u10D4\u10E0\u10D8".split("_"),monthsShort:"\u10D8\u10D0\u10DC_\u10D7\u10D4\u10D1_\u10DB\u10D0\u10E0_\u10D0\u10DE\u10E0_\u10DB\u10D0\u10D8_\u10D8\u10D5\u10DC_\u10D8\u10D5\u10DA_\u10D0\u10D2\u10D5_\u10E1\u10D4\u10E5_\u10DD\u10E5\u10E2_\u10DC\u10DD\u10D4_\u10D3\u10D4\u10D9".split("_"),weekStart:1,formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"%s \u10E8\u10D4\u10DB\u10D3\u10D4\u10D2",past:"%s \u10EC\u10D8\u10DC",s:"\u10EC\u10D0\u10DB\u10D8",m:"\u10EC\u10E3\u10D7\u10D8",mm:"%d \u10EC\u10E3\u10D7\u10D8",h:"\u10E1\u10D0\u10D0\u10D7\u10D8",hh:"%d \u10E1\u10D0\u10D0\u10D7\u10D8\u10E1",d:"\u10D3\u10E6\u10D4\u10E1",dd:"%d \u10D3\u10E6\u10D8\u10E1 \u10D2\u10D0\u10DC\u10DB\u10D0\u10D5\u10DA\u10DD\u10D1\u10D0\u10E8\u10D8",M:"\u10D7\u10D5\u10D8\u10E1",MM:"%d \u10D7\u10D5\u10D8\u10E1",y:"\u10EC\u10D4\u10DA\u10D8",yy:"%d \u10EC\u10DA\u10D8\u10E1"},ordinal:function(e){return e}};return s.default.locale(i,null,!0),i})});var En=H((Dt,Lt)=>{(function(n,t){typeof Dt=="object"&&typeof Lt<"u"?Lt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_km=t(n.dayjs)})(Dt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"km",weekdays:"\u17A2\u17B6\u1791\u17B7\u178F\u17D2\u1799_\u1785\u17D0\u1793\u17D2\u1791_\u17A2\u1784\u17D2\u1782\u17B6\u179A_\u1796\u17BB\u1792_\u1796\u17D2\u179A\u17A0\u179F\u17D2\u1794\u178F\u17B7\u17CD_\u179F\u17BB\u1780\u17D2\u179A_\u179F\u17C5\u179A\u17CD".split("_"),months:"\u1798\u1780\u179A\u17B6_\u1780\u17BB\u1798\u17D2\u1797\u17C8_\u1798\u17B8\u1793\u17B6_\u1798\u17C1\u179F\u17B6_\u17A7\u179F\u1797\u17B6_\u1798\u17B7\u1790\u17BB\u1793\u17B6_\u1780\u1780\u17D2\u1780\u178A\u17B6_\u179F\u17B8\u17A0\u17B6_\u1780\u1789\u17D2\u1789\u17B6_\u178F\u17BB\u179B\u17B6_\u179C\u17B7\u1785\u17D2\u1786\u17B7\u1780\u17B6_\u1792\u17D2\u1793\u17BC".split("_"),weekStart:1,weekdaysShort:"\u17A2\u17B6_\u1785_\u17A2_\u1796_\u1796\u17D2\u179A_\u179F\u17BB_\u179F".split("_"),monthsShort:"\u1798\u1780\u179A\u17B6_\u1780\u17BB\u1798\u17D2\u1797\u17C8_\u1798\u17B8\u1793\u17B6_\u1798\u17C1\u179F\u17B6_\u17A7\u179F\u1797\u17B6_\u1798\u17B7\u1790\u17BB\u1793\u17B6_\u1780\u1780\u17D2\u1780\u178A\u17B6_\u179F\u17B8\u17A0\u17B6_\u1780\u1789\u17D2\u1789\u17B6_\u178F\u17BB\u179B\u17B6_\u179C\u17B7\u1785\u17D2\u1786\u17B7\u1780\u17B6_\u1792\u17D2\u1793\u17BC".split("_"),weekdaysMin:"\u17A2\u17B6_\u1785_\u17A2_\u1796_\u1796\u17D2\u179A_\u179F\u17BB_\u179F".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%s\u1791\u17C0\u178F",past:"%s\u1798\u17BB\u1793",s:"\u1794\u17C9\u17BB\u1793\u17D2\u1798\u17B6\u1793\u179C\u17B7\u1793\u17B6\u1791\u17B8",m:"\u1798\u17BD\u1799\u1793\u17B6\u1791\u17B8",mm:"%d \u1793\u17B6\u1791\u17B8",h:"\u1798\u17BD\u1799\u1798\u17C9\u17C4\u1784",hh:"%d \u1798\u17C9\u17C4\u1784",d:"\u1798\u17BD\u1799\u1790\u17D2\u1784\u17C3",dd:"%d \u1790\u17D2\u1784\u17C3",M:"\u1798\u17BD\u1799\u1781\u17C2",MM:"%d \u1781\u17C2",y:"\u1798\u17BD\u1799\u1786\u17D2\u1793\u17B6\u17C6",yy:"%d \u1786\u17D2\u1793\u17B6\u17C6"}};return s.default.locale(i,null,!0),i})});var Fn=H((vt,gt)=>{(function(n,t){typeof vt=="object"&&typeof gt<"u"?gt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_lt=t(n.dayjs)})(vt,function(n){"use strict";function t(o){return o&&typeof o=="object"&&"default"in o?o:{default:o}}var s=t(n),i="sausio_vasario_kovo_baland\u017Eio_gegu\u017E\u0117s_bir\u017Eelio_liepos_rugpj\u016B\u010Dio_rugs\u0117jo_spalio_lapkri\u010Dio_gruod\u017Eio".split("_"),e="sausis_vasaris_kovas_balandis_gegu\u017E\u0117_bir\u017Eelis_liepa_rugpj\u016Btis_rugs\u0117jis_spalis_lapkritis_gruodis".split("_"),a=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/,u=function(o,d){return a.test(d)?i[o.month()]:e[o.month()]};u.s=e,u.f=i;var r={name:"lt",weekdays:"sekmadienis_pirmadienis_antradienis_tre\u010Diadienis_ketvirtadienis_penktadienis_\u0161e\u0161tadienis".split("_"),weekdaysShort:"sek_pir_ant_tre_ket_pen_\u0161e\u0161".split("_"),weekdaysMin:"s_p_a_t_k_pn_\u0161".split("_"),months:u,monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),ordinal:function(o){return o+"."},weekStart:1,relativeTime:{future:"u\u017E %s",past:"prie\u0161 %s",s:"kelias sekundes",m:"minut\u0119",mm:"%d minutes",h:"valand\u0105",hh:"%d valandas",d:"dien\u0105",dd:"%d dienas",M:"m\u0117nes\u012F",MM:"%d m\u0117nesius",y:"metus",yy:"%d metus"},format:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"}};return s.default.locale(r,null,!0),r})});var Jn=H((St,bt)=>{(function(n,t){typeof St=="object"&&typeof bt<"u"?bt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_lv=t(n.dayjs)})(St,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"lv",weekdays:"sv\u0113tdiena_pirmdiena_otrdiena_tre\u0161diena_ceturtdiena_piektdiena_sestdiena".split("_"),months:"janv\u0101ris_febru\u0101ris_marts_apr\u012Blis_maijs_j\u016Bnijs_j\u016Blijs_augusts_septembris_oktobris_novembris_decembris".split("_"),weekStart:1,weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),monthsShort:"jan_feb_mar_apr_mai_j\u016Bn_j\u016Bl_aug_sep_okt_nov_dec".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},relativeTime:{future:"p\u0113c %s",past:"pirms %s",s:"da\u017E\u0101m sekund\u0113m",m:"min\u016Btes",mm:"%d min\u016Bt\u0113m",h:"stundas",hh:"%d stund\u0101m",d:"dienas",dd:"%d dien\u0101m",M:"m\u0113ne\u0161a",MM:"%d m\u0113ne\u0161iem",y:"gada",yy:"%d gadiem"}};return s.default.locale(i,null,!0),i})});var Un=H((kt,Ht)=>{(function(n,t){typeof kt=="object"&&typeof Ht<"u"?Ht.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_ms=t(n.dayjs)})(kt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"ms",weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekStart:1,formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH.mm",LLLL:"dddd, D MMMM YYYY HH.mm"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},ordinal:function(e){return e+"."}};return s.default.locale(i,null,!0),i})});var Pn=H((jt,Tt)=>{(function(n,t){typeof jt=="object"&&typeof Tt<"u"?Tt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_my=t(n.dayjs)})(jt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"my",weekdays:"\u1010\u1014\u1004\u103A\u1039\u1002\u1014\u103D\u1031_\u1010\u1014\u1004\u103A\u1039\u101C\u102C_\u1021\u1004\u103A\u1039\u1002\u102B_\u1017\u102F\u1012\u1039\u1013\u101F\u1030\u1038_\u1000\u103C\u102C\u101E\u1015\u1010\u1031\u1038_\u101E\u1031\u102C\u1000\u103C\u102C_\u1005\u1014\u1031".split("_"),months:"\u1007\u1014\u103A\u1014\u101D\u102B\u101B\u102E_\u1016\u1031\u1016\u1031\u102C\u103A\u101D\u102B\u101B\u102E_\u1019\u1010\u103A_\u1027\u1015\u103C\u102E_\u1019\u1031_\u1007\u103D\u1014\u103A_\u1007\u1030\u101C\u102D\u102F\u1004\u103A_\u101E\u103C\u1002\u102F\u1010\u103A_\u1005\u1000\u103A\u1010\u1004\u103A\u1018\u102C_\u1021\u1031\u102C\u1000\u103A\u1010\u102D\u102F\u1018\u102C_\u1014\u102D\u102F\u101D\u1004\u103A\u1018\u102C_\u1012\u102E\u1007\u1004\u103A\u1018\u102C".split("_"),weekStart:1,weekdaysShort:"\u1014\u103D\u1031_\u101C\u102C_\u1002\u102B_\u101F\u1030\u1038_\u1000\u103C\u102C_\u101E\u1031\u102C_\u1014\u1031".split("_"),monthsShort:"\u1007\u1014\u103A_\u1016\u1031_\u1019\u1010\u103A_\u1015\u103C\u102E_\u1019\u1031_\u1007\u103D\u1014\u103A_\u101C\u102D\u102F\u1004\u103A_\u101E\u103C_\u1005\u1000\u103A_\u1021\u1031\u102C\u1000\u103A_\u1014\u102D\u102F_\u1012\u102E".split("_"),weekdaysMin:"\u1014\u103D\u1031_\u101C\u102C_\u1002\u102B_\u101F\u1030\u1038_\u1000\u103C\u102C_\u101E\u1031\u102C_\u1014\u1031".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"\u101C\u102C\u1019\u100A\u103A\u1037 %s \u1019\u103E\u102C",past:"\u101C\u103D\u1014\u103A\u1001\u1032\u1037\u101E\u1031\u102C %s \u1000",s:"\u1005\u1000\u1039\u1000\u1014\u103A.\u1021\u1014\u100A\u103A\u1038\u1004\u101A\u103A",m:"\u1010\u1005\u103A\u1019\u102D\u1014\u1005\u103A",mm:"%d \u1019\u102D\u1014\u1005\u103A",h:"\u1010\u1005\u103A\u1014\u102C\u101B\u102E",hh:"%d \u1014\u102C\u101B\u102E",d:"\u1010\u1005\u103A\u101B\u1000\u103A",dd:"%d \u101B\u1000\u103A",M:"\u1010\u1005\u103A\u101C",MM:"%d \u101C",y:"\u1010\u1005\u103A\u1014\u103E\u1005\u103A",yy:"%d \u1014\u103E\u1005\u103A"}};return s.default.locale(i,null,!0),i})});var Wn=H((wt,$t)=>{(function(n,t){typeof wt=="object"&&typeof $t<"u"?$t.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_nl=t(n.dayjs)})(wt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"nl",weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),ordinal:function(e){return"["+e+(e===1||e===8||e>=20?"ste":"de")+"]"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"een minuut",mm:"%d minuten",h:"een uur",hh:"%d uur",d:"een dag",dd:"%d dagen",M:"een maand",MM:"%d maanden",y:"een jaar",yy:"%d jaar"}};return s.default.locale(i,null,!0),i})});var Rn=H((Ct,Ot)=>{(function(n,t){typeof Ct=="object"&&typeof Ot<"u"?Ot.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_pl=t(n.dayjs)})(Ct,function(n){"use strict";function t(l){return l&&typeof l=="object"&&"default"in l?l:{default:l}}var s=t(n);function i(l){return l%10<5&&l%10>1&&~~(l/10)%10!=1}function e(l,y,f){var _=l+" ";switch(f){case"m":return y?"minuta":"minut\u0119";case"mm":return _+(i(l)?"minuty":"minut");case"h":return y?"godzina":"godzin\u0119";case"hh":return _+(i(l)?"godziny":"godzin");case"MM":return _+(i(l)?"miesi\u0105ce":"miesi\u0119cy");case"yy":return _+(i(l)?"lata":"lat")}}var a="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015Bnia_pa\u017Adziernika_listopada_grudnia".split("_"),u="stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017Adziernik_listopad_grudzie\u0144".split("_"),r=/D MMMM/,o=function(l,y){return r.test(y)?a[l.month()]:u[l.month()]};o.s=u,o.f=a;var d={name:"pl",weekdays:"niedziela_poniedzia\u0142ek_wtorek_\u015Broda_czwartek_pi\u0105tek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_\u015Br_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_\u015Ar_Cz_Pt_So".split("_"),months:o,monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa\u017A_lis_gru".split("_"),ordinal:function(l){return l+"."},weekStart:1,yearStart:4,relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:e,mm:e,h:e,hh:e,d:"1 dzie\u0144",dd:"%d dni",M:"miesi\u0105c",MM:e,y:"rok",yy:e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return s.default.locale(d,null,!0),d})});var Zn=H((zt,At)=>{(function(n,t){typeof zt=="object"&&typeof At<"u"?At.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_pt_br=t(n.dayjs)})(zt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"pt-br",weekdays:"domingo_segunda-feira_ter\xE7a-feira_quarta-feira_quinta-feira_sexta-feira_s\xE1bado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_s\xE1b".split("_"),weekdaysMin:"Do_2\xAA_3\xAA_4\xAA_5\xAA_6\xAA_S\xE1".split("_"),months:"janeiro_fevereiro_mar\xE7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),ordinal:function(e){return e+"\xBA"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [\xE0s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [\xE0s] HH:mm"},relativeTime:{future:"em %s",past:"h\xE1 %s",s:"poucos segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xEAs",MM:"%d meses",y:"um ano",yy:"%d anos"}};return s.default.locale(i,null,!0),i})});var Vn=H((It,xt)=>{(function(n,t){typeof It=="object"&&typeof xt<"u"?xt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_pt=t(n.dayjs)})(It,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"pt",weekdays:"domingo_segunda-feira_ter\xE7a-feira_quarta-feira_quinta-feira_sexta-feira_s\xE1bado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sab".split("_"),weekdaysMin:"Do_2\xAA_3\xAA_4\xAA_5\xAA_6\xAA_Sa".split("_"),months:"janeiro_fevereiro_mar\xE7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),ordinal:function(e){return e+"\xBA"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [\xE0s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [\xE0s] HH:mm"},relativeTime:{future:"em %s",past:"h\xE1 %s",s:"alguns segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xEAs",MM:"%d meses",y:"um ano",yy:"%d anos"}};return s.default.locale(i,null,!0),i})});var Gn=H((qt,Nt)=>{(function(n,t){typeof qt=="object"&&typeof Nt<"u"?Nt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_ro=t(n.dayjs)})(qt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"ro",weekdays:"Duminic\u0103_Luni_Mar\u021Bi_Miercuri_Joi_Vineri_S\xE2mb\u0103t\u0103".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_S\xE2m".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_S\xE2".split("_"),months:"Ianuarie_Februarie_Martie_Aprilie_Mai_Iunie_Iulie_August_Septembrie_Octombrie_Noiembrie_Decembrie".split("_"),monthsShort:"Ian._Febr._Mart._Apr._Mai_Iun._Iul._Aug._Sept._Oct._Nov._Dec.".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},relativeTime:{future:"peste %s",past:"acum %s",s:"c\xE2teva secunde",m:"un minut",mm:"%d minute",h:"o or\u0103",hh:"%d ore",d:"o zi",dd:"%d zile",M:"o lun\u0103",MM:"%d luni",y:"un an",yy:"%d ani"},ordinal:function(e){return e}};return s.default.locale(i,null,!0),i})});var Kn=H((Et,Ft)=>{(function(n,t){typeof Et=="object"&&typeof Ft<"u"?Ft.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_ru=t(n.dayjs)})(Et,function(n){"use strict";function t(f){return f&&typeof f=="object"&&"default"in f?f:{default:f}}var s=t(n),i="\u044F\u043D\u0432\u0430\u0440\u044F_\u0444\u0435\u0432\u0440\u0430\u043B\u044F_\u043C\u0430\u0440\u0442\u0430_\u0430\u043F\u0440\u0435\u043B\u044F_\u043C\u0430\u044F_\u0438\u044E\u043D\u044F_\u0438\u044E\u043B\u044F_\u0430\u0432\u0433\u0443\u0441\u0442\u0430_\u0441\u0435\u043D\u0442\u044F\u0431\u0440\u044F_\u043E\u043A\u0442\u044F\u0431\u0440\u044F_\u043D\u043E\u044F\u0431\u0440\u044F_\u0434\u0435\u043A\u0430\u0431\u0440\u044F".split("_"),e="\u044F\u043D\u0432\u0430\u0440\u044C_\u0444\u0435\u0432\u0440\u0430\u043B\u044C_\u043C\u0430\u0440\u0442_\u0430\u043F\u0440\u0435\u043B\u044C_\u043C\u0430\u0439_\u0438\u044E\u043D\u044C_\u0438\u044E\u043B\u044C_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043D\u0442\u044F\u0431\u0440\u044C_\u043E\u043A\u0442\u044F\u0431\u0440\u044C_\u043D\u043E\u044F\u0431\u0440\u044C_\u0434\u0435\u043A\u0430\u0431\u0440\u044C".split("_"),a="\u044F\u043D\u0432._\u0444\u0435\u0432\u0440._\u043C\u0430\u0440._\u0430\u043F\u0440._\u043C\u0430\u044F_\u0438\u044E\u043D\u044F_\u0438\u044E\u043B\u044F_\u0430\u0432\u0433._\u0441\u0435\u043D\u0442._\u043E\u043A\u0442._\u043D\u043E\u044F\u0431._\u0434\u0435\u043A.".split("_"),u="\u044F\u043D\u0432._\u0444\u0435\u0432\u0440._\u043C\u0430\u0440\u0442_\u0430\u043F\u0440._\u043C\u0430\u0439_\u0438\u044E\u043D\u044C_\u0438\u044E\u043B\u044C_\u0430\u0432\u0433._\u0441\u0435\u043D\u0442._\u043E\u043A\u0442._\u043D\u043E\u044F\u0431._\u0434\u0435\u043A.".split("_"),r=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;function o(f,_,h){var D,p;return h==="m"?_?"\u043C\u0438\u043D\u0443\u0442\u0430":"\u043C\u0438\u043D\u0443\u0442\u0443":f+" "+(D=+f,p={mm:_?"\u043C\u0438\u043D\u0443\u0442\u0430_\u043C\u0438\u043D\u0443\u0442\u044B_\u043C\u0438\u043D\u0443\u0442":"\u043C\u0438\u043D\u0443\u0442\u0443_\u043C\u0438\u043D\u0443\u0442\u044B_\u043C\u0438\u043D\u0443\u0442",hh:"\u0447\u0430\u0441_\u0447\u0430\u0441\u0430_\u0447\u0430\u0441\u043E\u0432",dd:"\u0434\u0435\u043D\u044C_\u0434\u043D\u044F_\u0434\u043D\u0435\u0439",MM:"\u043C\u0435\u0441\u044F\u0446_\u043C\u0435\u0441\u044F\u0446\u0430_\u043C\u0435\u0441\u044F\u0446\u0435\u0432",yy:"\u0433\u043E\u0434_\u0433\u043E\u0434\u0430_\u043B\u0435\u0442"}[h].split("_"),D%10==1&&D%100!=11?p[0]:D%10>=2&&D%10<=4&&(D%100<10||D%100>=20)?p[1]:p[2])}var d=function(f,_){return r.test(_)?i[f.month()]:e[f.month()]};d.s=e,d.f=i;var l=function(f,_){return r.test(_)?a[f.month()]:u[f.month()]};l.s=u,l.f=a;var y={name:"ru",weekdays:"\u0432\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u044C\u0435_\u043F\u043E\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A_\u0432\u0442\u043E\u0440\u043D\u0438\u043A_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043F\u044F\u0442\u043D\u0438\u0446\u0430_\u0441\u0443\u0431\u0431\u043E\u0442\u0430".split("_"),weekdaysShort:"\u0432\u0441\u043A_\u043F\u043D\u0434_\u0432\u0442\u0440_\u0441\u0440\u0434_\u0447\u0442\u0432_\u043F\u0442\u043D_\u0441\u0431\u0442".split("_"),weekdaysMin:"\u0432\u0441_\u043F\u043D_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043F\u0442_\u0441\u0431".split("_"),months:d,monthsShort:l,weekStart:1,yearStart:4,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., H:mm",LLLL:"dddd, D MMMM YYYY \u0433., H:mm"},relativeTime:{future:"\u0447\u0435\u0440\u0435\u0437 %s",past:"%s \u043D\u0430\u0437\u0430\u0434",s:"\u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0441\u0435\u043A\u0443\u043D\u0434",m:o,mm:o,h:"\u0447\u0430\u0441",hh:o,d:"\u0434\u0435\u043D\u044C",dd:o,M:"\u043C\u0435\u0441\u044F\u0446",MM:o,y:"\u0433\u043E\u0434",yy:o},ordinal:function(f){return f},meridiem:function(f){return f<4?"\u043D\u043E\u0447\u0438":f<12?"\u0443\u0442\u0440\u0430":f<17?"\u0434\u043D\u044F":"\u0432\u0435\u0447\u0435\u0440\u0430"}};return s.default.locale(y,null,!0),y})});var Bn=H((Jt,Ut)=>{(function(n,t){typeof Jt=="object"&&typeof Ut<"u"?Ut.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_sv=t(n.dayjs)})(Jt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"sv",weekdays:"s\xF6ndag_m\xE5ndag_tisdag_onsdag_torsdag_fredag_l\xF6rdag".split("_"),weekdaysShort:"s\xF6n_m\xE5n_tis_ons_tor_fre_l\xF6r".split("_"),weekdaysMin:"s\xF6_m\xE5_ti_on_to_fr_l\xF6".split("_"),months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekStart:1,yearStart:4,ordinal:function(e){var a=e%10;return"["+e+(a===1||a===2?"a":"e")+"]"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},relativeTime:{future:"om %s",past:"f\xF6r %s sedan",s:"n\xE5gra sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en m\xE5nad",MM:"%d m\xE5nader",y:"ett \xE5r",yy:"%d \xE5r"}};return s.default.locale(i,null,!0),i})});var Xn=H((Pt,Wt)=>{(function(n,t){typeof Pt=="object"&&typeof Wt<"u"?Wt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_tr=t(n.dayjs)})(Pt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"tr",weekdays:"Pazar_Pazartesi_Sal\u0131_\xC7ar\u015Famba_Per\u015Fembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_\xC7ar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_\xC7a_Pe_Cu_Ct".split("_"),months:"Ocak_\u015Eubat_Mart_Nisan_May\u0131s_Haziran_Temmuz_A\u011Fustos_Eyl\xFCl_Ekim_Kas\u0131m_Aral\u0131k".split("_"),monthsShort:"Oca_\u015Eub_Mar_Nis_May_Haz_Tem_A\u011Fu_Eyl_Eki_Kas_Ara".split("_"),weekStart:1,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%s sonra",past:"%s \xF6nce",s:"birka\xE7 saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir g\xFCn",dd:"%d g\xFCn",M:"bir ay",MM:"%d ay",y:"bir y\u0131l",yy:"%d y\u0131l"},ordinal:function(e){return e+"."}};return s.default.locale(i,null,!0),i})});var Qn=H((Rt,Zt)=>{(function(n,t){typeof Rt=="object"&&typeof Zt<"u"?Zt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_uk=t(n.dayjs)})(Rt,function(n){"use strict";function t(d){return d&&typeof d=="object"&&"default"in d?d:{default:d}}var s=t(n),i="\u0441\u0456\u0447\u043D\u044F_\u043B\u044E\u0442\u043E\u0433\u043E_\u0431\u0435\u0440\u0435\u0437\u043D\u044F_\u043A\u0432\u0456\u0442\u043D\u044F_\u0442\u0440\u0430\u0432\u043D\u044F_\u0447\u0435\u0440\u0432\u043D\u044F_\u043B\u0438\u043F\u043D\u044F_\u0441\u0435\u0440\u043F\u043D\u044F_\u0432\u0435\u0440\u0435\u0441\u043D\u044F_\u0436\u043E\u0432\u0442\u043D\u044F_\u043B\u0438\u0441\u0442\u043E\u043F\u0430\u0434\u0430_\u0433\u0440\u0443\u0434\u043D\u044F".split("_"),e="\u0441\u0456\u0447\u0435\u043D\u044C_\u043B\u044E\u0442\u0438\u0439_\u0431\u0435\u0440\u0435\u0437\u0435\u043D\u044C_\u043A\u0432\u0456\u0442\u0435\u043D\u044C_\u0442\u0440\u0430\u0432\u0435\u043D\u044C_\u0447\u0435\u0440\u0432\u0435\u043D\u044C_\u043B\u0438\u043F\u0435\u043D\u044C_\u0441\u0435\u0440\u043F\u0435\u043D\u044C_\u0432\u0435\u0440\u0435\u0441\u0435\u043D\u044C_\u0436\u043E\u0432\u0442\u0435\u043D\u044C_\u043B\u0438\u0441\u0442\u043E\u043F\u0430\u0434_\u0433\u0440\u0443\u0434\u0435\u043D\u044C".split("_"),a=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;function u(d,l,y){var f,_;return y==="m"?l?"\u0445\u0432\u0438\u043B\u0438\u043D\u0430":"\u0445\u0432\u0438\u043B\u0438\u043D\u0443":y==="h"?l?"\u0433\u043E\u0434\u0438\u043D\u0430":"\u0433\u043E\u0434\u0438\u043D\u0443":d+" "+(f=+d,_={ss:l?"\u0441\u0435\u043A\u0443\u043D\u0434\u0430_\u0441\u0435\u043A\u0443\u043D\u0434\u0438_\u0441\u0435\u043A\u0443\u043D\u0434":"\u0441\u0435\u043A\u0443\u043D\u0434\u0443_\u0441\u0435\u043A\u0443\u043D\u0434\u0438_\u0441\u0435\u043A\u0443\u043D\u0434",mm:l?"\u0445\u0432\u0438\u043B\u0438\u043D\u0430_\u0445\u0432\u0438\u043B\u0438\u043D\u0438_\u0445\u0432\u0438\u043B\u0438\u043D":"\u0445\u0432\u0438\u043B\u0438\u043D\u0443_\u0445\u0432\u0438\u043B\u0438\u043D\u0438_\u0445\u0432\u0438\u043B\u0438\u043D",hh:l?"\u0433\u043E\u0434\u0438\u043D\u0430_\u0433\u043E\u0434\u0438\u043D\u0438_\u0433\u043E\u0434\u0438\u043D":"\u0433\u043E\u0434\u0438\u043D\u0443_\u0433\u043E\u0434\u0438\u043D\u0438_\u0433\u043E\u0434\u0438\u043D",dd:"\u0434\u0435\u043D\u044C_\u0434\u043D\u0456_\u0434\u043D\u0456\u0432",MM:"\u043C\u0456\u0441\u044F\u0446\u044C_\u043C\u0456\u0441\u044F\u0446\u0456_\u043C\u0456\u0441\u044F\u0446\u0456\u0432",yy:"\u0440\u0456\u043A_\u0440\u043E\u043A\u0438_\u0440\u043E\u043A\u0456\u0432"}[y].split("_"),f%10==1&&f%100!=11?_[0]:f%10>=2&&f%10<=4&&(f%100<10||f%100>=20)?_[1]:_[2])}var r=function(d,l){return a.test(l)?i[d.month()]:e[d.month()]};r.s=e,r.f=i;var o={name:"uk",weekdays:"\u043D\u0435\u0434\u0456\u043B\u044F_\u043F\u043E\u043D\u0435\u0434\u0456\u043B\u043E\u043A_\u0432\u0456\u0432\u0442\u043E\u0440\u043E\u043A_\u0441\u0435\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440_\u043F\u2019\u044F\u0442\u043D\u0438\u0446\u044F_\u0441\u0443\u0431\u043E\u0442\u0430".split("_"),weekdaysShort:"\u043D\u0434\u043B_\u043F\u043D\u0434_\u0432\u0442\u0440_\u0441\u0440\u0434_\u0447\u0442\u0432_\u043F\u0442\u043D_\u0441\u0431\u0442".split("_"),weekdaysMin:"\u043D\u0434_\u043F\u043D_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043F\u0442_\u0441\u0431".split("_"),months:r,monthsShort:"\u0441\u0456\u0447_\u043B\u044E\u0442_\u0431\u0435\u0440_\u043A\u0432\u0456\u0442_\u0442\u0440\u0430\u0432_\u0447\u0435\u0440\u0432_\u043B\u0438\u043F_\u0441\u0435\u0440\u043F_\u0432\u0435\u0440_\u0436\u043E\u0432\u0442_\u043B\u0438\u0441\u0442_\u0433\u0440\u0443\u0434".split("_"),weekStart:1,relativeTime:{future:"\u0437\u0430 %s",past:"%s \u0442\u043E\u043C\u0443",s:"\u0434\u0435\u043A\u0456\u043B\u044C\u043A\u0430 \u0441\u0435\u043A\u0443\u043D\u0434",m:u,mm:u,h:u,hh:u,d:"\u0434\u0435\u043D\u044C",dd:u,M:"\u043C\u0456\u0441\u044F\u0446\u044C",MM:u,y:"\u0440\u0456\u043A",yy:u},ordinal:function(d){return d},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0440.",LLL:"D MMMM YYYY \u0440., HH:mm",LLLL:"dddd, D MMMM YYYY \u0440., HH:mm"}};return s.default.locale(o,null,!0),o})});var ei=H((Vt,Gt)=>{(function(n,t){typeof Vt=="object"&&typeof Gt<"u"?Gt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_vi=t(n.dayjs)})(Vt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"vi",weekdays:"ch\u1EE7 nh\u1EADt_th\u1EE9 hai_th\u1EE9 ba_th\u1EE9 t\u01B0_th\u1EE9 n\u0103m_th\u1EE9 s\xE1u_th\u1EE9 b\u1EA3y".split("_"),months:"th\xE1ng 1_th\xE1ng 2_th\xE1ng 3_th\xE1ng 4_th\xE1ng 5_th\xE1ng 6_th\xE1ng 7_th\xE1ng 8_th\xE1ng 9_th\xE1ng 10_th\xE1ng 11_th\xE1ng 12".split("_"),weekStart:1,weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [n\u0103m] YYYY",LLL:"D MMMM [n\u0103m] YYYY HH:mm",LLLL:"dddd, D MMMM [n\u0103m] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},relativeTime:{future:"%s t\u1EDBi",past:"%s tr\u01B0\u1EDBc",s:"v\xE0i gi\xE2y",m:"m\u1ED9t ph\xFAt",mm:"%d ph\xFAt",h:"m\u1ED9t gi\u1EDD",hh:"%d gi\u1EDD",d:"m\u1ED9t ng\xE0y",dd:"%d ng\xE0y",M:"m\u1ED9t th\xE1ng",MM:"%d th\xE1ng",y:"m\u1ED9t n\u0103m",yy:"%d n\u0103m"}};return s.default.locale(i,null,!0),i})});var ti=H((Kt,Bt)=>{(function(n,t){typeof Kt=="object"&&typeof Bt<"u"?Bt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_zh_cn=t(n.dayjs)})(Kt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"zh-cn",weekdays:"\u661F\u671F\u65E5_\u661F\u671F\u4E00_\u661F\u671F\u4E8C_\u661F\u671F\u4E09_\u661F\u671F\u56DB_\u661F\u671F\u4E94_\u661F\u671F\u516D".split("_"),weekdaysShort:"\u5468\u65E5_\u5468\u4E00_\u5468\u4E8C_\u5468\u4E09_\u5468\u56DB_\u5468\u4E94_\u5468\u516D".split("_"),weekdaysMin:"\u65E5_\u4E00_\u4E8C_\u4E09_\u56DB_\u4E94_\u516D".split("_"),months:"\u4E00\u6708_\u4E8C\u6708_\u4E09\u6708_\u56DB\u6708_\u4E94\u6708_\u516D\u6708_\u4E03\u6708_\u516B\u6708_\u4E5D\u6708_\u5341\u6708_\u5341\u4E00\u6708_\u5341\u4E8C\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),ordinal:function(e,a){return a==="W"?e+"\u5468":e+"\u65E5"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5E74M\u6708D\u65E5",LLL:"YYYY\u5E74M\u6708D\u65E5Ah\u70B9mm\u5206",LLLL:"YYYY\u5E74M\u6708D\u65E5ddddAh\u70B9mm\u5206",l:"YYYY/M/D",ll:"YYYY\u5E74M\u6708D\u65E5",lll:"YYYY\u5E74M\u6708D\u65E5 HH:mm",llll:"YYYY\u5E74M\u6708D\u65E5dddd HH:mm"},relativeTime:{future:"%s\u5185",past:"%s\u524D",s:"\u51E0\u79D2",m:"1 \u5206\u949F",mm:"%d \u5206\u949F",h:"1 \u5C0F\u65F6",hh:"%d \u5C0F\u65F6",d:"1 \u5929",dd:"%d \u5929",M:"1 \u4E2A\u6708",MM:"%d \u4E2A\u6708",y:"1 \u5E74",yy:"%d \u5E74"},meridiem:function(e,a){var u=100*e+a;return u<600?"\u51CC\u6668":u<900?"\u65E9\u4E0A":u<1100?"\u4E0A\u5348":u<1300?"\u4E2D\u5348":u<1800?"\u4E0B\u5348":"\u665A\u4E0A"}};return s.default.locale(i,null,!0),i})});var ni=H((Xt,Qt)=>{(function(n,t){typeof Xt=="object"&&typeof Qt<"u"?Qt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_zh_tw=t(n.dayjs)})(Xt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"zh-tw",weekdays:"\u661F\u671F\u65E5_\u661F\u671F\u4E00_\u661F\u671F\u4E8C_\u661F\u671F\u4E09_\u661F\u671F\u56DB_\u661F\u671F\u4E94_\u661F\u671F\u516D".split("_"),weekdaysShort:"\u9031\u65E5_\u9031\u4E00_\u9031\u4E8C_\u9031\u4E09_\u9031\u56DB_\u9031\u4E94_\u9031\u516D".split("_"),weekdaysMin:"\u65E5_\u4E00_\u4E8C_\u4E09_\u56DB_\u4E94_\u516D".split("_"),months:"\u4E00\u6708_\u4E8C\u6708_\u4E09\u6708_\u56DB\u6708_\u4E94\u6708_\u516D\u6708_\u4E03\u6708_\u516B\u6708_\u4E5D\u6708_\u5341\u6708_\u5341\u4E00\u6708_\u5341\u4E8C\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),ordinal:function(e,a){return a==="W"?e+"\u9031":e+"\u65E5"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5E74M\u6708D\u65E5",LLL:"YYYY\u5E74M\u6708D\u65E5 HH:mm",LLLL:"YYYY\u5E74M\u6708D\u65E5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5E74M\u6708D\u65E5",lll:"YYYY\u5E74M\u6708D\u65E5 HH:mm",llll:"YYYY\u5E74M\u6708D\u65E5dddd HH:mm"},relativeTime:{future:"%s\u5167",past:"%s\u524D",s:"\u5E7E\u79D2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5C0F\u6642",hh:"%d \u5C0F\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500B\u6708",MM:"%d \u500B\u6708",y:"1 \u5E74",yy:"%d \u5E74"},meridiem:function(e,a){var u=100*e+a;return u<600?"\u51CC\u6668":u<900?"\u65E9\u4E0A":u<1100?"\u4E0A\u5348":u<1300?"\u4E2D\u5348":u<1800?"\u4E0B\u5348":"\u665A\u4E0A"}};return s.default.locale(i,null,!0),i})});var tn=60,nn=tn*60,sn=nn*24,ci=sn*7,ae=1e3,fe=tn*ae,pe=nn*ae,rn=sn*ae,an=ci*ae,de="millisecond",ne="second",ie="minute",se="hour",K="day",oe="week",R="month",me="quarter",B="year",re="date",un="YYYY-MM-DDTHH:mm:ssZ",De="Invalid Date",on=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,dn=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g;var ln={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var s=["th","st","nd","rd"],i=t%100;return"["+t+(s[(i-20)%10]||s[i]||s[0])+"]"}};var Le=function(t,s,i){var e=String(t);return!e||e.length>=s?t:""+Array(s+1-e.length).join(i)+t},hi=function(t){var s=-t.utcOffset(),i=Math.abs(s),e=Math.floor(i/60),a=i%60;return(s<=0?"+":"-")+Le(e,2,"0")+":"+Le(a,2,"0")},Mi=function n(t,s){if(t.date()1)return n(u[0])}else{var r=t.name;ue[r]=t,e=r}return!i&&e&&(_e=e),e||!i&&_e},J=function(t,s){if(ve(t))return t.clone();var i=typeof s=="object"?s:{};return i.date=t,i.args=arguments,new he(i)},Di=function(t,s){return J(t,{locale:s.$L,utc:s.$u,x:s.$x,$offset:s.$offset})},z=fn;z.l=ce;z.i=ve;z.w=Di;var Li=function(t){var s=t.date,i=t.utc;if(s===null)return new Date(NaN);if(z.u(s))return new Date;if(s instanceof Date)return new Date(s);if(typeof s=="string"&&!/Z$/i.test(s)){var e=s.match(on);if(e){var a=e[2]-1||0,u=(e[7]||"0").substring(0,3);return i?new Date(Date.UTC(e[1],a,e[3]||1,e[4]||0,e[5]||0,e[6]||0,u)):new Date(e[1],a,e[3]||1,e[4]||0,e[5]||0,e[6]||0,u)}}return new Date(s)},he=function(){function n(s){this.$L=ce(s.locale,null,!0),this.parse(s),this.$x=this.$x||s.x||{},this[mn]=!0}var t=n.prototype;return t.parse=function(i){this.$d=Li(i),this.init()},t.init=function(){var i=this.$d;this.$y=i.getFullYear(),this.$M=i.getMonth(),this.$D=i.getDate(),this.$W=i.getDay(),this.$H=i.getHours(),this.$m=i.getMinutes(),this.$s=i.getSeconds(),this.$ms=i.getMilliseconds()},t.$utils=function(){return z},t.isValid=function(){return this.$d.toString()!==De},t.isSame=function(i,e){var a=J(i);return this.startOf(e)<=a&&a<=this.endOf(e)},t.isAfter=function(i,e){return J(i)this.togglePanelVisibility(this.$refs.button)),this.$watch("focusedMonth",()=>{this.focusedMonth=+this.focusedMonth,this.focusedDate.month()!==this.focusedMonth&&(this.focusedDate=this.focusedDate.month(this.focusedMonth))}),this.$watch("focusedYear",()=>{if(this.focusedYear?.length>4&&(this.focusedYear=this.focusedYear.substring(0,4)),!this.focusedYear||this.focusedYear?.length!==4)return;let o=+this.focusedYear;Number.isInteger(o)||(o=A().tz(u).year(),this.focusedYear=o),this.focusedDate.year()!==o&&(this.focusedDate=this.focusedDate.year(o))}),this.$watch("focusedDate",()=>{let o=this.focusedDate.month(),d=this.focusedDate.year();this.focusedMonth!==o&&(this.focusedMonth=o),this.focusedYear!==d&&(this.focusedYear=d),this.setupDaysGrid()}),this.$watch("hour",()=>{let o=+this.hour;if(Number.isInteger(o)?o>23?this.hour=0:o<0?this.hour=23:this.hour=o:this.hour=0,this.isClearingState)return;let d=this.getSelectedDate()??this.focusedDate;this.setState(d.hour(this.hour??0))}),this.$watch("minute",()=>{let o=+this.minute;if(Number.isInteger(o)?o>59?this.minute=0:o<0?this.minute=59:this.minute=o:this.minute=0,this.isClearingState)return;let d=this.getSelectedDate()??this.focusedDate;this.setState(d.minute(this.minute??0))}),this.$watch("second",()=>{let o=+this.second;if(Number.isInteger(o)?o>59?this.second=0:o<0?this.second=59:this.second=o:this.second=0,this.isClearingState)return;let d=this.getSelectedDate()??this.focusedDate;this.setState(d.second(this.second??0))}),this.$watch("state",()=>{if(this.state===void 0)return;let o=this.getSelectedDate();if(o===null){this.clearState();return}this.getMaxDate()!==null&&o?.isAfter(this.getMaxDate())&&(o=null),this.getMinDate()!==null&&o?.isBefore(this.getMinDate())&&(o=null);let d=o?.hour()??0;this.hour!==d&&(this.hour=d);let l=o?.minute()??0;this.minute!==l&&(this.minute=l);let y=o?.second()??0;this.second!==y&&(this.second=y),this.setDisplayText()})},clearState:function(){this.isClearingState=!0,this.setState(null),this.hour=0,this.minute=0,this.second=0,this.$nextTick(()=>this.isClearingState=!1)},dateIsDisabled:function(r){return!!(this.$refs?.disabledDates&&JSON.parse(this.$refs.disabledDates.value??[]).some(o=>(o=A(o),o.isValid()?o.isSame(r,"day"):!1))||this.getMaxDate()&&r.isAfter(this.getMaxDate(),"day")||this.getMinDate()&&r.isBefore(this.getMinDate(),"day"))},dayIsDisabled:function(r){return this.focusedDate??(this.focusedDate=A().tz(u)),this.dateIsDisabled(this.focusedDate.date(r))},dayIsSelected:function(r){let o=this.getSelectedDate();return o===null?!1:(this.focusedDate??(this.focusedDate=A().tz(u)),o.date()===r&&o.month()===this.focusedDate.month()&&o.year()===this.focusedDate.year())},dayIsToday:function(r){let o=A().tz(u);return this.focusedDate??(this.focusedDate=o),o.date()===r&&o.month()===this.focusedDate.month()&&o.year()===this.focusedDate.year()},focusPreviousDay:function(){this.focusedDate??(this.focusedDate=A().tz(u)),this.focusedDate=this.focusedDate.subtract(1,"day")},focusPreviousWeek:function(){this.focusedDate??(this.focusedDate=A().tz(u)),this.focusedDate=this.focusedDate.subtract(1,"week")},focusNextDay:function(){this.focusedDate??(this.focusedDate=A().tz(u)),this.focusedDate=this.focusedDate.add(1,"day")},focusNextWeek:function(){this.focusedDate??(this.focusedDate=A().tz(u)),this.focusedDate=this.focusedDate.add(1,"week")},getDayLabels:function(){let r=A.weekdaysShort();return t===0?r:[...r.slice(t),...r.slice(0,t)]},getMaxDate:function(){let r=A(this.$refs.maxDate?.value);return r.isValid()?r:null},getMinDate:function(){let r=A(this.$refs.minDate?.value);return r.isValid()?r:null},getSelectedDate:function(){if(this.state===void 0||this.state===null)return null;let r=A(this.state);return r.isValid()?r:null},togglePanelVisibility:function(){this.isOpen()||(this.focusedDate=this.getSelectedDate()??this.getMinDate()??A().tz(u),this.setupDaysGrid()),this.$refs.panel.toggle(this.$refs.button)},selectDate:function(r=null){r&&this.setFocusedDay(r),this.focusedDate??(this.focusedDate=A().tz(u)),this.setState(this.focusedDate),e&&this.togglePanelVisibility()},setDisplayText:function(){this.displayText=this.getSelectedDate()?this.getSelectedDate().format(n):""},setMonths:function(){this.months=A.months()},setDayLabels:function(){this.dayLabels=this.getDayLabels()},setupDaysGrid:function(){this.focusedDate??(this.focusedDate=A().tz(u)),this.emptyDaysInFocusedMonth=Array.from({length:this.focusedDate.date(8-t).day()},(r,o)=>o+1),this.daysInFocusedMonth=Array.from({length:this.focusedDate.daysInMonth()},(r,o)=>o+1)},setFocusedDay:function(r){this.focusedDate=(this.focusedDate??A().tz(u)).date(r)},setState:function(r){if(r===null){this.state=null,this.setDisplayText();return}this.dateIsDisabled(r)||(this.state=r.hour(this.hour??0).minute(this.minute??0).second(this.second??0).format("YYYY-MM-DD HH:mm:ss"),this.setDisplayText())},isOpen:function(){return this.$refs.panel?.style.display==="block"}}}var ii={ar:pn(),bs:Dn(),ca:Ln(),ckb:Ne(),cs:gn(),cy:Sn(),da:bn(),de:kn(),en:Hn(),es:jn(),et:Tn(),fa:wn(),fi:$n(),fr:Cn(),hi:On(),hu:zn(),hy:An(),id:In(),it:xn(),ja:qn(),ka:Nn(),km:En(),ku:Ne(),lt:Fn(),lv:Jn(),ms:Un(),my:Pn(),nl:Wn(),pl:Rn(),pt_BR:Zn(),pt_PT:Vn(),ro:Gn(),ru:Kn(),sv:Bn(),tr:Xn(),uk:Qn(),vi:ei(),zh_CN:ti(),zh_TW:ni()};export{vi as default}; diff --git a/public/js/filament/forms/components/file-upload.js b/public/js/filament/forms/components/file-upload.js new file mode 100644 index 000000000..5d55c8b57 --- /dev/null +++ b/public/js/filament/forms/components/file-upload.js @@ -0,0 +1,123 @@ +var Go=Object.defineProperty;var Vo=(e,t)=>{for(var i in t)Go(e,i,{get:t[i],enumerable:!0})};var ea={};Vo(ea,{FileOrigin:()=>Dt,FileStatus:()=>pt,OptionTypes:()=>Ni,Status:()=>Kn,create:()=>ct,destroy:()=>dt,find:()=>Gi,getOptions:()=>Vi,parse:()=>Bi,registerPlugin:()=>_e,setOptions:()=>Ot,supported:()=>zi});var Uo=e=>e instanceof HTMLElement,ko=(e,t=[],i=[])=>{let a={...e},n=[],r=[],o=()=>({...a}),l=()=>{let p=[...n];return n.length=0,p},s=()=>{let p=[...r];r.length=0,p.forEach(({type:m,data:g})=>{u(m,g)})},u=(p,m,g)=>{if(g&&!document.hidden){r.push({type:p,data:m});return}f[p]&&f[p](m),n.push({type:p,data:m})},c=(p,...m)=>h[p]?h[p](...m):null,d={getState:o,processActionQueue:l,processDispatchQueue:s,dispatch:u,query:c},h={};t.forEach(p=>{h={...p(a),...h}});let f={};return i.forEach(p=>{f={...p(u,c,a),...f}}),d},Ho=(e,t,i)=>{if(typeof i=="function"){e[t]=i;return}Object.defineProperty(e,t,{...i})},te=(e,t)=>{for(let i in e)e.hasOwnProperty(i)&&t(i,e[i])},Ue=e=>{let t={};return te(e,i=>{Ho(t,i,e[i])}),t},ne=(e,t,i=null)=>{if(i===null)return e.getAttribute(t)||e.hasAttribute(t);e.setAttribute(t,i)},Wo="http://www.w3.org/2000/svg",Yo=["svg","path"],wa=e=>Yo.includes(e),ei=(e,t,i={})=>{typeof t=="object"&&(i=t,t=null);let a=wa(e)?document.createElementNS(Wo,e):document.createElement(e);return t&&(wa(e)?ne(a,"class",t):a.className=t),te(i,(n,r)=>{ne(a,n,r)}),a},$o=e=>(t,i)=>{typeof i<"u"&&e.children[i]?e.insertBefore(t,e.children[i]):e.appendChild(t)},qo=(e,t)=>(i,a)=>(typeof a<"u"?t.splice(a,0,i):t.push(i),i),Xo=(e,t)=>i=>(t.splice(t.indexOf(i),1),i.element.parentNode&&e.removeChild(i.element),i),jo=(()=>typeof window<"u"&&typeof window.document<"u")(),un=()=>jo,Qo=un()?ei("svg"):{},Zo="children"in Qo?e=>e.children.length:e=>e.childNodes.length,hn=(e,t,i,a)=>{let n=i[0]||e.left,r=i[1]||e.top,o=n+e.width,l=r+e.height*(a[1]||1),s={element:{...e},inner:{left:e.left,top:e.top,right:e.right,bottom:e.bottom},outer:{left:n,top:r,right:o,bottom:l}};return t.filter(u=>!u.isRectIgnored()).map(u=>u.rect).forEach(u=>{va(s.inner,{...u.inner}),va(s.outer,{...u.outer})}),Aa(s.inner),s.outer.bottom+=s.element.marginBottom,s.outer.right+=s.element.marginRight,Aa(s.outer),s},va=(e,t)=>{t.top+=e.top,t.right+=e.left,t.bottom+=e.top,t.left+=e.left,t.bottom>e.bottom&&(e.bottom=t.bottom),t.right>e.right&&(e.right=t.right)},Aa=e=>{e.width=e.right-e.left,e.height=e.bottom-e.top},$e=e=>typeof e=="number",Ko=(e,t,i,a=.001)=>Math.abs(e-t){let a=null,n=null,r=0,o=!1,u=Ue({interpolate:(c,d)=>{if(o)return;if(!($e(a)&&$e(n))){o=!0,r=0;return}let h=-(n-a)*e;r+=h/i,n+=r,r*=t,Ko(n,a,r)||d?(n=a,r=0,o=!0,u.onupdate(n),u.oncomplete(n)):u.onupdate(n)},target:{set:c=>{if($e(c)&&!$e(n)&&(n=c),a===null&&(a=c,n=c),a=c,n===a||typeof a>"u"){o=!0,r=0,u.onupdate(n),u.oncomplete(n);return}o=!1},get:()=>a},resting:{get:()=>o},onupdate:c=>{},oncomplete:c=>{}});return u};var el=e=>e<.5?2*e*e:-1+(4-2*e)*e,tl=({duration:e=500,easing:t=el,delay:i=0}={})=>{let a=null,n,r,o=!0,l=!1,s=null,c=Ue({interpolate:(d,h)=>{o||s===null||(a===null&&(a=d),!(d-a=e||h?(n=1,r=l?0:1,c.onupdate(r*s),c.oncomplete(r*s),o=!0):(r=n/e,c.onupdate((n>=0?t(l?1-r:r):0)*s))))},target:{get:()=>l?0:s,set:d=>{if(s===null){s=d,c.onupdate(d),c.oncomplete(d);return}do},onupdate:d=>{},oncomplete:d=>{}});return c},La={spring:Jo,tween:tl},il=(e,t,i)=>{let a=e[t]&&typeof e[t][i]=="object"?e[t][i]:e[t]||e,n=typeof a=="string"?a:a.type,r=typeof a=="object"?{...a}:{};return La[n]?La[n](r):null},Ui=(e,t,i,a=!1)=>{t=Array.isArray(t)?t:[t],t.forEach(n=>{e.forEach(r=>{let o=r,l=()=>i[r],s=u=>i[r]=u;typeof r=="object"&&(o=r.key,l=r.getter||l,s=r.setter||s),!(n[o]&&!a)&&(n[o]={get:l,set:s})})})},al=({mixinConfig:e,viewProps:t,viewInternalAPI:i,viewExternalAPI:a})=>{let n={...t},r=[];return te(e,(o,l)=>{let s=il(l);if(!s)return;s.onupdate=c=>{t[o]=c},s.target=n[o],Ui([{key:o,setter:c=>{s.target!==c&&(s.target=c)},getter:()=>t[o]}],[i,a],t,!0),r.push(s)}),{write:o=>{let l=document.hidden,s=!0;return r.forEach(u=>{u.resting||(s=!1),u.interpolate(o,l)}),s},destroy:()=>{}}},nl=e=>(t,i)=>{e.addEventListener(t,i)},rl=e=>(t,i)=>{e.removeEventListener(t,i)},ol=({mixinConfig:e,viewProps:t,viewInternalAPI:i,viewExternalAPI:a,viewState:n,view:r})=>{let o=[],l=nl(r.element),s=rl(r.element);return a.on=(u,c)=>{o.push({type:u,fn:c}),l(u,c)},a.off=(u,c)=>{o.splice(o.findIndex(d=>d.type===u&&d.fn===c),1),s(u,c)},{write:()=>!0,destroy:()=>{o.forEach(u=>{s(u.type,u.fn)})}}},ll=({mixinConfig:e,viewProps:t,viewExternalAPI:i})=>{Ui(e,i,t)},fe=e=>e!=null,sl={opacity:1,scaleX:1,scaleY:1,translateX:0,translateY:0,rotateX:0,rotateY:0,rotateZ:0,originX:0,originY:0},cl=({mixinConfig:e,viewProps:t,viewInternalAPI:i,viewExternalAPI:a,view:n})=>{let r={...t},o={};Ui(e,[i,a],t);let l=()=>[t.translateX||0,t.translateY||0],s=()=>[t.scaleX||0,t.scaleY||0],u=()=>n.rect?hn(n.rect,n.childViews,l(),s()):null;return i.rect={get:u},a.rect={get:u},e.forEach(c=>{t[c]=typeof r[c]>"u"?sl[c]:r[c]}),{write:()=>{if(dl(o,t))return ul(n.element,t),Object.assign(o,{...t}),!0},destroy:()=>{}}},dl=(e,t)=>{if(Object.keys(e).length!==Object.keys(t).length)return!0;for(let i in t)if(t[i]!==e[i])return!0;return!1},ul=(e,{opacity:t,perspective:i,translateX:a,translateY:n,scaleX:r,scaleY:o,rotateX:l,rotateY:s,rotateZ:u,originX:c,originY:d,width:h,height:f})=>{let p="",m="";(fe(c)||fe(d))&&(m+=`transform-origin: ${c||0}px ${d||0}px;`),fe(i)&&(p+=`perspective(${i}px) `),(fe(a)||fe(n))&&(p+=`translate3d(${a||0}px, ${n||0}px, 0) `),(fe(r)||fe(o))&&(p+=`scale3d(${fe(r)?r:1}, ${fe(o)?o:1}, 1) `),fe(u)&&(p+=`rotateZ(${u}rad) `),fe(l)&&(p+=`rotateX(${l}rad) `),fe(s)&&(p+=`rotateY(${s}rad) `),p.length&&(m+=`transform:${p};`),fe(t)&&(m+=`opacity:${t};`,t===0&&(m+="visibility:hidden;"),t<1&&(m+="pointer-events:none;")),fe(f)&&(m+=`height:${f}px;`),fe(h)&&(m+=`width:${h}px;`);let g=e.elementCurrentStyle||"";(m.length!==g.length||m!==g)&&(e.style.cssText=m,e.elementCurrentStyle=m)},hl={styles:cl,listeners:ol,animations:al,apis:ll},Ma=(e={},t={},i={})=>(t.layoutCalculated||(e.paddingTop=parseInt(i.paddingTop,10)||0,e.marginTop=parseInt(i.marginTop,10)||0,e.marginRight=parseInt(i.marginRight,10)||0,e.marginBottom=parseInt(i.marginBottom,10)||0,e.marginLeft=parseInt(i.marginLeft,10)||0,t.layoutCalculated=!0),e.left=t.offsetLeft||0,e.top=t.offsetTop||0,e.width=t.offsetWidth||0,e.height=t.offsetHeight||0,e.right=e.left+e.width,e.bottom=e.top+e.height,e.scrollTop=t.scrollTop,e.hidden=t.offsetParent===null,e),re=({tag:e="div",name:t=null,attributes:i={},read:a=()=>{},write:n=()=>{},create:r=()=>{},destroy:o=()=>{},filterFrameActionsForChild:l=(f,p)=>p,didCreateView:s=()=>{},didWriteView:u=()=>{},ignoreRect:c=!1,ignoreRectUpdate:d=!1,mixins:h=[]}={})=>(f,p={})=>{let m=ei(e,`filepond--${t}`,i),g=window.getComputedStyle(m,null),b=Ma(),E=null,I=!1,_=[],y=[],T={},v={},R=[n],S=[a],D=[o],x=()=>m,O=()=>_.concat(),z=()=>T,A=U=>(W,$)=>W(U,$),F=()=>E||(E=hn(b,_,[0,0],[1,1]),E),w=()=>g,L=()=>{E=null,_.forEach($=>$._read()),!(d&&b.width&&b.height)&&Ma(b,m,g);let W={root:j,props:p,rect:b};S.forEach($=>$(W))},C=(U,W,$)=>{let le=W.length===0;return R.forEach(J=>{J({props:p,root:j,actions:W,timestamp:U,shouldOptimize:$})===!1&&(le=!1)}),y.forEach(J=>{J.write(U)===!1&&(le=!1)}),_.filter(J=>!!J.element.parentNode).forEach(J=>{J._write(U,l(J,W),$)||(le=!1)}),_.forEach((J,V)=>{J.element.parentNode||(j.appendChild(J.element,V),J._read(),J._write(U,l(J,W),$),le=!1)}),I=le,u({props:p,root:j,actions:W,timestamp:U}),le},P=()=>{y.forEach(U=>U.destroy()),D.forEach(U=>{U({root:j,props:p})}),_.forEach(U=>U._destroy())},G={element:{get:x},style:{get:w},childViews:{get:O}},B={...G,rect:{get:F},ref:{get:z},is:U=>t===U,appendChild:$o(m),createChildView:A(f),linkView:U=>(_.push(U),U),unlinkView:U=>{_.splice(_.indexOf(U),1)},appendChildView:qo(m,_),removeChildView:Xo(m,_),registerWriter:U=>R.push(U),registerReader:U=>S.push(U),registerDestroyer:U=>D.push(U),invalidateLayout:()=>m.layoutCalculated=!1,dispatch:f.dispatch,query:f.query},X={element:{get:x},childViews:{get:O},rect:{get:F},resting:{get:()=>I},isRectIgnored:()=>c,_read:L,_write:C,_destroy:P},q={...G,rect:{get:()=>b}};Object.keys(h).sort((U,W)=>U==="styles"?1:W==="styles"?-1:0).forEach(U=>{let W=hl[U]({mixinConfig:h[U],viewProps:p,viewState:v,viewInternalAPI:B,viewExternalAPI:X,view:Ue(q)});W&&y.push(W)});let j=Ue(B);r({root:j,props:p});let ue=Zo(m);return _.forEach((U,W)=>{j.appendChild(U.element,ue+W)}),s(j),Ue(X)},fl=(e,t,i=60)=>{let a="__framePainter";if(window[a]){window[a].readers.push(e),window[a].writers.push(t);return}window[a]={readers:[e],writers:[t]};let n=window[a],r=1e3/i,o=null,l=null,s=null,u=null,c=()=>{document.hidden?(s=()=>window.setTimeout(()=>d(performance.now()),r),u=()=>window.clearTimeout(l)):(s=()=>window.requestAnimationFrame(d),u=()=>window.cancelAnimationFrame(l))};document.addEventListener("visibilitychange",()=>{u&&u(),c(),d(performance.now())});let d=h=>{l=s(d),o||(o=h);let f=h-o;f<=r||(o=h-f%r,n.readers.forEach(p=>p()),n.writers.forEach(p=>p(h)))};return c(),d(performance.now()),{pause:()=>{u(l)}}},me=(e,t)=>({root:i,props:a,actions:n=[],timestamp:r,shouldOptimize:o})=>{n.filter(l=>e[l.type]).forEach(l=>e[l.type]({root:i,props:a,action:l.data,timestamp:r,shouldOptimize:o})),t&&t({root:i,props:a,actions:n,timestamp:r,shouldOptimize:o})},Oa=(e,t)=>t.parentNode.insertBefore(e,t),xa=(e,t)=>t.parentNode.insertBefore(e,t.nextSibling),ni=e=>Array.isArray(e),Ne=e=>e==null,pl=e=>e.trim(),ri=e=>""+e,ml=(e,t=",")=>Ne(e)?[]:ni(e)?e:ri(e).split(t).map(pl).filter(i=>i.length),fn=e=>typeof e=="boolean",pn=e=>fn(e)?e:e==="true",pe=e=>typeof e=="string",mn=e=>$e(e)?e:pe(e)?ri(e).replace(/[a-z]+/gi,""):0,Jt=e=>parseInt(mn(e),10),Da=e=>parseFloat(mn(e)),ft=e=>$e(e)&&isFinite(e)&&Math.floor(e)===e,Pa=(e,t=1e3)=>{if(ft(e))return e;let i=ri(e).trim();return/MB$/i.test(i)?(i=i.replace(/MB$i/,"").trim(),Jt(i)*t*t):/KB/i.test(i)?(i=i.replace(/KB$i/,"").trim(),Jt(i)*t):Jt(i)},qe=e=>typeof e=="function",gl=e=>{let t=self,i=e.split("."),a=null;for(;a=i.shift();)if(t=t[a],!t)return null;return t},Fa={process:"POST",patch:"PATCH",revert:"DELETE",fetch:"GET",restore:"GET",load:"GET"},El=e=>{let t={};return t.url=pe(e)?e:e.url||"",t.timeout=e.timeout?parseInt(e.timeout,10):0,t.headers=e.headers?e.headers:{},te(Fa,i=>{t[i]=Tl(i,e[i],Fa[i],t.timeout,t.headers)}),t.process=e.process||pe(e)||e.url?t.process:null,t.remove=e.remove||null,delete t.headers,t},Tl=(e,t,i,a,n)=>{if(t===null)return null;if(typeof t=="function")return t;let r={url:i==="GET"||i==="PATCH"?`?${e}=`:"",method:i,headers:n,withCredentials:!1,timeout:a,onload:null,ondata:null,onerror:null};if(pe(t))return r.url=t,r;if(Object.assign(r,t),pe(r.headers)){let o=r.headers.split(/:(.+)/);r.headers={header:o[0],value:o[1]}}return r.withCredentials=pn(r.withCredentials),r},Il=e=>El(e),bl=e=>e===null,ce=e=>typeof e=="object"&&e!==null,_l=e=>ce(e)&&pe(e.url)&&ce(e.process)&&ce(e.revert)&&ce(e.restore)&&ce(e.fetch),Li=e=>ni(e)?"array":bl(e)?"null":ft(e)?"int":/^[0-9]+ ?(?:GB|MB|KB)$/gi.test(e)?"bytes":_l(e)?"api":typeof e,Rl=e=>e.replace(/{\s*'/g,'{"').replace(/'\s*}/g,'"}').replace(/'\s*:/g,'":').replace(/:\s*'/g,':"').replace(/,\s*'/g,',"').replace(/'\s*,/g,'",'),yl={array:ml,boolean:pn,int:e=>Li(e)==="bytes"?Pa(e):Jt(e),number:Da,float:Da,bytes:Pa,string:e=>qe(e)?e:ri(e),function:e=>gl(e),serverapi:Il,object:e=>{try{return JSON.parse(Rl(e))}catch{return null}}},Sl=(e,t)=>yl[t](e),gn=(e,t,i)=>{if(e===t)return e;let a=Li(e);if(a!==i){let n=Sl(e,i);if(a=Li(n),n===null)throw`Trying to assign value with incorrect type to "${option}", allowed type: "${i}"`;e=n}return e},wl=(e,t)=>{let i=e;return{enumerable:!0,get:()=>i,set:a=>{i=gn(a,e,t)}}},vl=e=>{let t={};return te(e,i=>{let a=e[i];t[i]=wl(a[0],a[1])}),Ue(t)},Al=e=>({items:[],listUpdateTimeout:null,itemUpdateTimeout:null,processingQueue:[],options:vl(e)}),oi=(e,t="-")=>e.split(/(?=[A-Z])/).map(i=>i.toLowerCase()).join(t),Ll=(e,t)=>{let i={};return te(t,a=>{i[a]={get:()=>e.getState().options[a],set:n=>{e.dispatch(`SET_${oi(a,"_").toUpperCase()}`,{value:n})}}}),i},Ml=e=>(t,i,a)=>{let n={};return te(e,r=>{let o=oi(r,"_").toUpperCase();n[`SET_${o}`]=l=>{try{a.options[r]=l.value}catch{}t(`DID_SET_${o}`,{value:a.options[r]})}}),n},Ol=e=>t=>{let i={};return te(e,a=>{i[`GET_${oi(a,"_").toUpperCase()}`]=n=>t.options[a]}),i},Se={API:1,DROP:2,BROWSE:3,PASTE:4,NONE:5},ki=()=>Math.random().toString(36).substring(2,11),Hi=(e,t)=>e.splice(t,1),xl=(e,t)=>{t?e():document.hidden?Promise.resolve(1).then(e):setTimeout(e,0)},li=()=>{let e=[],t=(a,n)=>{Hi(e,e.findIndex(r=>r.event===a&&(r.cb===n||!n)))},i=(a,n,r)=>{e.filter(o=>o.event===a).map(o=>o.cb).forEach(o=>xl(()=>o(...n),r))};return{fireSync:(a,...n)=>{i(a,n,!0)},fire:(a,...n)=>{i(a,n,!1)},on:(a,n)=>{e.push({event:a,cb:n})},onOnce:(a,n)=>{e.push({event:a,cb:(...r)=>{t(a,n),n(...r)}})},off:t}},En=(e,t,i)=>{Object.getOwnPropertyNames(e).filter(a=>!i.includes(a)).forEach(a=>Object.defineProperty(t,a,Object.getOwnPropertyDescriptor(e,a)))},Dl=["fire","process","revert","load","on","off","onOnce","retryLoad","extend","archive","archived","release","released","requestProcessing","freeze"],ge=e=>{let t={};return En(e,t,Dl),t},Pl=e=>{e.forEach((t,i)=>{t.released&&Hi(e,i)})},k={INIT:1,IDLE:2,PROCESSING_QUEUED:9,PROCESSING:3,PROCESSING_COMPLETE:5,PROCESSING_ERROR:6,PROCESSING_REVERT_ERROR:10,LOADING:7,LOAD_ERROR:8},se={INPUT:1,LIMBO:2,LOCAL:3},Tn=e=>/[^0-9]+/.exec(e),In=()=>Tn(1.1.toLocaleString())[0],Fl=()=>{let e=In(),t=1e3.toLocaleString(),i=1e3.toString();return t!==i?Tn(t)[0]:e==="."?",":"."},M={BOOLEAN:"boolean",INT:"int",NUMBER:"number",STRING:"string",ARRAY:"array",OBJECT:"object",FUNCTION:"function",ACTION:"action",SERVER_API:"serverapi",REGEX:"regex"},Wi=[],Le=(e,t,i)=>new Promise((a,n)=>{let r=Wi.filter(l=>l.key===e).map(l=>l.cb);if(r.length===0){a(t);return}let o=r.shift();r.reduce((l,s)=>l.then(u=>s(u,i)),o(t,i)).then(l=>a(l)).catch(l=>n(l))}),Ke=(e,t,i)=>Wi.filter(a=>a.key===e).map(a=>a.cb(t,i)),Cl=(e,t)=>Wi.push({key:e,cb:t}),zl=e=>Object.assign(ot,e),ti=()=>({...ot}),Nl=e=>{te(e,(t,i)=>{ot[t]&&(ot[t][0]=gn(i,ot[t][0],ot[t][1]))})},ot={id:[null,M.STRING],name:["filepond",M.STRING],disabled:[!1,M.BOOLEAN],className:[null,M.STRING],required:[!1,M.BOOLEAN],captureMethod:[null,M.STRING],allowSyncAcceptAttribute:[!0,M.BOOLEAN],allowDrop:[!0,M.BOOLEAN],allowBrowse:[!0,M.BOOLEAN],allowPaste:[!0,M.BOOLEAN],allowMultiple:[!1,M.BOOLEAN],allowReplace:[!0,M.BOOLEAN],allowRevert:[!0,M.BOOLEAN],allowRemove:[!0,M.BOOLEAN],allowProcess:[!0,M.BOOLEAN],allowReorder:[!1,M.BOOLEAN],allowDirectoriesOnly:[!1,M.BOOLEAN],storeAsFile:[!1,M.BOOLEAN],forceRevert:[!1,M.BOOLEAN],maxFiles:[null,M.INT],checkValidity:[!1,M.BOOLEAN],itemInsertLocationFreedom:[!0,M.BOOLEAN],itemInsertLocation:["before",M.STRING],itemInsertInterval:[75,M.INT],dropOnPage:[!1,M.BOOLEAN],dropOnElement:[!0,M.BOOLEAN],dropValidation:[!1,M.BOOLEAN],ignoredFiles:[[".ds_store","thumbs.db","desktop.ini"],M.ARRAY],instantUpload:[!0,M.BOOLEAN],maxParallelUploads:[2,M.INT],allowMinimumUploadDuration:[!0,M.BOOLEAN],chunkUploads:[!1,M.BOOLEAN],chunkForce:[!1,M.BOOLEAN],chunkSize:[5e6,M.INT],chunkRetryDelays:[[500,1e3,3e3],M.ARRAY],server:[null,M.SERVER_API],fileSizeBase:[1e3,M.INT],labelFileSizeBytes:["bytes",M.STRING],labelFileSizeKilobytes:["KB",M.STRING],labelFileSizeMegabytes:["MB",M.STRING],labelFileSizeGigabytes:["GB",M.STRING],labelDecimalSeparator:[In(),M.STRING],labelThousandsSeparator:[Fl(),M.STRING],labelIdle:['Drag & Drop your files or Browse',M.STRING],labelInvalidField:["Field contains invalid files",M.STRING],labelFileWaitingForSize:["Waiting for size",M.STRING],labelFileSizeNotAvailable:["Size not available",M.STRING],labelFileCountSingular:["file in list",M.STRING],labelFileCountPlural:["files in list",M.STRING],labelFileLoading:["Loading",M.STRING],labelFileAdded:["Added",M.STRING],labelFileLoadError:["Error during load",M.STRING],labelFileRemoved:["Removed",M.STRING],labelFileRemoveError:["Error during remove",M.STRING],labelFileProcessing:["Uploading",M.STRING],labelFileProcessingComplete:["Upload complete",M.STRING],labelFileProcessingAborted:["Upload cancelled",M.STRING],labelFileProcessingError:["Error during upload",M.STRING],labelFileProcessingRevertError:["Error during revert",M.STRING],labelTapToCancel:["tap to cancel",M.STRING],labelTapToRetry:["tap to retry",M.STRING],labelTapToUndo:["tap to undo",M.STRING],labelButtonRemoveItem:["Remove",M.STRING],labelButtonAbortItemLoad:["Abort",M.STRING],labelButtonRetryItemLoad:["Retry",M.STRING],labelButtonAbortItemProcessing:["Cancel",M.STRING],labelButtonUndoItemProcessing:["Undo",M.STRING],labelButtonRetryItemProcessing:["Retry",M.STRING],labelButtonProcessItem:["Upload",M.STRING],iconRemove:['',M.STRING],iconProcess:['',M.STRING],iconRetry:['',M.STRING],iconUndo:['',M.STRING],iconDone:['',M.STRING],oninit:[null,M.FUNCTION],onwarning:[null,M.FUNCTION],onerror:[null,M.FUNCTION],onactivatefile:[null,M.FUNCTION],oninitfile:[null,M.FUNCTION],onaddfilestart:[null,M.FUNCTION],onaddfileprogress:[null,M.FUNCTION],onaddfile:[null,M.FUNCTION],onprocessfilestart:[null,M.FUNCTION],onprocessfileprogress:[null,M.FUNCTION],onprocessfileabort:[null,M.FUNCTION],onprocessfilerevert:[null,M.FUNCTION],onprocessfile:[null,M.FUNCTION],onprocessfiles:[null,M.FUNCTION],onremovefile:[null,M.FUNCTION],onpreparefile:[null,M.FUNCTION],onupdatefiles:[null,M.FUNCTION],onreorderfiles:[null,M.FUNCTION],beforeDropFile:[null,M.FUNCTION],beforeAddFile:[null,M.FUNCTION],beforeRemoveFile:[null,M.FUNCTION],beforePrepareFile:[null,M.FUNCTION],stylePanelLayout:[null,M.STRING],stylePanelAspectRatio:[null,M.STRING],styleItemPanelAspectRatio:[null,M.STRING],styleButtonRemoveItemPosition:["left",M.STRING],styleButtonProcessItemPosition:["right",M.STRING],styleLoadIndicatorPosition:["right",M.STRING],styleProgressIndicatorPosition:["right",M.STRING],styleButtonRemoveItemAlign:[!1,M.BOOLEAN],files:[[],M.ARRAY],credits:[["https://pqina.nl/","Powered by PQINA"],M.ARRAY]},Xe=(e,t)=>Ne(t)?e[0]||null:ft(t)?e[t]||null:(typeof t=="object"&&(t=t.id),e.find(i=>i.id===t)||null),bn=e=>{if(Ne(e))return e;if(/:/.test(e)){let t=e.split(":");return t[1]/t[0]}return parseFloat(e)},Me=e=>e.filter(t=>!t.archived),_n={EMPTY:0,IDLE:1,ERROR:2,BUSY:3,READY:4},qt=null,Bl=()=>{if(qt===null)try{let e=new DataTransfer;e.items.add(new File(["hello world"],"This_Works.txt"));let t=document.createElement("input");t.setAttribute("type","file"),t.files=e.files,qt=t.files.length===1}catch{qt=!1}return qt},Gl=[k.LOAD_ERROR,k.PROCESSING_ERROR,k.PROCESSING_REVERT_ERROR],Vl=[k.LOADING,k.PROCESSING,k.PROCESSING_QUEUED,k.INIT],Ul=[k.PROCESSING_COMPLETE],kl=e=>Gl.includes(e.status),Hl=e=>Vl.includes(e.status),Wl=e=>Ul.includes(e.status),Ca=e=>ce(e.options.server)&&(ce(e.options.server.process)||qe(e.options.server.process)),Yl=e=>({GET_STATUS:()=>{let t=Me(e.items),{EMPTY:i,ERROR:a,BUSY:n,IDLE:r,READY:o}=_n;return t.length===0?i:t.some(kl)?a:t.some(Hl)?n:t.some(Wl)?o:r},GET_ITEM:t=>Xe(e.items,t),GET_ACTIVE_ITEM:t=>Xe(Me(e.items),t),GET_ACTIVE_ITEMS:()=>Me(e.items),GET_ITEMS:()=>e.items,GET_ITEM_NAME:t=>{let i=Xe(e.items,t);return i?i.filename:null},GET_ITEM_SIZE:t=>{let i=Xe(e.items,t);return i?i.fileSize:null},GET_STYLES:()=>Object.keys(e.options).filter(t=>/^style/.test(t)).map(t=>({name:t,value:e.options[t]})),GET_PANEL_ASPECT_RATIO:()=>/circle/.test(e.options.stylePanelLayout)?1:bn(e.options.stylePanelAspectRatio),GET_ITEM_PANEL_ASPECT_RATIO:()=>e.options.styleItemPanelAspectRatio,GET_ITEMS_BY_STATUS:t=>Me(e.items).filter(i=>i.status===t),GET_TOTAL_ITEMS:()=>Me(e.items).length,SHOULD_UPDATE_FILE_INPUT:()=>e.options.storeAsFile&&Bl()&&!Ca(e),IS_ASYNC:()=>Ca(e),GET_FILE_SIZE_LABELS:t=>({labelBytes:t("GET_LABEL_FILE_SIZE_BYTES")||void 0,labelKilobytes:t("GET_LABEL_FILE_SIZE_KILOBYTES")||void 0,labelMegabytes:t("GET_LABEL_FILE_SIZE_MEGABYTES")||void 0,labelGigabytes:t("GET_LABEL_FILE_SIZE_GIGABYTES")||void 0})}),$l=e=>{let t=Me(e.items).length;if(!e.options.allowMultiple)return t===0;let i=e.options.maxFiles;return i===null||tMath.max(Math.min(i,e),t),ql=(e,t,i)=>e.splice(t,0,i),Xl=(e,t,i)=>Ne(t)?null:typeof i>"u"?(e.push(t),t):(i=Rn(i,0,e.length),ql(e,i,t),t),Mi=e=>/^\s*data:([a-z]+\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s]*)\s*$/i.test(e),xt=e=>`${e}`.split("/").pop().split("?").shift(),si=e=>e.split(".").pop(),jl=e=>{if(typeof e!="string")return"";let t=e.split("/").pop();return/svg/.test(t)?"svg":/zip|compressed/.test(t)?"zip":/plain/.test(t)?"txt":/msword/.test(t)?"doc":/[a-z]+/.test(t)?t==="jpeg"?"jpg":t:""},vt=(e,t="")=>(t+e).slice(-t.length),yn=(e=new Date)=>`${e.getFullYear()}-${vt(e.getMonth()+1,"00")}-${vt(e.getDate(),"00")}_${vt(e.getHours(),"00")}-${vt(e.getMinutes(),"00")}-${vt(e.getSeconds(),"00")}`,ut=(e,t,i=null,a=null)=>{let n=typeof i=="string"?e.slice(0,e.size,i):e.slice(0,e.size,e.type);return n.lastModifiedDate=new Date,e._relativePath&&(n._relativePath=e._relativePath),pe(t)||(t=yn()),t&&a===null&&si(t)?n.name=t:(a=a||jl(n.type),n.name=t+(a?"."+a:"")),n},Ql=()=>window.BlobBuilder=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,Sn=(e,t)=>{let i=Ql();if(i){let a=new i;return a.append(e),a.getBlob(t)}return new Blob([e],{type:t})},Zl=(e,t)=>{let i=new ArrayBuffer(e.length),a=new Uint8Array(i);for(let n=0;n(/^data:(.+);/.exec(e)||[])[1]||null,Kl=e=>e.split(",")[1].replace(/\s/g,""),Jl=e=>atob(Kl(e)),es=e=>{let t=wn(e),i=Jl(e);return Zl(i,t)},ts=(e,t,i)=>ut(es(e),t,null,i),is=e=>{if(!/^content-disposition:/i.test(e))return null;let t=e.split(/filename=|filename\*=.+''/).splice(1).map(i=>i.trim().replace(/^["']|[;"']{0,2}$/g,"")).filter(i=>i.length);return t.length?decodeURI(t[t.length-1]):null},as=e=>{if(/content-length:/i.test(e)){let t=e.match(/[0-9]+/)[0];return t?parseInt(t,10):null}return null},ns=e=>/x-content-transfer-id:/i.test(e)&&(e.split(":")[1]||"").trim()||null,Yi=e=>{let t={source:null,name:null,size:null},i=e.split(` +`);for(let a of i){let n=is(a);if(n){t.name=n;continue}let r=as(a);if(r){t.size=r;continue}let o=ns(a);if(o){t.source=o;continue}}return t},rs=e=>{let t={source:null,complete:!1,progress:0,size:null,timestamp:null,duration:0,request:null},i=()=>t.progress,a=()=>{t.request&&t.request.abort&&t.request.abort()},n=()=>{let l=t.source;o.fire("init",l),l instanceof File?o.fire("load",l):l instanceof Blob?o.fire("load",ut(l,l.name)):Mi(l)?o.fire("load",ts(l)):r(l)},r=l=>{if(!e){o.fire("error",{type:"error",body:"Can't load URL",code:400});return}t.timestamp=Date.now(),t.request=e(l,s=>{t.duration=Date.now()-t.timestamp,t.complete=!0,s instanceof Blob&&(s=ut(s,s.name||xt(l))),o.fire("load",s instanceof Blob?s:s?s.body:null)},s=>{o.fire("error",typeof s=="string"?{type:"error",code:0,body:s}:s)},(s,u,c)=>{if(c&&(t.size=c),t.duration=Date.now()-t.timestamp,!s){t.progress=null;return}t.progress=u/c,o.fire("progress",t.progress)},()=>{o.fire("abort")},s=>{let u=Yi(typeof s=="string"?s:s.headers);o.fire("meta",{size:t.size||u.size,filename:u.name,source:u.source})})},o={...li(),setSource:l=>t.source=l,getProgress:i,abort:a,load:n};return o},za=e=>/GET|HEAD/.test(e),je=(e,t,i)=>{let a={onheaders:()=>{},onprogress:()=>{},onload:()=>{},ontimeout:()=>{},onerror:()=>{},onabort:()=>{},abort:()=>{n=!0,o.abort()}},n=!1,r=!1;i={method:"POST",headers:{},withCredentials:!1,...i},t=encodeURI(t),za(i.method)&&e&&(t=`${t}${encodeURIComponent(typeof e=="string"?e:JSON.stringify(e))}`);let o=new XMLHttpRequest,l=za(i.method)?o:o.upload;return l.onprogress=s=>{n||a.onprogress(s.lengthComputable,s.loaded,s.total)},o.onreadystatechange=()=>{o.readyState<2||o.readyState===4&&o.status===0||r||(r=!0,a.onheaders(o))},o.onload=()=>{o.status>=200&&o.status<300?a.onload(o):a.onerror(o)},o.onerror=()=>a.onerror(o),o.onabort=()=>{n=!0,a.onabort()},o.ontimeout=()=>a.ontimeout(o),o.open(i.method,t,!0),ft(i.timeout)&&(o.timeout=i.timeout),Object.keys(i.headers).forEach(s=>{let u=unescape(encodeURIComponent(i.headers[s]));o.setRequestHeader(s,u)}),i.responseType&&(o.responseType=i.responseType),i.withCredentials&&(o.withCredentials=!0),o.send(e),a},ie=(e,t,i,a)=>({type:e,code:t,body:i,headers:a}),Qe=e=>t=>{e(ie("error",0,"Timeout",t.getAllResponseHeaders()))},Na=e=>/\?/.test(e),Mt=(...e)=>{let t="";return e.forEach(i=>{t+=Na(t)&&Na(i)?i.replace(/\?/,"&"):i}),t},Ri=(e="",t)=>{if(typeof t=="function")return t;if(!t||!pe(t.url))return null;let i=t.onload||(n=>n),a=t.onerror||(n=>null);return(n,r,o,l,s,u)=>{let c=je(n,Mt(e,t.url),{...t,responseType:"blob"});return c.onload=d=>{let h=d.getAllResponseHeaders(),f=Yi(h).name||xt(n);r(ie("load",d.status,t.method==="HEAD"?null:ut(i(d.response),f),h))},c.onerror=d=>{o(ie("error",d.status,a(d.response)||d.statusText,d.getAllResponseHeaders()))},c.onheaders=d=>{u(ie("headers",d.status,null,d.getAllResponseHeaders()))},c.ontimeout=Qe(o),c.onprogress=l,c.onabort=s,c}},Re={QUEUED:0,COMPLETE:1,PROCESSING:2,ERROR:3,WAITING:4},os=(e,t,i,a,n,r,o,l,s,u,c)=>{let d=[],{chunkTransferId:h,chunkServer:f,chunkSize:p,chunkRetryDelays:m}=c,g={serverId:h,aborted:!1},b=t.ondata||(A=>A),E=t.onload||((A,F)=>F==="HEAD"?A.getResponseHeader("Upload-Offset"):A.response),I=t.onerror||(A=>null),_=A=>{let F=new FormData;ce(n)&&F.append(i,JSON.stringify(n));let w=typeof t.headers=="function"?t.headers(a,n):{...t.headers,"Upload-Length":a.size},L={...t,headers:w},C=je(b(F),Mt(e,t.url),L);C.onload=P=>A(E(P,L.method)),C.onerror=P=>o(ie("error",P.status,I(P.response)||P.statusText,P.getAllResponseHeaders())),C.ontimeout=Qe(o)},y=A=>{let F=Mt(e,f.url,g.serverId),L={headers:typeof t.headers=="function"?t.headers(g.serverId):{...t.headers},method:"HEAD"},C=je(null,F,L);C.onload=P=>A(E(P,L.method)),C.onerror=P=>o(ie("error",P.status,I(P.response)||P.statusText,P.getAllResponseHeaders())),C.ontimeout=Qe(o)},T=Math.floor(a.size/p);for(let A=0;A<=T;A++){let F=A*p,w=a.slice(F,F+p,"application/offset+octet-stream");d[A]={index:A,size:w.size,offset:F,data:w,file:a,progress:0,retries:[...m],status:Re.QUEUED,error:null,request:null,timeout:null}}let v=()=>r(g.serverId),R=A=>A.status===Re.QUEUED||A.status===Re.ERROR,S=A=>{if(g.aborted)return;if(A=A||d.find(R),!A){d.every(G=>G.status===Re.COMPLETE)&&v();return}A.status=Re.PROCESSING,A.progress=null;let F=f.ondata||(G=>G),w=f.onerror||(G=>null),L=Mt(e,f.url,g.serverId),C=typeof f.headers=="function"?f.headers(A):{...f.headers,"Content-Type":"application/offset+octet-stream","Upload-Offset":A.offset,"Upload-Length":a.size,"Upload-Name":a.name},P=A.request=je(F(A.data),L,{...f,headers:C});P.onload=()=>{A.status=Re.COMPLETE,A.request=null,O()},P.onprogress=(G,B,X)=>{A.progress=G?B:null,x()},P.onerror=G=>{A.status=Re.ERROR,A.request=null,A.error=w(G.response)||G.statusText,D(A)||o(ie("error",G.status,w(G.response)||G.statusText,G.getAllResponseHeaders()))},P.ontimeout=G=>{A.status=Re.ERROR,A.request=null,D(A)||Qe(o)(G)},P.onabort=()=>{A.status=Re.QUEUED,A.request=null,s()}},D=A=>A.retries.length===0?!1:(A.status=Re.WAITING,clearTimeout(A.timeout),A.timeout=setTimeout(()=>{S(A)},A.retries.shift()),!0),x=()=>{let A=d.reduce((w,L)=>w===null||L.progress===null?null:w+L.progress,0);if(A===null)return l(!1,0,0);let F=d.reduce((w,L)=>w+L.size,0);l(!0,A,F)},O=()=>{d.filter(F=>F.status===Re.PROCESSING).length>=1||S()},z=()=>{d.forEach(A=>{clearTimeout(A.timeout),A.request&&A.request.abort()})};return g.serverId?y(A=>{g.aborted||(d.filter(F=>F.offset{F.status=Re.COMPLETE,F.progress=F.size}),O())}):_(A=>{g.aborted||(u(A),g.serverId=A,O())}),{abort:()=>{g.aborted=!0,z()}}},ls=(e,t,i,a)=>(n,r,o,l,s,u,c)=>{if(!n)return;let d=a.chunkUploads,h=d&&n.size>a.chunkSize,f=d&&(h||a.chunkForce);if(n instanceof Blob&&f)return os(e,t,i,n,r,o,l,s,u,c,a);let p=t.ondata||(y=>y),m=t.onload||(y=>y),g=t.onerror||(y=>null),b=typeof t.headers=="function"?t.headers(n,r)||{}:{...t.headers},E={...t,headers:b};var I=new FormData;ce(r)&&I.append(i,JSON.stringify(r)),(n instanceof Blob?[{name:null,file:n}]:n).forEach(y=>{I.append(i,y.file,y.name===null?y.file.name:`${y.name}${y.file.name}`)});let _=je(p(I),Mt(e,t.url),E);return _.onload=y=>{o(ie("load",y.status,m(y.response),y.getAllResponseHeaders()))},_.onerror=y=>{l(ie("error",y.status,g(y.response)||y.statusText,y.getAllResponseHeaders()))},_.ontimeout=Qe(l),_.onprogress=s,_.onabort=u,_},ss=(e="",t,i,a)=>typeof t=="function"?(...n)=>t(i,...n,a):!t||!pe(t.url)?null:ls(e,t,i,a),At=(e="",t)=>{if(typeof t=="function")return t;if(!t||!pe(t.url))return(n,r)=>r();let i=t.onload||(n=>n),a=t.onerror||(n=>null);return(n,r,o)=>{let l=je(n,e+t.url,t);return l.onload=s=>{r(ie("load",s.status,i(s.response),s.getAllResponseHeaders()))},l.onerror=s=>{o(ie("error",s.status,a(s.response)||s.statusText,s.getAllResponseHeaders()))},l.ontimeout=Qe(o),l}},vn=(e=0,t=1)=>e+Math.random()*(t-e),cs=(e,t=1e3,i=0,a=25,n=250)=>{let r=null,o=Date.now(),l=()=>{let s=Date.now()-o,u=vn(a,n);s+u>t&&(u=s+u-t);let c=s/t;if(c>=1||document.hidden){e(1);return}e(c),r=setTimeout(l,u)};return t>0&&l(),{clear:()=>{clearTimeout(r)}}},ds=(e,t)=>{let i={complete:!1,perceivedProgress:0,perceivedPerformanceUpdater:null,progress:null,timestamp:null,perceivedDuration:0,duration:0,request:null,response:null},{allowMinimumUploadDuration:a}=t,n=(c,d)=>{let h=()=>{i.duration===0||i.progress===null||u.fire("progress",u.getProgress())},f=()=>{i.complete=!0,u.fire("load-perceived",i.response.body)};u.fire("start"),i.timestamp=Date.now(),i.perceivedPerformanceUpdater=cs(p=>{i.perceivedProgress=p,i.perceivedDuration=Date.now()-i.timestamp,h(),i.response&&i.perceivedProgress===1&&!i.complete&&f()},a?vn(750,1500):0),i.request=e(c,d,p=>{i.response=ce(p)?p:{type:"load",code:200,body:`${p}`,headers:{}},i.duration=Date.now()-i.timestamp,i.progress=1,u.fire("load",i.response.body),(!a||a&&i.perceivedProgress===1)&&f()},p=>{i.perceivedPerformanceUpdater.clear(),u.fire("error",ce(p)?p:{type:"error",code:0,body:`${p}`})},(p,m,g)=>{i.duration=Date.now()-i.timestamp,i.progress=p?m/g:null,h()},()=>{i.perceivedPerformanceUpdater.clear(),u.fire("abort",i.response?i.response.body:null)},p=>{u.fire("transfer",p)})},r=()=>{i.request&&(i.perceivedPerformanceUpdater.clear(),i.request.abort&&i.request.abort(),i.complete=!0)},o=()=>{r(),i.complete=!1,i.perceivedProgress=0,i.progress=0,i.timestamp=null,i.perceivedDuration=0,i.duration=0,i.request=null,i.response=null},l=a?()=>i.progress?Math.min(i.progress,i.perceivedProgress):null:()=>i.progress||null,s=a?()=>Math.min(i.duration,i.perceivedDuration):()=>i.duration,u={...li(),process:n,abort:r,getProgress:l,getDuration:s,reset:o};return u},An=e=>e.substring(0,e.lastIndexOf("."))||e,us=e=>{let t=[e.name,e.size,e.type];return e instanceof Blob||Mi(e)?t[0]=e.name||yn():Mi(e)?(t[1]=e.length,t[2]=wn(e)):pe(e)&&(t[0]=xt(e),t[1]=0,t[2]="application/octet-stream"),{name:t[0],size:t[1],type:t[2]}},ht=e=>!!(e instanceof File||e instanceof Blob&&e.name),Ln=e=>{if(!ce(e))return e;let t=ni(e)?[]:{};for(let i in e){if(!e.hasOwnProperty(i))continue;let a=e[i];t[i]=a&&ce(a)?Ln(a):a}return t},hs=(e=null,t=null,i=null)=>{let a=ki(),n={archived:!1,frozen:!1,released:!1,source:null,file:i,serverFileReference:t,transferId:null,processingAborted:!1,status:t?k.PROCESSING_COMPLETE:k.INIT,activeLoader:null,activeProcessor:null},r=null,o={},l=R=>n.status=R,s=(R,...S)=>{n.released||n.frozen||T.fire(R,...S)},u=()=>si(n.file.name),c=()=>n.file.type,d=()=>n.file.size,h=()=>n.file,f=(R,S,D)=>{if(n.source=R,T.fireSync("init"),n.file){T.fireSync("load-skip");return}n.file=us(R),S.on("init",()=>{s("load-init")}),S.on("meta",x=>{n.file.size=x.size,n.file.filename=x.filename,x.source&&(e=se.LIMBO,n.serverFileReference=x.source,n.status=k.PROCESSING_COMPLETE),s("load-meta")}),S.on("progress",x=>{l(k.LOADING),s("load-progress",x)}),S.on("error",x=>{l(k.LOAD_ERROR),s("load-request-error",x)}),S.on("abort",()=>{l(k.INIT),s("load-abort")}),S.on("load",x=>{n.activeLoader=null;let O=A=>{n.file=ht(A)?A:n.file,e===se.LIMBO&&n.serverFileReference?l(k.PROCESSING_COMPLETE):l(k.IDLE),s("load")},z=A=>{n.file=x,s("load-meta"),l(k.LOAD_ERROR),s("load-file-error",A)};if(n.serverFileReference){O(x);return}D(x,O,z)}),S.setSource(R),n.activeLoader=S,S.load()},p=()=>{n.activeLoader&&n.activeLoader.load()},m=()=>{if(n.activeLoader){n.activeLoader.abort();return}l(k.INIT),s("load-abort")},g=(R,S)=>{if(n.processingAborted){n.processingAborted=!1;return}if(l(k.PROCESSING),r=null,!(n.file instanceof Blob)){T.on("load",()=>{g(R,S)});return}R.on("load",O=>{n.transferId=null,n.serverFileReference=O}),R.on("transfer",O=>{n.transferId=O}),R.on("load-perceived",O=>{n.activeProcessor=null,n.transferId=null,n.serverFileReference=O,l(k.PROCESSING_COMPLETE),s("process-complete",O)}),R.on("start",()=>{s("process-start")}),R.on("error",O=>{n.activeProcessor=null,l(k.PROCESSING_ERROR),s("process-error",O)}),R.on("abort",O=>{n.activeProcessor=null,n.serverFileReference=O,l(k.IDLE),s("process-abort"),r&&r()}),R.on("progress",O=>{s("process-progress",O)});let D=O=>{n.archived||R.process(O,{...o})},x=console.error;S(n.file,D,x),n.activeProcessor=R},b=()=>{n.processingAborted=!1,l(k.PROCESSING_QUEUED)},E=()=>new Promise(R=>{if(!n.activeProcessor){n.processingAborted=!0,l(k.IDLE),s("process-abort"),R();return}r=()=>{R()},n.activeProcessor.abort()}),I=(R,S)=>new Promise((D,x)=>{let O=n.serverFileReference!==null?n.serverFileReference:n.transferId;if(O===null){D();return}R(O,()=>{n.serverFileReference=null,n.transferId=null,D()},z=>{if(!S){D();return}l(k.PROCESSING_REVERT_ERROR),s("process-revert-error"),x(z)}),l(k.IDLE),s("process-revert")}),_=(R,S,D)=>{let x=R.split("."),O=x[0],z=x.pop(),A=o;x.forEach(F=>A=A[F]),JSON.stringify(A[z])!==JSON.stringify(S)&&(A[z]=S,s("metadata-update",{key:O,value:o[O],silent:D}))},T={id:{get:()=>a},origin:{get:()=>e,set:R=>e=R},serverId:{get:()=>n.serverFileReference},transferId:{get:()=>n.transferId},status:{get:()=>n.status},filename:{get:()=>n.file.name},filenameWithoutExtension:{get:()=>An(n.file.name)},fileExtension:{get:u},fileType:{get:c},fileSize:{get:d},file:{get:h},relativePath:{get:()=>n.file._relativePath},source:{get:()=>n.source},getMetadata:R=>Ln(R?o[R]:o),setMetadata:(R,S,D)=>{if(ce(R)){let x=R;return Object.keys(x).forEach(O=>{_(O,x[O],S)}),R}return _(R,S,D),S},extend:(R,S)=>v[R]=S,abortLoad:m,retryLoad:p,requestProcessing:b,abortProcessing:E,load:f,process:g,revert:I,...li(),freeze:()=>n.frozen=!0,release:()=>n.released=!0,released:{get:()=>n.released},archive:()=>n.archived=!0,archived:{get:()=>n.archived}},v=Ue(T);return v},fs=(e,t)=>Ne(t)?0:pe(t)?e.findIndex(i=>i.id===t):-1,Ba=(e,t)=>{let i=fs(e,t);if(!(i<0))return e[i]||null},Ga=(e,t,i,a,n,r)=>{let o=je(null,e,{method:"GET",responseType:"blob"});return o.onload=l=>{let s=l.getAllResponseHeaders(),u=Yi(s).name||xt(e);t(ie("load",l.status,ut(l.response,u),s))},o.onerror=l=>{i(ie("error",l.status,l.statusText,l.getAllResponseHeaders()))},o.onheaders=l=>{r(ie("headers",l.status,null,l.getAllResponseHeaders()))},o.ontimeout=Qe(i),o.onprogress=a,o.onabort=n,o},Va=e=>(e.indexOf("//")===0&&(e=location.protocol+e),e.toLowerCase().replace("blob:","").replace(/([a-z])?:\/\//,"$1").split("/")[0]),ps=e=>(e.indexOf(":")>-1||e.indexOf("//")>-1)&&Va(location.href)!==Va(e),Xt=e=>(...t)=>qe(e)?e(...t):e,ms=e=>!ht(e.file),yi=(e,t)=>{clearTimeout(t.listUpdateTimeout),t.listUpdateTimeout=setTimeout(()=>{e("DID_UPDATE_ITEMS",{items:Me(t.items)})},0)},Ua=(e,...t)=>new Promise(i=>{if(!e)return i(!0);let a=e(...t);if(a==null)return i(!0);if(typeof a=="boolean")return i(a);typeof a.then=="function"&&a.then(i)}),Si=(e,t)=>{e.items.sort((i,a)=>t(ge(i),ge(a)))},ye=(e,t)=>({query:i,success:a=()=>{},failure:n=()=>{},...r}={})=>{let o=Xe(e.items,i);if(!o){n({error:ie("error",0,"Item not found"),file:null});return}t(o,a,n,r||{})},gs=(e,t,i)=>({ABORT_ALL:()=>{Me(i.items).forEach(a=>{a.freeze(),a.abortLoad(),a.abortProcessing()})},DID_SET_FILES:({value:a=[]})=>{let n=a.map(o=>({source:o.source?o.source:o,options:o.options})),r=Me(i.items);r.forEach(o=>{n.find(l=>l.source===o.source||l.source===o.file)||e("REMOVE_ITEM",{query:o,remove:!1})}),r=Me(i.items),n.forEach((o,l)=>{r.find(s=>s.source===o.source||s.file===o.source)||e("ADD_ITEM",{...o,interactionMethod:Se.NONE,index:l})})},DID_UPDATE_ITEM_METADATA:({id:a,action:n,change:r})=>{r.silent||(clearTimeout(i.itemUpdateTimeout),i.itemUpdateTimeout=setTimeout(()=>{let o=Ba(i.items,a);if(!t("IS_ASYNC")){Le("SHOULD_PREPARE_OUTPUT",!1,{item:o,query:t,action:n,change:r}).then(c=>{let d=t("GET_BEFORE_PREPARE_FILE");d&&(c=d(o,c)),c&&e("REQUEST_PREPARE_OUTPUT",{query:a,item:o,success:h=>{e("DID_PREPARE_OUTPUT",{id:a,file:h})}},!0)});return}o.origin===se.LOCAL&&e("DID_LOAD_ITEM",{id:o.id,error:null,serverFileReference:o.source});let l=()=>{setTimeout(()=>{e("REQUEST_ITEM_PROCESSING",{query:a})},32)},s=c=>{o.revert(At(i.options.server.url,i.options.server.revert),t("GET_FORCE_REVERT")).then(c?l:()=>{}).catch(()=>{})},u=c=>{o.abortProcessing().then(c?l:()=>{})};if(o.status===k.PROCESSING_COMPLETE)return s(i.options.instantUpload);if(o.status===k.PROCESSING)return u(i.options.instantUpload);i.options.instantUpload&&l()},0))},MOVE_ITEM:({query:a,index:n})=>{let r=Xe(i.items,a);if(!r)return;let o=i.items.indexOf(r);n=Rn(n,0,i.items.length-1),o!==n&&i.items.splice(n,0,i.items.splice(o,1)[0])},SORT:({compare:a})=>{Si(i,a),e("DID_SORT_ITEMS",{items:t("GET_ACTIVE_ITEMS")})},ADD_ITEMS:({items:a,index:n,interactionMethod:r,success:o=()=>{},failure:l=()=>{}})=>{let s=n;if(n===-1||typeof n>"u"){let f=t("GET_ITEM_INSERT_LOCATION"),p=t("GET_TOTAL_ITEMS");s=f==="before"?0:p}let u=t("GET_IGNORED_FILES"),c=f=>ht(f)?!u.includes(f.name.toLowerCase()):!Ne(f),h=a.filter(c).map(f=>new Promise((p,m)=>{e("ADD_ITEM",{interactionMethod:r,source:f.source||f,success:p,failure:m,index:s++,options:f.options||{}})}));Promise.all(h).then(o).catch(l)},ADD_ITEM:({source:a,index:n=-1,interactionMethod:r,success:o=()=>{},failure:l=()=>{},options:s={}})=>{if(Ne(a)){l({error:ie("error",0,"No source"),file:null});return}if(ht(a)&&i.options.ignoredFiles.includes(a.name.toLowerCase()))return;if(!$l(i)){if(i.options.allowMultiple||!i.options.allowMultiple&&!i.options.allowReplace){let E=ie("warning",0,"Max files");e("DID_THROW_MAX_FILES",{source:a,error:E}),l({error:E,file:null});return}let b=Me(i.items)[0];if(b.status===k.PROCESSING_COMPLETE||b.status===k.PROCESSING_REVERT_ERROR){let E=t("GET_FORCE_REVERT");if(b.revert(At(i.options.server.url,i.options.server.revert),E).then(()=>{E&&e("ADD_ITEM",{source:a,index:n,interactionMethod:r,success:o,failure:l,options:s})}).catch(()=>{}),E)return}e("REMOVE_ITEM",{query:b.id})}let u=s.type==="local"?se.LOCAL:s.type==="limbo"?se.LIMBO:se.INPUT,c=hs(u,u===se.INPUT?null:a,s.file);Object.keys(s.metadata||{}).forEach(b=>{c.setMetadata(b,s.metadata[b])}),Ke("DID_CREATE_ITEM",c,{query:t,dispatch:e});let d=t("GET_ITEM_INSERT_LOCATION");i.options.itemInsertLocationFreedom||(n=d==="before"?-1:i.items.length),Xl(i.items,c,n),qe(d)&&a&&Si(i,d);let h=c.id;c.on("init",()=>{e("DID_INIT_ITEM",{id:h})}),c.on("load-init",()=>{e("DID_START_ITEM_LOAD",{id:h})}),c.on("load-meta",()=>{e("DID_UPDATE_ITEM_META",{id:h})}),c.on("load-progress",b=>{e("DID_UPDATE_ITEM_LOAD_PROGRESS",{id:h,progress:b})}),c.on("load-request-error",b=>{let E=Xt(i.options.labelFileLoadError)(b);if(b.code>=400&&b.code<500){e("DID_THROW_ITEM_INVALID",{id:h,error:b,status:{main:E,sub:`${b.code} (${b.body})`}}),l({error:b,file:ge(c)});return}e("DID_THROW_ITEM_LOAD_ERROR",{id:h,error:b,status:{main:E,sub:i.options.labelTapToRetry}})}),c.on("load-file-error",b=>{e("DID_THROW_ITEM_INVALID",{id:h,error:b.status,status:b.status}),l({error:b.status,file:ge(c)})}),c.on("load-abort",()=>{e("REMOVE_ITEM",{query:h})}),c.on("load-skip",()=>{e("COMPLETE_LOAD_ITEM",{query:h,item:c,data:{source:a,success:o}})}),c.on("load",()=>{let b=E=>{if(!E){e("REMOVE_ITEM",{query:h});return}c.on("metadata-update",I=>{e("DID_UPDATE_ITEM_METADATA",{id:h,change:I})}),Le("SHOULD_PREPARE_OUTPUT",!1,{item:c,query:t}).then(I=>{let _=t("GET_BEFORE_PREPARE_FILE");_&&(I=_(c,I));let y=()=>{e("COMPLETE_LOAD_ITEM",{query:h,item:c,data:{source:a,success:o}}),yi(e,i)};if(I){e("REQUEST_PREPARE_OUTPUT",{query:h,item:c,success:T=>{e("DID_PREPARE_OUTPUT",{id:h,file:T}),y()}},!0);return}y()})};Le("DID_LOAD_ITEM",c,{query:t,dispatch:e}).then(()=>{Ua(t("GET_BEFORE_ADD_FILE"),ge(c)).then(b)}).catch(E=>{if(!E||!E.error||!E.status)return b(!1);e("DID_THROW_ITEM_INVALID",{id:h,error:E.error,status:E.status})})}),c.on("process-start",()=>{e("DID_START_ITEM_PROCESSING",{id:h})}),c.on("process-progress",b=>{e("DID_UPDATE_ITEM_PROCESS_PROGRESS",{id:h,progress:b})}),c.on("process-error",b=>{e("DID_THROW_ITEM_PROCESSING_ERROR",{id:h,error:b,status:{main:Xt(i.options.labelFileProcessingError)(b),sub:i.options.labelTapToRetry}})}),c.on("process-revert-error",b=>{e("DID_THROW_ITEM_PROCESSING_REVERT_ERROR",{id:h,error:b,status:{main:Xt(i.options.labelFileProcessingRevertError)(b),sub:i.options.labelTapToRetry}})}),c.on("process-complete",b=>{e("DID_COMPLETE_ITEM_PROCESSING",{id:h,error:null,serverFileReference:b}),e("DID_DEFINE_VALUE",{id:h,value:b})}),c.on("process-abort",()=>{e("DID_ABORT_ITEM_PROCESSING",{id:h})}),c.on("process-revert",()=>{e("DID_REVERT_ITEM_PROCESSING",{id:h}),e("DID_DEFINE_VALUE",{id:h,value:null})}),e("DID_ADD_ITEM",{id:h,index:n,interactionMethod:r}),yi(e,i);let{url:f,load:p,restore:m,fetch:g}=i.options.server||{};c.load(a,rs(u===se.INPUT?pe(a)&&ps(a)&&g?Ri(f,g):Ga:u===se.LIMBO?Ri(f,m):Ri(f,p)),(b,E,I)=>{Le("LOAD_FILE",b,{query:t}).then(E).catch(I)})},REQUEST_PREPARE_OUTPUT:({item:a,success:n,failure:r=()=>{}})=>{let o={error:ie("error",0,"Item not found"),file:null};if(a.archived)return r(o);Le("PREPARE_OUTPUT",a.file,{query:t,item:a}).then(l=>{Le("COMPLETE_PREPARE_OUTPUT",l,{query:t,item:a}).then(s=>{if(a.archived)return r(o);n(s)})})},COMPLETE_LOAD_ITEM:({item:a,data:n})=>{let{success:r,source:o}=n,l=t("GET_ITEM_INSERT_LOCATION");if(qe(l)&&o&&Si(i,l),e("DID_LOAD_ITEM",{id:a.id,error:null,serverFileReference:a.origin===se.INPUT?null:o}),r(ge(a)),a.origin===se.LOCAL){e("DID_LOAD_LOCAL_ITEM",{id:a.id});return}if(a.origin===se.LIMBO){e("DID_COMPLETE_ITEM_PROCESSING",{id:a.id,error:null,serverFileReference:o}),e("DID_DEFINE_VALUE",{id:a.id,value:a.serverId||o});return}t("IS_ASYNC")&&i.options.instantUpload&&e("REQUEST_ITEM_PROCESSING",{query:a.id})},RETRY_ITEM_LOAD:ye(i,a=>{a.retryLoad()}),REQUEST_ITEM_PREPARE:ye(i,(a,n,r)=>{e("REQUEST_PREPARE_OUTPUT",{query:a.id,item:a,success:o=>{e("DID_PREPARE_OUTPUT",{id:a.id,file:o}),n({file:a,output:o})},failure:r},!0)}),REQUEST_ITEM_PROCESSING:ye(i,(a,n,r)=>{if(!(a.status===k.IDLE||a.status===k.PROCESSING_ERROR)){let l=()=>e("REQUEST_ITEM_PROCESSING",{query:a,success:n,failure:r}),s=()=>document.hidden?l():setTimeout(l,32);a.status===k.PROCESSING_COMPLETE||a.status===k.PROCESSING_REVERT_ERROR?a.revert(At(i.options.server.url,i.options.server.revert),t("GET_FORCE_REVERT")).then(s).catch(()=>{}):a.status===k.PROCESSING&&a.abortProcessing().then(s);return}a.status!==k.PROCESSING_QUEUED&&(a.requestProcessing(),e("DID_REQUEST_ITEM_PROCESSING",{id:a.id}),e("PROCESS_ITEM",{query:a,success:n,failure:r},!0))}),PROCESS_ITEM:ye(i,(a,n,r)=>{let o=t("GET_MAX_PARALLEL_UPLOADS");if(t("GET_ITEMS_BY_STATUS",k.PROCESSING).length===o){i.processingQueue.push({id:a.id,success:n,failure:r});return}if(a.status===k.PROCESSING)return;let s=()=>{let c=i.processingQueue.shift();if(!c)return;let{id:d,success:h,failure:f}=c,p=Xe(i.items,d);if(!p||p.archived){s();return}e("PROCESS_ITEM",{query:d,success:h,failure:f},!0)};a.onOnce("process-complete",()=>{n(ge(a)),s();let c=i.options.server;if(i.options.instantUpload&&a.origin===se.LOCAL&&qe(c.remove)){let f=()=>{};a.origin=se.LIMBO,i.options.server.remove(a.source,f,f)}t("GET_ITEMS_BY_STATUS",k.PROCESSING_COMPLETE).length===i.items.length&&e("DID_COMPLETE_ITEM_PROCESSING_ALL")}),a.onOnce("process-error",c=>{r({error:c,file:ge(a)}),s()});let u=i.options;a.process(ds(ss(u.server.url,u.server.process,u.name,{chunkTransferId:a.transferId,chunkServer:u.server.patch,chunkUploads:u.chunkUploads,chunkForce:u.chunkForce,chunkSize:u.chunkSize,chunkRetryDelays:u.chunkRetryDelays}),{allowMinimumUploadDuration:t("GET_ALLOW_MINIMUM_UPLOAD_DURATION")}),(c,d,h)=>{Le("PREPARE_OUTPUT",c,{query:t,item:a}).then(f=>{e("DID_PREPARE_OUTPUT",{id:a.id,file:f}),d(f)}).catch(h)})}),RETRY_ITEM_PROCESSING:ye(i,a=>{e("REQUEST_ITEM_PROCESSING",{query:a})}),REQUEST_REMOVE_ITEM:ye(i,a=>{Ua(t("GET_BEFORE_REMOVE_FILE"),ge(a)).then(n=>{n&&e("REMOVE_ITEM",{query:a})})}),RELEASE_ITEM:ye(i,a=>{a.release()}),REMOVE_ITEM:ye(i,(a,n,r,o)=>{let l=()=>{let u=a.id;Ba(i.items,u).archive(),e("DID_REMOVE_ITEM",{error:null,id:u,item:a}),yi(e,i),n(ge(a))},s=i.options.server;a.origin===se.LOCAL&&s&&qe(s.remove)&&o.remove!==!1?(e("DID_START_ITEM_REMOVE",{id:a.id}),s.remove(a.source,()=>l(),u=>{e("DID_THROW_ITEM_REMOVE_ERROR",{id:a.id,error:ie("error",0,u,null),status:{main:Xt(i.options.labelFileRemoveError)(u),sub:i.options.labelTapToRetry}})})):((o.revert&&a.origin!==se.LOCAL&&a.serverId!==null||i.options.chunkUploads&&a.file.size>i.options.chunkSize||i.options.chunkUploads&&i.options.chunkForce)&&a.revert(At(i.options.server.url,i.options.server.revert),t("GET_FORCE_REVERT")),l())}),ABORT_ITEM_LOAD:ye(i,a=>{a.abortLoad()}),ABORT_ITEM_PROCESSING:ye(i,a=>{if(a.serverId){e("REVERT_ITEM_PROCESSING",{id:a.id});return}a.abortProcessing().then(()=>{i.options.instantUpload&&e("REMOVE_ITEM",{query:a.id})})}),REQUEST_REVERT_ITEM_PROCESSING:ye(i,a=>{if(!i.options.instantUpload){e("REVERT_ITEM_PROCESSING",{query:a});return}let n=l=>{l&&e("REVERT_ITEM_PROCESSING",{query:a})},r=t("GET_BEFORE_REMOVE_FILE");if(!r)return n(!0);let o=r(ge(a));if(o==null)return n(!0);if(typeof o=="boolean")return n(o);typeof o.then=="function"&&o.then(n)}),REVERT_ITEM_PROCESSING:ye(i,a=>{a.revert(At(i.options.server.url,i.options.server.revert),t("GET_FORCE_REVERT")).then(()=>{(i.options.instantUpload||ms(a))&&e("REMOVE_ITEM",{query:a.id})}).catch(()=>{})}),SET_OPTIONS:({options:a})=>{let n=Object.keys(a),r=Es.filter(l=>n.includes(l));[...r,...Object.keys(a).filter(l=>!r.includes(l))].forEach(l=>{e(`SET_${oi(l,"_").toUpperCase()}`,{value:a[l]})})}}),Es=["server"],$i=e=>e,Be=e=>document.createElement(e),ae=(e,t)=>{let i=e.childNodes[0];i?t!==i.nodeValue&&(i.nodeValue=t):(i=document.createTextNode(t),e.appendChild(i))},ka=(e,t,i,a)=>{let n=(a%360-90)*Math.PI/180;return{x:e+i*Math.cos(n),y:t+i*Math.sin(n)}},Ts=(e,t,i,a,n,r)=>{let o=ka(e,t,i,n),l=ka(e,t,i,a);return["M",o.x,o.y,"A",i,i,0,r,0,l.x,l.y].join(" ")},Is=(e,t,i,a,n)=>{let r=1;return n>a&&n-a<=.5&&(r=0),a>n&&a-n>=.5&&(r=0),Ts(e,t,i,Math.min(.9999,a)*360,Math.min(.9999,n)*360,r)},bs=({root:e,props:t})=>{t.spin=!1,t.progress=0,t.opacity=0;let i=ei("svg");e.ref.path=ei("path",{"stroke-width":2,"stroke-linecap":"round"}),i.appendChild(e.ref.path),e.ref.svg=i,e.appendChild(i)},_s=({root:e,props:t})=>{if(t.opacity===0)return;t.align&&(e.element.dataset.align=t.align);let i=parseInt(ne(e.ref.path,"stroke-width"),10),a=e.rect.element.width*.5,n=0,r=0;t.spin?(n=0,r=.5):(n=0,r=t.progress);let o=Is(a,a,a-i,n,r);ne(e.ref.path,"d",o),ne(e.ref.path,"stroke-opacity",t.spin||t.progress>0?1:0)},Ha=re({tag:"div",name:"progress-indicator",ignoreRectUpdate:!0,ignoreRect:!0,create:bs,write:_s,mixins:{apis:["progress","spin","align"],styles:["opacity"],animations:{opacity:{type:"tween",duration:500},progress:{type:"spring",stiffness:.95,damping:.65,mass:10}}}}),Rs=({root:e,props:t})=>{e.element.innerHTML=(t.icon||"")+`${t.label}`,t.isDisabled=!1},ys=({root:e,props:t})=>{let{isDisabled:i}=t,a=e.query("GET_DISABLED")||t.opacity===0;a&&!i?(t.isDisabled=!0,ne(e.element,"disabled","disabled")):!a&&i&&(t.isDisabled=!1,e.element.removeAttribute("disabled"))},Mn=re({tag:"button",attributes:{type:"button"},ignoreRect:!0,ignoreRectUpdate:!0,name:"file-action-button",mixins:{apis:["label"],styles:["translateX","translateY","scaleX","scaleY","opacity"],animations:{scaleX:"spring",scaleY:"spring",translateX:"spring",translateY:"spring",opacity:{type:"tween",duration:250}},listeners:!0},create:Rs,write:ys}),On=(e,t=".",i=1e3,a={})=>{let{labelBytes:n="bytes",labelKilobytes:r="KB",labelMegabytes:o="MB",labelGigabytes:l="GB"}=a;e=Math.round(Math.abs(e));let s=i,u=i*i,c=i*i*i;return ee.toFixed(t).split(".").filter(a=>a!=="0").join(i),Ss=({root:e,props:t})=>{let i=Be("span");i.className="filepond--file-info-main",ne(i,"aria-hidden","true"),e.appendChild(i),e.ref.fileName=i;let a=Be("span");a.className="filepond--file-info-sub",e.appendChild(a),e.ref.fileSize=a,ae(a,e.query("GET_LABEL_FILE_WAITING_FOR_SIZE")),ae(i,$i(e.query("GET_ITEM_NAME",t.id)))},Oi=({root:e,props:t})=>{ae(e.ref.fileSize,On(e.query("GET_ITEM_SIZE",t.id),".",e.query("GET_FILE_SIZE_BASE"),e.query("GET_FILE_SIZE_LABELS",e.query))),ae(e.ref.fileName,$i(e.query("GET_ITEM_NAME",t.id)))},Ya=({root:e,props:t})=>{if(ft(e.query("GET_ITEM_SIZE",t.id))){Oi({root:e,props:t});return}ae(e.ref.fileSize,e.query("GET_LABEL_FILE_SIZE_NOT_AVAILABLE"))},ws=re({name:"file-info",ignoreRect:!0,ignoreRectUpdate:!0,write:me({DID_LOAD_ITEM:Oi,DID_UPDATE_ITEM_META:Oi,DID_THROW_ITEM_LOAD_ERROR:Ya,DID_THROW_ITEM_INVALID:Ya}),didCreateView:e=>{Ke("CREATE_VIEW",{...e,view:e})},create:Ss,mixins:{styles:["translateX","translateY"],animations:{translateX:"spring",translateY:"spring"}}}),xn=e=>Math.round(e*100),vs=({root:e})=>{let t=Be("span");t.className="filepond--file-status-main",e.appendChild(t),e.ref.main=t;let i=Be("span");i.className="filepond--file-status-sub",e.appendChild(i),e.ref.sub=i,Dn({root:e,action:{progress:null}})},Dn=({root:e,action:t})=>{let i=t.progress===null?e.query("GET_LABEL_FILE_LOADING"):`${e.query("GET_LABEL_FILE_LOADING")} ${xn(t.progress)}%`;ae(e.ref.main,i),ae(e.ref.sub,e.query("GET_LABEL_TAP_TO_CANCEL"))},As=({root:e,action:t})=>{let i=t.progress===null?e.query("GET_LABEL_FILE_PROCESSING"):`${e.query("GET_LABEL_FILE_PROCESSING")} ${xn(t.progress)}%`;ae(e.ref.main,i),ae(e.ref.sub,e.query("GET_LABEL_TAP_TO_CANCEL"))},Ls=({root:e})=>{ae(e.ref.main,e.query("GET_LABEL_FILE_PROCESSING")),ae(e.ref.sub,e.query("GET_LABEL_TAP_TO_CANCEL"))},Ms=({root:e})=>{ae(e.ref.main,e.query("GET_LABEL_FILE_PROCESSING_ABORTED")),ae(e.ref.sub,e.query("GET_LABEL_TAP_TO_RETRY"))},Os=({root:e})=>{ae(e.ref.main,e.query("GET_LABEL_FILE_PROCESSING_COMPLETE")),ae(e.ref.sub,e.query("GET_LABEL_TAP_TO_UNDO"))},$a=({root:e})=>{ae(e.ref.main,""),ae(e.ref.sub,"")},Lt=({root:e,action:t})=>{ae(e.ref.main,t.status.main),ae(e.ref.sub,t.status.sub)},xs=re({name:"file-status",ignoreRect:!0,ignoreRectUpdate:!0,write:me({DID_LOAD_ITEM:$a,DID_REVERT_ITEM_PROCESSING:$a,DID_REQUEST_ITEM_PROCESSING:Ls,DID_ABORT_ITEM_PROCESSING:Ms,DID_COMPLETE_ITEM_PROCESSING:Os,DID_UPDATE_ITEM_PROCESS_PROGRESS:As,DID_UPDATE_ITEM_LOAD_PROGRESS:Dn,DID_THROW_ITEM_LOAD_ERROR:Lt,DID_THROW_ITEM_INVALID:Lt,DID_THROW_ITEM_PROCESSING_ERROR:Lt,DID_THROW_ITEM_PROCESSING_REVERT_ERROR:Lt,DID_THROW_ITEM_REMOVE_ERROR:Lt}),didCreateView:e=>{Ke("CREATE_VIEW",{...e,view:e})},create:vs,mixins:{styles:["translateX","translateY","opacity"],animations:{opacity:{type:"tween",duration:250},translateX:"spring",translateY:"spring"}}}),xi={AbortItemLoad:{label:"GET_LABEL_BUTTON_ABORT_ITEM_LOAD",action:"ABORT_ITEM_LOAD",className:"filepond--action-abort-item-load",align:"LOAD_INDICATOR_POSITION"},RetryItemLoad:{label:"GET_LABEL_BUTTON_RETRY_ITEM_LOAD",action:"RETRY_ITEM_LOAD",icon:"GET_ICON_RETRY",className:"filepond--action-retry-item-load",align:"BUTTON_PROCESS_ITEM_POSITION"},RemoveItem:{label:"GET_LABEL_BUTTON_REMOVE_ITEM",action:"REQUEST_REMOVE_ITEM",icon:"GET_ICON_REMOVE",className:"filepond--action-remove-item",align:"BUTTON_REMOVE_ITEM_POSITION"},ProcessItem:{label:"GET_LABEL_BUTTON_PROCESS_ITEM",action:"REQUEST_ITEM_PROCESSING",icon:"GET_ICON_PROCESS",className:"filepond--action-process-item",align:"BUTTON_PROCESS_ITEM_POSITION"},AbortItemProcessing:{label:"GET_LABEL_BUTTON_ABORT_ITEM_PROCESSING",action:"ABORT_ITEM_PROCESSING",className:"filepond--action-abort-item-processing",align:"BUTTON_PROCESS_ITEM_POSITION"},RetryItemProcessing:{label:"GET_LABEL_BUTTON_RETRY_ITEM_PROCESSING",action:"RETRY_ITEM_PROCESSING",icon:"GET_ICON_RETRY",className:"filepond--action-retry-item-processing",align:"BUTTON_PROCESS_ITEM_POSITION"},RevertItemProcessing:{label:"GET_LABEL_BUTTON_UNDO_ITEM_PROCESSING",action:"REQUEST_REVERT_ITEM_PROCESSING",icon:"GET_ICON_UNDO",className:"filepond--action-revert-item-processing",align:"BUTTON_PROCESS_ITEM_POSITION"}},Di=[];te(xi,e=>{Di.push(e)});var be=e=>{if(Pi(e)==="right")return 0;let t=e.ref.buttonRemoveItem.rect.element;return t.hidden?null:t.width+t.left},Ds=e=>e.ref.buttonAbortItemLoad.rect.element.width,jt=e=>Math.floor(e.ref.buttonRemoveItem.rect.element.height/4),Ps=e=>Math.floor(e.ref.buttonRemoveItem.rect.element.left/2),Fs=e=>e.query("GET_STYLE_LOAD_INDICATOR_POSITION"),Cs=e=>e.query("GET_STYLE_PROGRESS_INDICATOR_POSITION"),Pi=e=>e.query("GET_STYLE_BUTTON_REMOVE_ITEM_POSITION"),zs={buttonAbortItemLoad:{opacity:0},buttonRetryItemLoad:{opacity:0},buttonRemoveItem:{opacity:0},buttonProcessItem:{opacity:0},buttonAbortItemProcessing:{opacity:0},buttonRetryItemProcessing:{opacity:0},buttonRevertItemProcessing:{opacity:0},loadProgressIndicator:{opacity:0,align:Fs},processProgressIndicator:{opacity:0,align:Cs},processingCompleteIndicator:{opacity:0,scaleX:.75,scaleY:.75},info:{translateX:0,translateY:0,opacity:0},status:{translateX:0,translateY:0,opacity:0}},qa={buttonRemoveItem:{opacity:1},buttonProcessItem:{opacity:1},info:{translateX:be},status:{translateX:be}},wi={buttonAbortItemProcessing:{opacity:1},processProgressIndicator:{opacity:1},status:{opacity:1}},lt={DID_THROW_ITEM_INVALID:{buttonRemoveItem:{opacity:1},info:{translateX:be},status:{translateX:be,opacity:1}},DID_START_ITEM_LOAD:{buttonAbortItemLoad:{opacity:1},loadProgressIndicator:{opacity:1},status:{opacity:1}},DID_THROW_ITEM_LOAD_ERROR:{buttonRetryItemLoad:{opacity:1},buttonRemoveItem:{opacity:1},info:{translateX:be},status:{opacity:1}},DID_START_ITEM_REMOVE:{processProgressIndicator:{opacity:1,align:Pi},info:{translateX:be},status:{opacity:0}},DID_THROW_ITEM_REMOVE_ERROR:{processProgressIndicator:{opacity:0,align:Pi},buttonRemoveItem:{opacity:1},info:{translateX:be},status:{opacity:1,translateX:be}},DID_LOAD_ITEM:qa,DID_LOAD_LOCAL_ITEM:{buttonRemoveItem:{opacity:1},info:{translateX:be},status:{translateX:be}},DID_START_ITEM_PROCESSING:wi,DID_REQUEST_ITEM_PROCESSING:wi,DID_UPDATE_ITEM_PROCESS_PROGRESS:wi,DID_COMPLETE_ITEM_PROCESSING:{buttonRevertItemProcessing:{opacity:1},info:{opacity:1},status:{opacity:1}},DID_THROW_ITEM_PROCESSING_ERROR:{buttonRemoveItem:{opacity:1},buttonRetryItemProcessing:{opacity:1},status:{opacity:1},info:{translateX:be}},DID_THROW_ITEM_PROCESSING_REVERT_ERROR:{buttonRevertItemProcessing:{opacity:1},status:{opacity:1},info:{opacity:1}},DID_ABORT_ITEM_PROCESSING:{buttonRemoveItem:{opacity:1},buttonProcessItem:{opacity:1},info:{translateX:be},status:{opacity:1}},DID_REVERT_ITEM_PROCESSING:qa},Ns=re({create:({root:e})=>{e.element.innerHTML=e.query("GET_ICON_DONE")},name:"processing-complete-indicator",ignoreRect:!0,mixins:{styles:["scaleX","scaleY","opacity"],animations:{scaleX:"spring",scaleY:"spring",opacity:{type:"tween",duration:250}}}}),Bs=({root:e,props:t})=>{let i=Object.keys(xi).reduce((p,m)=>(p[m]={...xi[m]},p),{}),{id:a}=t,n=e.query("GET_ALLOW_REVERT"),r=e.query("GET_ALLOW_REMOVE"),o=e.query("GET_ALLOW_PROCESS"),l=e.query("GET_INSTANT_UPLOAD"),s=e.query("IS_ASYNC"),u=e.query("GET_STYLE_BUTTON_REMOVE_ITEM_ALIGN"),c;s?o&&!n?c=p=>!/RevertItemProcessing/.test(p):!o&&n?c=p=>!/ProcessItem|RetryItemProcessing|AbortItemProcessing/.test(p):!o&&!n&&(c=p=>!/Process/.test(p)):c=p=>!/Process/.test(p);let d=c?Di.filter(c):Di.concat();if(l&&n&&(i.RevertItemProcessing.label="GET_LABEL_BUTTON_REMOVE_ITEM",i.RevertItemProcessing.icon="GET_ICON_REMOVE"),s&&!n){let p=lt.DID_COMPLETE_ITEM_PROCESSING;p.info.translateX=Ps,p.info.translateY=jt,p.status.translateY=jt,p.processingCompleteIndicator={opacity:1,scaleX:1,scaleY:1}}if(s&&!o&&(["DID_START_ITEM_PROCESSING","DID_REQUEST_ITEM_PROCESSING","DID_UPDATE_ITEM_PROCESS_PROGRESS","DID_THROW_ITEM_PROCESSING_ERROR"].forEach(p=>{lt[p].status.translateY=jt}),lt.DID_THROW_ITEM_PROCESSING_ERROR.status.translateX=Ds),u&&n){i.RevertItemProcessing.align="BUTTON_REMOVE_ITEM_POSITION";let p=lt.DID_COMPLETE_ITEM_PROCESSING;p.info.translateX=be,p.status.translateY=jt,p.processingCompleteIndicator={opacity:1,scaleX:1,scaleY:1}}r||(i.RemoveItem.disabled=!0),te(i,(p,m)=>{let g=e.createChildView(Mn,{label:e.query(m.label),icon:e.query(m.icon),opacity:0});d.includes(p)&&e.appendChildView(g),m.disabled&&(g.element.setAttribute("disabled","disabled"),g.element.setAttribute("hidden","hidden")),g.element.dataset.align=e.query(`GET_STYLE_${m.align}`),g.element.classList.add(m.className),g.on("click",b=>{b.stopPropagation(),!m.disabled&&e.dispatch(m.action,{query:a})}),e.ref[`button${p}`]=g}),e.ref.processingCompleteIndicator=e.appendChildView(e.createChildView(Ns)),e.ref.processingCompleteIndicator.element.dataset.align=e.query("GET_STYLE_BUTTON_PROCESS_ITEM_POSITION"),e.ref.info=e.appendChildView(e.createChildView(ws,{id:a})),e.ref.status=e.appendChildView(e.createChildView(xs,{id:a}));let h=e.appendChildView(e.createChildView(Ha,{opacity:0,align:e.query("GET_STYLE_LOAD_INDICATOR_POSITION")}));h.element.classList.add("filepond--load-indicator"),e.ref.loadProgressIndicator=h;let f=e.appendChildView(e.createChildView(Ha,{opacity:0,align:e.query("GET_STYLE_PROGRESS_INDICATOR_POSITION")}));f.element.classList.add("filepond--process-indicator"),e.ref.processProgressIndicator=f,e.ref.activeStyles=[]},Gs=({root:e,actions:t,props:i})=>{Vs({root:e,actions:t,props:i});let a=t.concat().filter(n=>/^DID_/.test(n.type)).reverse().find(n=>lt[n.type]);if(a){e.ref.activeStyles=[];let n=lt[a.type];te(zs,(r,o)=>{let l=e.ref[r];te(o,(s,u)=>{let c=n[r]&&typeof n[r][s]<"u"?n[r][s]:u;e.ref.activeStyles.push({control:l,key:s,value:c})})})}e.ref.activeStyles.forEach(({control:n,key:r,value:o})=>{n[r]=typeof o=="function"?o(e):o})},Vs=me({DID_SET_LABEL_BUTTON_ABORT_ITEM_PROCESSING:({root:e,action:t})=>{e.ref.buttonAbortItemProcessing.label=t.value},DID_SET_LABEL_BUTTON_ABORT_ITEM_LOAD:({root:e,action:t})=>{e.ref.buttonAbortItemLoad.label=t.value},DID_SET_LABEL_BUTTON_ABORT_ITEM_REMOVAL:({root:e,action:t})=>{e.ref.buttonAbortItemRemoval.label=t.value},DID_REQUEST_ITEM_PROCESSING:({root:e})=>{e.ref.processProgressIndicator.spin=!0,e.ref.processProgressIndicator.progress=0},DID_START_ITEM_LOAD:({root:e})=>{e.ref.loadProgressIndicator.spin=!0,e.ref.loadProgressIndicator.progress=0},DID_START_ITEM_REMOVE:({root:e})=>{e.ref.processProgressIndicator.spin=!0,e.ref.processProgressIndicator.progress=0},DID_UPDATE_ITEM_LOAD_PROGRESS:({root:e,action:t})=>{e.ref.loadProgressIndicator.spin=!1,e.ref.loadProgressIndicator.progress=t.progress},DID_UPDATE_ITEM_PROCESS_PROGRESS:({root:e,action:t})=>{e.ref.processProgressIndicator.spin=!1,e.ref.processProgressIndicator.progress=t.progress}}),Us=re({create:Bs,write:Gs,didCreateView:e=>{Ke("CREATE_VIEW",{...e,view:e})},name:"file"}),ks=({root:e,props:t})=>{e.ref.fileName=Be("legend"),e.appendChild(e.ref.fileName),e.ref.file=e.appendChildView(e.createChildView(Us,{id:t.id})),e.ref.data=!1},Hs=({root:e,props:t})=>{ae(e.ref.fileName,$i(e.query("GET_ITEM_NAME",t.id)))},Ws=re({create:ks,ignoreRect:!0,write:me({DID_LOAD_ITEM:Hs}),didCreateView:e=>{Ke("CREATE_VIEW",{...e,view:e})},tag:"fieldset",name:"file-wrapper"}),Xa={type:"spring",damping:.6,mass:7},Ys=({root:e,props:t})=>{[{name:"top"},{name:"center",props:{translateY:null,scaleY:null},mixins:{animations:{scaleY:Xa},styles:["translateY","scaleY"]}},{name:"bottom",props:{translateY:null},mixins:{animations:{translateY:Xa},styles:["translateY"]}}].forEach(i=>{$s(e,i,t.name)}),e.element.classList.add(`filepond--${t.name}`),e.ref.scalable=null},$s=(e,t,i)=>{let a=re({name:`panel-${t.name} filepond--${i}`,mixins:t.mixins,ignoreRectUpdate:!0}),n=e.createChildView(a,t.props);e.ref[t.name]=e.appendChildView(n)},qs=({root:e,props:t})=>{if((e.ref.scalable===null||t.scalable!==e.ref.scalable)&&(e.ref.scalable=fn(t.scalable)?t.scalable:!0,e.element.dataset.scalable=e.ref.scalable),!t.height)return;let i=e.ref.top.rect.element,a=e.ref.bottom.rect.element,n=Math.max(i.height+a.height,t.height);e.ref.center.translateY=i.height,e.ref.center.scaleY=(n-i.height-a.height)/100,e.ref.bottom.translateY=n-a.height},Pn=re({name:"panel",read:({root:e,props:t})=>t.heightCurrent=e.ref.bottom.translateY,write:qs,create:Ys,ignoreRect:!0,mixins:{apis:["height","heightCurrent","scalable"]}}),Xs=e=>{let t=e.map(a=>a.id),i;return{setIndex:a=>{i=a},getIndex:()=>i,getItemIndex:a=>t.indexOf(a.id)}},ja={type:"spring",stiffness:.75,damping:.45,mass:10},Qa="spring",Za={DID_START_ITEM_LOAD:"busy",DID_UPDATE_ITEM_LOAD_PROGRESS:"loading",DID_THROW_ITEM_INVALID:"load-invalid",DID_THROW_ITEM_LOAD_ERROR:"load-error",DID_LOAD_ITEM:"idle",DID_THROW_ITEM_REMOVE_ERROR:"remove-error",DID_START_ITEM_REMOVE:"busy",DID_START_ITEM_PROCESSING:"busy processing",DID_REQUEST_ITEM_PROCESSING:"busy processing",DID_UPDATE_ITEM_PROCESS_PROGRESS:"processing",DID_COMPLETE_ITEM_PROCESSING:"processing-complete",DID_THROW_ITEM_PROCESSING_ERROR:"processing-error",DID_THROW_ITEM_PROCESSING_REVERT_ERROR:"processing-revert-error",DID_ABORT_ITEM_PROCESSING:"cancelled",DID_REVERT_ITEM_PROCESSING:"idle"},js=({root:e,props:t})=>{if(e.ref.handleClick=a=>e.dispatch("DID_ACTIVATE_ITEM",{id:t.id}),e.element.id=`filepond--item-${t.id}`,e.element.addEventListener("click",e.ref.handleClick),e.ref.container=e.appendChildView(e.createChildView(Ws,{id:t.id})),e.ref.panel=e.appendChildView(e.createChildView(Pn,{name:"item-panel"})),e.ref.panel.height=null,t.markedForRemoval=!1,!e.query("GET_ALLOW_REORDER"))return;e.element.dataset.dragState="idle";let i=a=>{if(!a.isPrimary)return;let n=!1,r={x:a.pageX,y:a.pageY};t.dragOrigin={x:e.translateX,y:e.translateY},t.dragCenter={x:a.offsetX,y:a.offsetY};let o=Xs(e.query("GET_ACTIVE_ITEMS"));e.dispatch("DID_GRAB_ITEM",{id:t.id,dragState:o});let l=u=>{if(!u.isPrimary)return;u.stopPropagation(),u.preventDefault(),t.dragOffset={x:u.pageX-r.x,y:u.pageY-r.y},t.dragOffset.x*t.dragOffset.x+t.dragOffset.y*t.dragOffset.y>16&&!n&&(n=!0,e.element.removeEventListener("click",e.ref.handleClick)),e.dispatch("DID_DRAG_ITEM",{id:t.id,dragState:o})},s=u=>{u.isPrimary&&(document.removeEventListener("pointermove",l),document.removeEventListener("pointerup",s),t.dragOffset={x:u.pageX-r.x,y:u.pageY-r.y},e.dispatch("DID_DROP_ITEM",{id:t.id,dragState:o}),n&&setTimeout(()=>e.element.addEventListener("click",e.ref.handleClick),0))};document.addEventListener("pointermove",l),document.addEventListener("pointerup",s)};e.element.addEventListener("pointerdown",i)},Qs=me({DID_UPDATE_PANEL_HEIGHT:({root:e,action:t})=>{e.height=t.height}}),Zs=me({DID_GRAB_ITEM:({root:e,props:t})=>{t.dragOrigin={x:e.translateX,y:e.translateY}},DID_DRAG_ITEM:({root:e})=>{e.element.dataset.dragState="drag"},DID_DROP_ITEM:({root:e,props:t})=>{t.dragOffset=null,t.dragOrigin=null,e.element.dataset.dragState="drop"}},({root:e,actions:t,props:i,shouldOptimize:a})=>{e.element.dataset.dragState==="drop"&&e.scaleX<=1&&(e.element.dataset.dragState="idle");let n=t.concat().filter(o=>/^DID_/.test(o.type)).reverse().find(o=>Za[o.type]);n&&n.type!==i.currentState&&(i.currentState=n.type,e.element.dataset.filepondItemState=Za[i.currentState]||"");let r=e.query("GET_ITEM_PANEL_ASPECT_RATIO")||e.query("GET_PANEL_ASPECT_RATIO");r?a||(e.height=e.rect.element.width*r):(Qs({root:e,actions:t,props:i}),!e.height&&e.ref.container.rect.element.height>0&&(e.height=e.ref.container.rect.element.height)),a&&(e.ref.panel.height=null),e.ref.panel.height=e.height}),Ks=re({create:js,write:Zs,destroy:({root:e,props:t})=>{e.element.removeEventListener("click",e.ref.handleClick),e.dispatch("RELEASE_ITEM",{query:t.id})},tag:"li",name:"item",mixins:{apis:["id","interactionMethod","markedForRemoval","spawnDate","dragCenter","dragOrigin","dragOffset"],styles:["translateX","translateY","scaleX","scaleY","opacity","height"],animations:{scaleX:Qa,scaleY:Qa,translateX:ja,translateY:ja,opacity:{type:"tween",duration:150}}}}),qi=(e,t)=>Math.max(1,Math.floor((e+1)/t)),Xi=(e,t,i)=>{if(!i)return;let a=e.rect.element.width,n=t.length,r=null;if(n===0||i.topE){if(i.left{ne(e.element,"role","list"),e.ref.lastItemSpanwDate=Date.now()},ec=({root:e,action:t})=>{let{id:i,index:a,interactionMethod:n}=t;e.ref.addIndex=a;let r=Date.now(),o=r,l=1;if(n!==Se.NONE){l=0;let s=e.query("GET_ITEM_INSERT_INTERVAL"),u=r-e.ref.lastItemSpanwDate;o=u{e.dragOffset?(e.translateX=null,e.translateY=null,e.translateX=e.dragOrigin.x+e.dragOffset.x,e.translateY=e.dragOrigin.y+e.dragOffset.y,e.scaleX=1.025,e.scaleY=1.025):(e.translateX=t,e.translateY=i,Date.now()>e.spawnDate&&(e.opacity===0&&tc(e,t,i,a,n),e.scaleX=1,e.scaleY=1,e.opacity=1))},tc=(e,t,i,a,n)=>{e.interactionMethod===Se.NONE?(e.translateX=null,e.translateX=t,e.translateY=null,e.translateY=i):e.interactionMethod===Se.DROP?(e.translateX=null,e.translateX=t-a*20,e.translateY=null,e.translateY=i-n*10,e.scaleX=.8,e.scaleY=.8):e.interactionMethod===Se.BROWSE?(e.translateY=null,e.translateY=i-30):e.interactionMethod===Se.API&&(e.translateX=null,e.translateX=t-30,e.translateY=null)},ic=({root:e,action:t})=>{let{id:i}=t,a=e.childViews.find(n=>n.id===i);a&&(a.scaleX=.9,a.scaleY=.9,a.opacity=0,a.markedForRemoval=!0)},vi=e=>e.rect.element.height+e.rect.element.marginBottom*.5+e.rect.element.marginTop*.5,ac=e=>e.rect.element.width+e.rect.element.marginLeft*.5+e.rect.element.marginRight*.5,nc=({root:e,action:t})=>{let{id:i,dragState:a}=t,n=e.query("GET_ITEM",{id:i}),r=e.childViews.find(g=>g.id===i),o=e.childViews.length,l=a.getItemIndex(n);if(!r)return;let s={x:r.dragOrigin.x+r.dragOffset.x+r.dragCenter.x,y:r.dragOrigin.y+r.dragOffset.y+r.dragCenter.y},u=vi(r),c=ac(r),d=Math.floor(e.rect.outer.width/c);d>o&&(d=o);let h=Math.floor(o/d+1);Qt.setHeight=u*h,Qt.setWidth=c*d;var f={y:Math.floor(s.y/u),x:Math.floor(s.x/c),getGridIndex:function(){return s.y>Qt.getHeight||s.y<0||s.x>Qt.getWidth||s.x<0?l:this.y*d+this.x},getColIndex:function(){let b=e.query("GET_ACTIVE_ITEMS"),E=e.childViews.filter(x=>x.rect.element.height),I=b.map(x=>E.find(O=>O.id===x.id)),_=I.findIndex(x=>x===r),y=vi(r),T=I.length,v=T,R=0,S=0,D=0;for(let x=0;xx){if(s.y1?f.getGridIndex():f.getColIndex();e.dispatch("MOVE_ITEM",{query:r,index:p});let m=a.getIndex();if(m===void 0||m!==p){if(a.setIndex(p),m===void 0)return;e.dispatch("DID_REORDER_ITEMS",{items:e.query("GET_ACTIVE_ITEMS"),origin:l,target:p})}},rc=me({DID_ADD_ITEM:ec,DID_REMOVE_ITEM:ic,DID_DRAG_ITEM:nc}),oc=({root:e,props:t,actions:i,shouldOptimize:a})=>{rc({root:e,props:t,actions:i});let{dragCoordinates:n}=t,r=e.rect.element.width,o=e.childViews.filter(I=>I.rect.element.height),l=e.query("GET_ACTIVE_ITEMS").map(I=>o.find(_=>_.id===I.id)).filter(I=>I),s=n?Xi(e,l,n):null,u=e.ref.addIndex||null;e.ref.addIndex=null;let c=0,d=0,h=0;if(l.length===0)return;let f=l[0].rect.element,p=f.marginTop+f.marginBottom,m=f.marginLeft+f.marginRight,g=f.width+m,b=f.height+p,E=qi(r,g);if(E===1){let I=0,_=0;l.forEach((y,T)=>{if(s){let S=T-s;S===-2?_=-p*.25:S===-1?_=-p*.75:S===0?_=p*.75:S===1?_=p*.25:_=0}a&&(y.translateX=null,y.translateY=null),y.markedForRemoval||Ka(y,0,I+_);let R=(y.rect.element.height+p)*(y.markedForRemoval?y.opacity:1);I+=R})}else{let I=0,_=0;l.forEach((y,T)=>{T===s&&(c=1),T===u&&(h+=1),y.markedForRemoval&&y.opacity<.5&&(d-=1);let v=T+h+c+d,R=v%E,S=Math.floor(v/E),D=R*g,x=S*b,O=Math.sign(D-I),z=Math.sign(x-_);I=D,_=x,!y.markedForRemoval&&(a&&(y.translateX=null,y.translateY=null),Ka(y,D,x,O,z))})}},lc=(e,t)=>t.filter(i=>i.data&&i.data.id?e.id===i.data.id:!0),sc=re({create:Js,write:oc,tag:"ul",name:"list",didWriteView:({root:e})=>{e.childViews.filter(t=>t.markedForRemoval&&t.opacity===0&&t.resting).forEach(t=>{t._destroy(),e.removeChildView(t)})},filterFrameActionsForChild:lc,mixins:{apis:["dragCoordinates"]}}),cc=({root:e,props:t})=>{e.ref.list=e.appendChildView(e.createChildView(sc)),t.dragCoordinates=null,t.overflowing=!1},dc=({root:e,props:t,action:i})=>{e.query("GET_ITEM_INSERT_LOCATION_FREEDOM")&&(t.dragCoordinates={left:i.position.scopeLeft-e.ref.list.rect.element.left,top:i.position.scopeTop-(e.rect.outer.top+e.rect.element.marginTop+e.rect.element.scrollTop)})},uc=({props:e})=>{e.dragCoordinates=null},hc=me({DID_DRAG:dc,DID_END_DRAG:uc}),fc=({root:e,props:t,actions:i})=>{if(hc({root:e,props:t,actions:i}),e.ref.list.dragCoordinates=t.dragCoordinates,t.overflowing&&!t.overflow&&(t.overflowing=!1,e.element.dataset.state="",e.height=null),t.overflow){let a=Math.round(t.overflow);a!==e.height&&(t.overflowing=!0,e.element.dataset.state="overflow",e.height=a)}},pc=re({create:cc,write:fc,name:"list-scroller",mixins:{apis:["overflow","dragCoordinates"],styles:["height","translateY"],animations:{translateY:"spring"}}}),Oe=(e,t,i,a="")=>{i?ne(e,t,a):e.removeAttribute(t)},mc=e=>{if(!(!e||e.value==="")){try{e.value=""}catch{}if(e.value){let t=Be("form"),i=e.parentNode,a=e.nextSibling;t.appendChild(e),t.reset(),a?i.insertBefore(e,a):i.appendChild(e)}}},gc=({root:e,props:t})=>{e.element.id=`filepond--browser-${t.id}`,ne(e.element,"name",e.query("GET_NAME")),ne(e.element,"aria-controls",`filepond--assistant-${t.id}`),ne(e.element,"aria-labelledby",`filepond--drop-label-${t.id}`),Fn({root:e,action:{value:e.query("GET_ACCEPTED_FILE_TYPES")}}),Cn({root:e,action:{value:e.query("GET_ALLOW_MULTIPLE")}}),zn({root:e,action:{value:e.query("GET_ALLOW_DIRECTORIES_ONLY")}}),Fi({root:e}),Nn({root:e,action:{value:e.query("GET_REQUIRED")}}),Bn({root:e,action:{value:e.query("GET_CAPTURE_METHOD")}}),e.ref.handleChange=i=>{if(!e.element.value)return;let a=Array.from(e.element.files).map(n=>(n._relativePath=n.webkitRelativePath,n));setTimeout(()=>{t.onload(a),mc(e.element)},250)},e.element.addEventListener("change",e.ref.handleChange)},Fn=({root:e,action:t})=>{e.query("GET_ALLOW_SYNC_ACCEPT_ATTRIBUTE")&&Oe(e.element,"accept",!!t.value,t.value?t.value.join(","):"")},Cn=({root:e,action:t})=>{Oe(e.element,"multiple",t.value)},zn=({root:e,action:t})=>{Oe(e.element,"webkitdirectory",t.value)},Fi=({root:e})=>{let t=e.query("GET_DISABLED"),i=e.query("GET_ALLOW_BROWSE"),a=t||!i;Oe(e.element,"disabled",a)},Nn=({root:e,action:t})=>{t.value?e.query("GET_TOTAL_ITEMS")===0&&Oe(e.element,"required",!0):Oe(e.element,"required",!1)},Bn=({root:e,action:t})=>{Oe(e.element,"capture",!!t.value,t.value===!0?"":t.value)},Ja=({root:e})=>{let{element:t}=e;e.query("GET_TOTAL_ITEMS")>0?(Oe(t,"required",!1),Oe(t,"name",!1)):(Oe(t,"name",!0,e.query("GET_NAME")),e.query("GET_CHECK_VALIDITY")&&t.setCustomValidity(""),e.query("GET_REQUIRED")&&Oe(t,"required",!0))},Ec=({root:e})=>{e.query("GET_CHECK_VALIDITY")&&e.element.setCustomValidity(e.query("GET_LABEL_INVALID_FIELD"))},Tc=re({tag:"input",name:"browser",ignoreRect:!0,ignoreRectUpdate:!0,attributes:{type:"file"},create:gc,destroy:({root:e})=>{e.element.removeEventListener("change",e.ref.handleChange)},write:me({DID_LOAD_ITEM:Ja,DID_REMOVE_ITEM:Ja,DID_THROW_ITEM_INVALID:Ec,DID_SET_DISABLED:Fi,DID_SET_ALLOW_BROWSE:Fi,DID_SET_ALLOW_DIRECTORIES_ONLY:zn,DID_SET_ALLOW_MULTIPLE:Cn,DID_SET_ACCEPTED_FILE_TYPES:Fn,DID_SET_CAPTURE_METHOD:Bn,DID_SET_REQUIRED:Nn})}),en={ENTER:13,SPACE:32},Ic=({root:e,props:t})=>{let i=Be("label");ne(i,"for",`filepond--browser-${t.id}`),ne(i,"id",`filepond--drop-label-${t.id}`),ne(i,"aria-hidden","true"),e.ref.handleKeyDown=a=>{(a.keyCode===en.ENTER||a.keyCode===en.SPACE)&&(a.preventDefault(),e.ref.label.click())},e.ref.handleClick=a=>{a.target===i||i.contains(a.target)||e.ref.label.click()},i.addEventListener("keydown",e.ref.handleKeyDown),e.element.addEventListener("click",e.ref.handleClick),Gn(i,t.caption),e.appendChild(i),e.ref.label=i},Gn=(e,t)=>{e.innerHTML=t;let i=e.querySelector(".filepond--label-action");return i&&ne(i,"tabindex","0"),t},bc=re({name:"drop-label",ignoreRect:!0,create:Ic,destroy:({root:e})=>{e.ref.label.addEventListener("keydown",e.ref.handleKeyDown),e.element.removeEventListener("click",e.ref.handleClick)},write:me({DID_SET_LABEL_IDLE:({root:e,action:t})=>{Gn(e.ref.label,t.value)}}),mixins:{styles:["opacity","translateX","translateY"],animations:{opacity:{type:"tween",duration:150},translateX:"spring",translateY:"spring"}}}),_c=re({name:"drip-blob",ignoreRect:!0,mixins:{styles:["translateX","translateY","scaleX","scaleY","opacity"],animations:{scaleX:"spring",scaleY:"spring",translateX:"spring",translateY:"spring",opacity:{type:"tween",duration:250}}}}),Rc=({root:e})=>{let t=e.rect.element.width*.5,i=e.rect.element.height*.5;e.ref.blob=e.appendChildView(e.createChildView(_c,{opacity:0,scaleX:2.5,scaleY:2.5,translateX:t,translateY:i}))},yc=({root:e,action:t})=>{if(!e.ref.blob){Rc({root:e});return}e.ref.blob.translateX=t.position.scopeLeft,e.ref.blob.translateY=t.position.scopeTop,e.ref.blob.scaleX=1,e.ref.blob.scaleY=1,e.ref.blob.opacity=1},Sc=({root:e})=>{e.ref.blob&&(e.ref.blob.opacity=0)},wc=({root:e})=>{e.ref.blob&&(e.ref.blob.scaleX=2.5,e.ref.blob.scaleY=2.5,e.ref.blob.opacity=0)},vc=({root:e,props:t,actions:i})=>{Ac({root:e,props:t,actions:i});let{blob:a}=e.ref;i.length===0&&a&&a.opacity===0&&(e.removeChildView(a),e.ref.blob=null)},Ac=me({DID_DRAG:yc,DID_DROP:wc,DID_END_DRAG:Sc}),Lc=re({ignoreRect:!0,ignoreRectUpdate:!0,name:"drip",write:vc}),Vn=(e,t)=>{try{let i=new DataTransfer;t.forEach(a=>{a instanceof File?i.items.add(a):i.items.add(new File([a],a.name,{type:a.type}))}),e.files=i.files}catch{return!1}return!0},Mc=({root:e})=>e.ref.fields={},ci=(e,t)=>e.ref.fields[t],ji=e=>{e.query("GET_ACTIVE_ITEMS").forEach(t=>{e.ref.fields[t.id]&&e.element.appendChild(e.ref.fields[t.id])})},tn=({root:e})=>ji(e),Oc=({root:e,action:t})=>{let n=!(e.query("GET_ITEM",t.id).origin===se.LOCAL)&&e.query("SHOULD_UPDATE_FILE_INPUT"),r=Be("input");r.type=n?"file":"hidden",r.name=e.query("GET_NAME"),r.disabled=e.query("GET_DISABLED"),e.ref.fields[t.id]=r,ji(e)},xc=({root:e,action:t})=>{let i=ci(e,t.id);if(!i||(t.serverFileReference!==null&&(i.value=t.serverFileReference),!e.query("SHOULD_UPDATE_FILE_INPUT")))return;let a=e.query("GET_ITEM",t.id);Vn(i,[a.file])},Dc=({root:e,action:t})=>{e.query("SHOULD_UPDATE_FILE_INPUT")&&setTimeout(()=>{let i=ci(e,t.id);i&&Vn(i,[t.file])},0)},Pc=({root:e})=>{e.element.disabled=e.query("GET_DISABLED")},Fc=({root:e,action:t})=>{let i=ci(e,t.id);i&&(i.parentNode&&i.parentNode.removeChild(i),delete e.ref.fields[t.id])},Cc=({root:e,action:t})=>{let i=ci(e,t.id);i&&(t.value===null?i.removeAttribute("value"):i.type!="file"&&(i.value=t.value),ji(e))},zc=me({DID_SET_DISABLED:Pc,DID_ADD_ITEM:Oc,DID_LOAD_ITEM:xc,DID_REMOVE_ITEM:Fc,DID_DEFINE_VALUE:Cc,DID_PREPARE_OUTPUT:Dc,DID_REORDER_ITEMS:tn,DID_SORT_ITEMS:tn}),Nc=re({tag:"fieldset",name:"data",create:Mc,write:zc,ignoreRect:!0}),Bc=e=>"getRootNode"in e?e.getRootNode():document,Gc=["jpg","jpeg","png","gif","bmp","webp","svg","tiff"],Vc=["css","csv","html","txt"],Uc={zip:"zip|compressed",epub:"application/epub+zip"},Un=(e="")=>(e=e.toLowerCase(),Gc.includes(e)?"image/"+(e==="jpg"?"jpeg":e==="svg"?"svg+xml":e):Vc.includes(e)?"text/"+e:Uc[e]||""),Qi=e=>new Promise((t,i)=>{let a=jc(e);if(a.length&&!kc(e))return t(a);Hc(e).then(t)}),kc=e=>e.files?e.files.length>0:!1,Hc=e=>new Promise((t,i)=>{let a=(e.items?Array.from(e.items):[]).filter(n=>Wc(n)).map(n=>Yc(n));if(!a.length){t(e.files?Array.from(e.files):[]);return}Promise.all(a).then(n=>{let r=[];n.forEach(o=>{r.push.apply(r,o)}),t(r.filter(o=>o).map(o=>(o._relativePath||(o._relativePath=o.webkitRelativePath),o)))}).catch(console.error)}),Wc=e=>{if(kn(e)){let t=Zi(e);if(t)return t.isFile||t.isDirectory}return e.kind==="file"},Yc=e=>new Promise((t,i)=>{if(Xc(e)){$c(Zi(e)).then(t).catch(i);return}t([e.getAsFile()])}),$c=e=>new Promise((t,i)=>{let a=[],n=0,r=0,o=()=>{r===0&&n===0&&t(a)},l=s=>{n++;let u=s.createReader(),c=()=>{u.readEntries(d=>{if(d.length===0){n--,o();return}d.forEach(h=>{h.isDirectory?l(h):(r++,h.file(f=>{let p=qc(f);h.fullPath&&(p._relativePath=h.fullPath),a.push(p),r--,o()}))}),c()},i)};c()};l(e)}),qc=e=>{if(e.type.length)return e;let t=e.lastModifiedDate,i=e.name,a=Un(si(e.name));return a.length&&(e=e.slice(0,e.size,a),e.name=i,e.lastModifiedDate=t),e},Xc=e=>kn(e)&&(Zi(e)||{}).isDirectory,kn=e=>"webkitGetAsEntry"in e,Zi=e=>e.webkitGetAsEntry(),jc=e=>{let t=[];try{if(t=Zc(e),t.length)return t;t=Qc(e)}catch{}return t},Qc=e=>{let t=e.getData("url");return typeof t=="string"&&t.length?[t]:[]},Zc=e=>{let t=e.getData("text/html");if(typeof t=="string"&&t.length){let i=t.match(/src\s*=\s*"(.+?)"/);if(i)return[i[1]]}return[]},ii=[],Ze=e=>({pageLeft:e.pageX,pageTop:e.pageY,scopeLeft:e.offsetX||e.layerX,scopeTop:e.offsetY||e.layerY}),Kc=(e,t,i)=>{let a=Jc(t),n={element:e,filterElement:i,state:null,ondrop:()=>{},onenter:()=>{},ondrag:()=>{},onexit:()=>{},onload:()=>{},allowdrop:()=>{}};return n.destroy=a.addListener(n),n},Jc=e=>{let t=ii.find(a=>a.element===e);if(t)return t;let i=ed(e);return ii.push(i),i},ed=e=>{let t=[],i={dragenter:id,dragover:ad,dragleave:rd,drop:nd},a={};te(i,(r,o)=>{a[r]=o(e,t),e.addEventListener(r,a[r],!1)});let n={element:e,addListener:r=>(t.push(r),()=>{t.splice(t.indexOf(r),1),t.length===0&&(ii.splice(ii.indexOf(n),1),te(i,o=>{e.removeEventListener(o,a[o],!1)}))})};return n},td=(e,t)=>("elementFromPoint"in e||(e=document),e.elementFromPoint(t.x,t.y)),Ki=(e,t)=>{let i=Bc(t),a=td(i,{x:e.pageX-window.pageXOffset,y:e.pageY-window.pageYOffset});return a===t||t.contains(a)},Hn=null,Zt=(e,t)=>{try{e.dropEffect=t}catch{}},id=(e,t)=>i=>{i.preventDefault(),Hn=i.target,t.forEach(a=>{let{element:n,onenter:r}=a;Ki(i,n)&&(a.state="enter",r(Ze(i)))})},ad=(e,t)=>i=>{i.preventDefault();let a=i.dataTransfer;Qi(a).then(n=>{let r=!1;t.some(o=>{let{filterElement:l,element:s,onenter:u,onexit:c,ondrag:d,allowdrop:h}=o;Zt(a,"copy");let f=h(n);if(!f){Zt(a,"none");return}if(Ki(i,s)){if(r=!0,o.state===null){o.state="enter",u(Ze(i));return}if(o.state="over",l&&!f){Zt(a,"none");return}d(Ze(i))}else l&&!r&&Zt(a,"none"),o.state&&(o.state=null,c(Ze(i)))})})},nd=(e,t)=>i=>{i.preventDefault();let a=i.dataTransfer;Qi(a).then(n=>{t.forEach(r=>{let{filterElement:o,element:l,ondrop:s,onexit:u,allowdrop:c}=r;if(r.state=null,!(o&&!Ki(i,l))){if(!c(n))return u(Ze(i));s(Ze(i),n)}})})},rd=(e,t)=>i=>{Hn===i.target&&t.forEach(a=>{let{onexit:n}=a;a.state=null,n(Ze(i))})},od=(e,t,i)=>{e.classList.add("filepond--hopper");let{catchesDropsOnPage:a,requiresDropOnElement:n,filterItems:r=c=>c}=i,o=Kc(e,a?document.documentElement:e,n),l="",s="";o.allowdrop=c=>t(r(c)),o.ondrop=(c,d)=>{let h=r(d);if(!t(h)){u.ondragend(c);return}s="drag-drop",u.onload(h,c)},o.ondrag=c=>{u.ondrag(c)},o.onenter=c=>{s="drag-over",u.ondragstart(c)},o.onexit=c=>{s="drag-exit",u.ondragend(c)};let u={updateHopperState:()=>{l!==s&&(e.dataset.hopperState=s,l=s)},onload:()=>{},ondragstart:()=>{},ondrag:()=>{},ondragend:()=>{},destroy:()=>{o.destroy()}};return u},Ci=!1,st=[],Wn=e=>{let t=document.activeElement;if(t&&/textarea|input/i.test(t.nodeName)){let i=!1,a=t;for(;a!==document.body;){if(a.classList.contains("filepond--root")){i=!0;break}a=a.parentNode}if(!i)return}Qi(e.clipboardData).then(i=>{i.length&&st.forEach(a=>a(i))})},ld=e=>{st.includes(e)||(st.push(e),!Ci&&(Ci=!0,document.addEventListener("paste",Wn)))},sd=e=>{Hi(st,st.indexOf(e)),st.length===0&&(document.removeEventListener("paste",Wn),Ci=!1)},cd=()=>{let e=i=>{t.onload(i)},t={destroy:()=>{sd(e)},onload:()=>{}};return ld(e),t},dd=({root:e,props:t})=>{e.element.id=`filepond--assistant-${t.id}`,ne(e.element,"role","status"),ne(e.element,"aria-live","polite"),ne(e.element,"aria-relevant","additions")},an=null,nn=null,Ai=[],di=(e,t)=>{e.element.textContent=t},ud=e=>{e.element.textContent=""},Yn=(e,t,i)=>{let a=e.query("GET_TOTAL_ITEMS");di(e,`${i} ${t}, ${a} ${a===1?e.query("GET_LABEL_FILE_COUNT_SINGULAR"):e.query("GET_LABEL_FILE_COUNT_PLURAL")}`),clearTimeout(nn),nn=setTimeout(()=>{ud(e)},1500)},$n=e=>e.element.parentNode.contains(document.activeElement),hd=({root:e,action:t})=>{if(!$n(e))return;e.element.textContent="";let i=e.query("GET_ITEM",t.id);Ai.push(i.filename),clearTimeout(an),an=setTimeout(()=>{Yn(e,Ai.join(", "),e.query("GET_LABEL_FILE_ADDED")),Ai.length=0},750)},fd=({root:e,action:t})=>{if(!$n(e))return;let i=t.item;Yn(e,i.filename,e.query("GET_LABEL_FILE_REMOVED"))},pd=({root:e,action:t})=>{let a=e.query("GET_ITEM",t.id).filename,n=e.query("GET_LABEL_FILE_PROCESSING_COMPLETE");di(e,`${a} ${n}`)},rn=({root:e,action:t})=>{let a=e.query("GET_ITEM",t.id).filename,n=e.query("GET_LABEL_FILE_PROCESSING_ABORTED");di(e,`${a} ${n}`)},Kt=({root:e,action:t})=>{let a=e.query("GET_ITEM",t.id).filename;di(e,`${t.status.main} ${a} ${t.status.sub}`)},md=re({create:dd,ignoreRect:!0,ignoreRectUpdate:!0,write:me({DID_LOAD_ITEM:hd,DID_REMOVE_ITEM:fd,DID_COMPLETE_ITEM_PROCESSING:pd,DID_ABORT_ITEM_PROCESSING:rn,DID_REVERT_ITEM_PROCESSING:rn,DID_THROW_ITEM_REMOVE_ERROR:Kt,DID_THROW_ITEM_LOAD_ERROR:Kt,DID_THROW_ITEM_INVALID:Kt,DID_THROW_ITEM_PROCESSING_ERROR:Kt}),tag:"span",name:"assistant"}),qn=(e,t="-")=>e.replace(new RegExp(`${t}.`,"g"),i=>i.charAt(1).toUpperCase()),Xn=(e,t=16,i=!0)=>{let a=Date.now(),n=null;return(...r)=>{clearTimeout(n);let o=Date.now()-a,l=()=>{a=Date.now(),e(...r)};oe.preventDefault(),Ed=({root:e,props:t})=>{let i=e.query("GET_ID");i&&(e.element.id=i);let a=e.query("GET_CLASS_NAME");a&&a.split(" ").filter(s=>s.length).forEach(s=>{e.element.classList.add(s)}),e.ref.label=e.appendChildView(e.createChildView(bc,{...t,translateY:null,caption:e.query("GET_LABEL_IDLE")})),e.ref.list=e.appendChildView(e.createChildView(pc,{translateY:null})),e.ref.panel=e.appendChildView(e.createChildView(Pn,{name:"panel-root"})),e.ref.assistant=e.appendChildView(e.createChildView(md,{...t})),e.ref.data=e.appendChildView(e.createChildView(Nc,{...t})),e.ref.measure=Be("div"),e.ref.measure.style.height="100%",e.element.appendChild(e.ref.measure),e.ref.bounds=null,e.query("GET_STYLES").filter(s=>!Ne(s.value)).map(({name:s,value:u})=>{e.element.dataset[s]=u}),e.ref.widthPrevious=null,e.ref.widthUpdated=Xn(()=>{e.ref.updateHistory=[],e.dispatch("DID_RESIZE_ROOT")},250),e.ref.previousAspectRatio=null,e.ref.updateHistory=[];let n=window.matchMedia("(pointer: fine) and (hover: hover)").matches,r="PointerEvent"in window;e.query("GET_ALLOW_REORDER")&&r&&!n&&(e.element.addEventListener("touchmove",ai,{passive:!1}),e.element.addEventListener("gesturestart",ai));let o=e.query("GET_CREDITS");if(o.length===2){let s=document.createElement("a");s.className="filepond--credits",s.setAttribute("aria-hidden","true"),s.href=o[0],s.tabindex=-1,s.target="_blank",s.rel="noopener noreferrer",s.textContent=o[1],e.element.appendChild(s),e.ref.credits=s}},Td=({root:e,props:t,actions:i})=>{if(yd({root:e,props:t,actions:i}),i.filter(T=>/^DID_SET_STYLE_/.test(T.type)).filter(T=>!Ne(T.data.value)).map(({type:T,data:v})=>{let R=qn(T.substring(8).toLowerCase(),"_");e.element.dataset[R]=v.value,e.invalidateLayout()}),e.rect.element.hidden)return;e.rect.element.width!==e.ref.widthPrevious&&(e.ref.widthPrevious=e.rect.element.width,e.ref.widthUpdated());let a=e.ref.bounds;a||(a=e.ref.bounds=_d(e),e.element.removeChild(e.ref.measure),e.ref.measure=null);let{hopper:n,label:r,list:o,panel:l}=e.ref;n&&n.updateHopperState();let s=e.query("GET_PANEL_ASPECT_RATIO"),u=e.query("GET_ALLOW_MULTIPLE"),c=e.query("GET_TOTAL_ITEMS"),d=u?e.query("GET_MAX_FILES")||gd:1,h=c===d,f=i.find(T=>T.type==="DID_ADD_ITEM");if(h&&f){let T=f.data.interactionMethod;r.opacity=0,u?r.translateY=-40:T===Se.API?r.translateX=40:T===Se.BROWSE?r.translateY=40:r.translateY=30}else h||(r.opacity=1,r.translateX=0,r.translateY=0);let p=Id(e),m=bd(e),g=r.rect.element.height,b=!u||h?0:g,E=h?o.rect.element.marginTop:0,I=c===0?0:o.rect.element.marginBottom,_=b+E+m.visual+I,y=b+E+m.bounds+I;if(o.translateY=Math.max(0,b-o.rect.element.marginTop)-p.top,s){let T=e.rect.element.width,v=T*s;s!==e.ref.previousAspectRatio&&(e.ref.previousAspectRatio=s,e.ref.updateHistory=[]);let R=e.ref.updateHistory;R.push(T);let S=2;if(R.length>S*2){let x=R.length,O=x-10,z=0;for(let A=x;A>=O;A--)if(R[A]===R[A-2]&&z++,z>=S)return}l.scalable=!1,l.height=v;let D=v-b-(I-p.bottom)-(h?E:0);m.visual>D?o.overflow=D:o.overflow=null,e.height=v}else if(a.fixedHeight){l.scalable=!1;let T=a.fixedHeight-b-(I-p.bottom)-(h?E:0);m.visual>T?o.overflow=T:o.overflow=null}else if(a.cappedHeight){let T=_>=a.cappedHeight,v=Math.min(a.cappedHeight,_);l.scalable=!0,l.height=T?v:v-p.top-p.bottom;let R=v-b-(I-p.bottom)-(h?E:0);_>a.cappedHeight&&m.visual>R?o.overflow=R:o.overflow=null,e.height=Math.min(a.cappedHeight,y-p.top-p.bottom)}else{let T=c>0?p.top+p.bottom:0;l.scalable=!0,l.height=Math.max(g,_-T),e.height=Math.max(g,y-T)}e.ref.credits&&l.heightCurrent&&(e.ref.credits.style.transform=`translateY(${l.heightCurrent}px)`)},Id=e=>{let t=e.ref.list.childViews[0].childViews[0];return t?{top:t.rect.element.marginTop,bottom:t.rect.element.marginBottom}:{top:0,bottom:0}},bd=e=>{let t=0,i=0,a=e.ref.list,n=a.childViews[0],r=n.childViews.filter(E=>E.rect.element.height),o=e.query("GET_ACTIVE_ITEMS").map(E=>r.find(I=>I.id===E.id)).filter(E=>E);if(o.length===0)return{visual:t,bounds:i};let l=n.rect.element.width,s=Xi(n,o,a.dragCoordinates),u=o[0].rect.element,c=u.marginTop+u.marginBottom,d=u.marginLeft+u.marginRight,h=u.width+d,f=u.height+c,p=typeof s<"u"&&s>=0?1:0,m=o.find(E=>E.markedForRemoval&&E.opacity<.45)?-1:0,g=o.length+p+m,b=qi(l,h);return b===1?o.forEach(E=>{let I=E.rect.element.height+c;i+=I,t+=I*E.opacity}):(i=Math.ceil(g/b)*f,t=i),{visual:t,bounds:i}},_d=e=>{let t=e.ref.measureHeight||null;return{cappedHeight:parseInt(e.style.maxHeight,10)||null,fixedHeight:t===0?null:t}},Ji=(e,t)=>{let i=e.query("GET_ALLOW_REPLACE"),a=e.query("GET_ALLOW_MULTIPLE"),n=e.query("GET_TOTAL_ITEMS"),r=e.query("GET_MAX_FILES"),o=t.length;return!a&&o>1?(e.dispatch("DID_THROW_MAX_FILES",{source:t,error:ie("warning",0,"Max files")}),!0):(r=a?r:1,!a&&i?!1:ft(r)&&n+o>r?(e.dispatch("DID_THROW_MAX_FILES",{source:t,error:ie("warning",0,"Max files")}),!0):!1)},Rd=(e,t,i)=>{let a=e.childViews[0];return Xi(a,t,{left:i.scopeLeft-a.rect.element.left,top:i.scopeTop-(e.rect.outer.top+e.rect.element.marginTop+e.rect.element.scrollTop)})},on=e=>{let t=e.query("GET_ALLOW_DROP"),i=e.query("GET_DISABLED"),a=t&&!i;if(a&&!e.ref.hopper){let n=od(e.element,r=>{let o=e.query("GET_BEFORE_DROP_FILE")||(()=>!0);return e.query("GET_DROP_VALIDATION")?r.every(s=>Ke("ALLOW_HOPPER_ITEM",s,{query:e.query}).every(u=>u===!0)&&o(s)):!0},{filterItems:r=>{let o=e.query("GET_IGNORED_FILES");return r.filter(l=>ht(l)?!o.includes(l.name.toLowerCase()):!0)},catchesDropsOnPage:e.query("GET_DROP_ON_PAGE"),requiresDropOnElement:e.query("GET_DROP_ON_ELEMENT")});n.onload=(r,o)=>{let s=e.ref.list.childViews[0].childViews.filter(c=>c.rect.element.height),u=e.query("GET_ACTIVE_ITEMS").map(c=>s.find(d=>d.id===c.id)).filter(c=>c);Le("ADD_ITEMS",r,{dispatch:e.dispatch}).then(c=>{if(Ji(e,c))return!1;e.dispatch("ADD_ITEMS",{items:c,index:Rd(e.ref.list,u,o),interactionMethod:Se.DROP})}),e.dispatch("DID_DROP",{position:o}),e.dispatch("DID_END_DRAG",{position:o})},n.ondragstart=r=>{e.dispatch("DID_START_DRAG",{position:r})},n.ondrag=Xn(r=>{e.dispatch("DID_DRAG",{position:r})}),n.ondragend=r=>{e.dispatch("DID_END_DRAG",{position:r})},e.ref.hopper=n,e.ref.drip=e.appendChildView(e.createChildView(Lc))}else!a&&e.ref.hopper&&(e.ref.hopper.destroy(),e.ref.hopper=null,e.removeChildView(e.ref.drip))},ln=(e,t)=>{let i=e.query("GET_ALLOW_BROWSE"),a=e.query("GET_DISABLED"),n=i&&!a;n&&!e.ref.browser?e.ref.browser=e.appendChildView(e.createChildView(Tc,{...t,onload:r=>{Le("ADD_ITEMS",r,{dispatch:e.dispatch}).then(o=>{if(Ji(e,o))return!1;e.dispatch("ADD_ITEMS",{items:o,index:-1,interactionMethod:Se.BROWSE})})}}),0):!n&&e.ref.browser&&(e.removeChildView(e.ref.browser),e.ref.browser=null)},sn=e=>{let t=e.query("GET_ALLOW_PASTE"),i=e.query("GET_DISABLED"),a=t&&!i;a&&!e.ref.paster?(e.ref.paster=cd(),e.ref.paster.onload=n=>{Le("ADD_ITEMS",n,{dispatch:e.dispatch}).then(r=>{if(Ji(e,r))return!1;e.dispatch("ADD_ITEMS",{items:r,index:-1,interactionMethod:Se.PASTE})})}):!a&&e.ref.paster&&(e.ref.paster.destroy(),e.ref.paster=null)},yd=me({DID_SET_ALLOW_BROWSE:({root:e,props:t})=>{ln(e,t)},DID_SET_ALLOW_DROP:({root:e})=>{on(e)},DID_SET_ALLOW_PASTE:({root:e})=>{sn(e)},DID_SET_DISABLED:({root:e,props:t})=>{on(e),sn(e),ln(e,t),e.query("GET_DISABLED")?e.element.dataset.disabled="disabled":e.element.removeAttribute("data-disabled")}}),Sd=re({name:"root",read:({root:e})=>{e.ref.measure&&(e.ref.measureHeight=e.ref.measure.offsetHeight)},create:Ed,write:Td,destroy:({root:e})=>{e.ref.paster&&e.ref.paster.destroy(),e.ref.hopper&&e.ref.hopper.destroy(),e.element.removeEventListener("touchmove",ai),e.element.removeEventListener("gesturestart",ai)},mixins:{styles:["height"]}}),wd=(e={})=>{let t=null,i=ti(),a=ko(Al(i),[Yl,Ol(i)],[gs,Ml(i)]);a.dispatch("SET_OPTIONS",{options:e});let n=()=>{document.hidden||a.dispatch("KICK")};document.addEventListener("visibilitychange",n);let r=null,o=!1,l=!1,s=null,u=null,c=()=>{o||(o=!0),clearTimeout(r),r=setTimeout(()=>{o=!1,s=null,u=null,l&&(l=!1,a.dispatch("DID_STOP_RESIZE"))},500)};window.addEventListener("resize",c);let d=Sd(a,{id:ki()}),h=!1,f=!1,p={_read:()=>{o&&(u=window.innerWidth,s||(s=u),!l&&u!==s&&(a.dispatch("DID_START_RESIZE"),l=!0)),f&&h&&(h=d.element.offsetParent===null),!h&&(d._read(),f=d.rect.element.hidden)},_write:w=>{let L=a.processActionQueue().filter(C=>!/^SET_/.test(C.type));h&&!L.length||(E(L),h=d._write(w,L,l),Pl(a.query("GET_ITEMS")),h&&a.processDispatchQueue())}},m=w=>L=>{let C={type:w};if(!L)return C;if(L.hasOwnProperty("error")&&(C.error=L.error?{...L.error}:null),L.status&&(C.status={...L.status}),L.file&&(C.output=L.file),L.source)C.file=L.source;else if(L.item||L.id){let P=L.item?L.item:a.query("GET_ITEM",L.id);C.file=P?ge(P):null}return L.items&&(C.items=L.items.map(ge)),/progress/.test(w)&&(C.progress=L.progress),L.hasOwnProperty("origin")&&L.hasOwnProperty("target")&&(C.origin=L.origin,C.target=L.target),C},g={DID_DESTROY:m("destroy"),DID_INIT:m("init"),DID_THROW_MAX_FILES:m("warning"),DID_INIT_ITEM:m("initfile"),DID_START_ITEM_LOAD:m("addfilestart"),DID_UPDATE_ITEM_LOAD_PROGRESS:m("addfileprogress"),DID_LOAD_ITEM:m("addfile"),DID_THROW_ITEM_INVALID:[m("error"),m("addfile")],DID_THROW_ITEM_LOAD_ERROR:[m("error"),m("addfile")],DID_THROW_ITEM_REMOVE_ERROR:[m("error"),m("removefile")],DID_PREPARE_OUTPUT:m("preparefile"),DID_START_ITEM_PROCESSING:m("processfilestart"),DID_UPDATE_ITEM_PROCESS_PROGRESS:m("processfileprogress"),DID_ABORT_ITEM_PROCESSING:m("processfileabort"),DID_COMPLETE_ITEM_PROCESSING:m("processfile"),DID_COMPLETE_ITEM_PROCESSING_ALL:m("processfiles"),DID_REVERT_ITEM_PROCESSING:m("processfilerevert"),DID_THROW_ITEM_PROCESSING_ERROR:[m("error"),m("processfile")],DID_REMOVE_ITEM:m("removefile"),DID_UPDATE_ITEMS:m("updatefiles"),DID_ACTIVATE_ITEM:m("activatefile"),DID_REORDER_ITEMS:m("reorderfiles")},b=w=>{let L={pond:F,...w};delete L.type,d.element.dispatchEvent(new CustomEvent(`FilePond:${w.type}`,{detail:L,bubbles:!0,cancelable:!0,composed:!0}));let C=[];w.hasOwnProperty("error")&&C.push(w.error),w.hasOwnProperty("file")&&C.push(w.file);let P=["type","error","file"];Object.keys(w).filter(B=>!P.includes(B)).forEach(B=>C.push(w[B])),F.fire(w.type,...C);let G=a.query(`GET_ON${w.type.toUpperCase()}`);G&&G(...C)},E=w=>{w.length&&w.filter(L=>g[L.type]).forEach(L=>{let C=g[L.type];(Array.isArray(C)?C:[C]).forEach(P=>{L.type==="DID_INIT_ITEM"?b(P(L.data)):setTimeout(()=>{b(P(L.data))},0)})})},I=w=>a.dispatch("SET_OPTIONS",{options:w}),_=w=>a.query("GET_ACTIVE_ITEM",w),y=w=>new Promise((L,C)=>{a.dispatch("REQUEST_ITEM_PREPARE",{query:w,success:P=>{L(P)},failure:P=>{C(P)}})}),T=(w,L={})=>new Promise((C,P)=>{S([{source:w,options:L}],{index:L.index}).then(G=>C(G&&G[0])).catch(P)}),v=w=>w.file&&w.id,R=(w,L)=>(typeof w=="object"&&!v(w)&&!L&&(L=w,w=void 0),a.dispatch("REMOVE_ITEM",{...L,query:w}),a.query("GET_ACTIVE_ITEM",w)===null),S=(...w)=>new Promise((L,C)=>{let P=[],G={};if(ni(w[0]))P.push.apply(P,w[0]),Object.assign(G,w[1]||{});else{let B=w[w.length-1];typeof B=="object"&&!(B instanceof Blob)&&Object.assign(G,w.pop()),P.push(...w)}a.dispatch("ADD_ITEMS",{items:P,index:G.index,interactionMethod:Se.API,success:L,failure:C})}),D=()=>a.query("GET_ACTIVE_ITEMS"),x=w=>new Promise((L,C)=>{a.dispatch("REQUEST_ITEM_PROCESSING",{query:w,success:P=>{L(P)},failure:P=>{C(P)}})}),O=(...w)=>{let L=Array.isArray(w[0])?w[0]:w,C=L.length?L:D();return Promise.all(C.map(y))},z=(...w)=>{let L=Array.isArray(w[0])?w[0]:w;if(!L.length){let C=D().filter(P=>!(P.status===k.IDLE&&P.origin===se.LOCAL)&&P.status!==k.PROCESSING&&P.status!==k.PROCESSING_COMPLETE&&P.status!==k.PROCESSING_REVERT_ERROR);return Promise.all(C.map(x))}return Promise.all(L.map(x))},A=(...w)=>{let L=Array.isArray(w[0])?w[0]:w,C;typeof L[L.length-1]=="object"?C=L.pop():Array.isArray(w[0])&&(C=w[1]);let P=D();return L.length?L.map(B=>$e(B)?P[B]?P[B].id:null:B).filter(B=>B).map(B=>R(B,C)):Promise.all(P.map(B=>R(B,C)))},F={...li(),...p,...Ll(a,i),setOptions:I,addFile:T,addFiles:S,getFile:_,processFile:x,prepareFile:y,removeFile:R,moveFile:(w,L)=>a.dispatch("MOVE_ITEM",{query:w,index:L}),getFiles:D,processFiles:z,removeFiles:A,prepareFiles:O,sort:w=>a.dispatch("SORT",{compare:w}),browse:()=>{var w=d.element.querySelector("input[type=file]");w&&w.click()},destroy:()=>{F.fire("destroy",d.element),a.dispatch("ABORT_ALL"),d._destroy(),window.removeEventListener("resize",c),document.removeEventListener("visibilitychange",n),a.dispatch("DID_DESTROY")},insertBefore:w=>Oa(d.element,w),insertAfter:w=>xa(d.element,w),appendTo:w=>w.appendChild(d.element),replaceElement:w=>{Oa(d.element,w),w.parentNode.removeChild(w),t=w},restoreElement:()=>{t&&(xa(t,d.element),d.element.parentNode.removeChild(d.element),t=null)},isAttachedTo:w=>d.element===w||t===w,element:{get:()=>d.element},status:{get:()=>a.query("GET_STATUS")}};return a.dispatch("DID_INIT"),Ue(F)},jn=(e={})=>{let t={};return te(ti(),(a,n)=>{t[a]=n[0]}),wd({...t,...e})},vd=e=>e.charAt(0).toLowerCase()+e.slice(1),Ad=e=>qn(e.replace(/^data-/,"")),Qn=(e,t)=>{te(t,(i,a)=>{te(e,(n,r)=>{let o=new RegExp(i);if(!o.test(n)||(delete e[n],a===!1))return;if(pe(a)){e[a]=r;return}let s=a.group;ce(a)&&!e[s]&&(e[s]={}),e[s][vd(n.replace(o,""))]=r}),a.mapping&&Qn(e[a.group],a.mapping)})},Ld=(e,t={})=>{let i=[];te(e.attributes,n=>{i.push(e.attributes[n])});let a=i.filter(n=>n.name).reduce((n,r)=>{let o=ne(e,r.name);return n[Ad(r.name)]=o===r.name?!0:o,n},{});return Qn(a,t),a},Md=(e,t={})=>{let i={"^class$":"className","^multiple$":"allowMultiple","^capture$":"captureMethod","^webkitdirectory$":"allowDirectoriesOnly","^server":{group:"server",mapping:{"^process":{group:"process"},"^revert":{group:"revert"},"^fetch":{group:"fetch"},"^restore":{group:"restore"},"^load":{group:"load"}}},"^type$":!1,"^files$":!1};Ke("SET_ATTRIBUTE_TO_OPTION_MAP",i);let a={...t},n=Ld(e.nodeName==="FIELDSET"?e.querySelector("input[type=file]"):e,i);Object.keys(n).forEach(o=>{ce(n[o])?(ce(a[o])||(a[o]={}),Object.assign(a[o],n[o])):a[o]=n[o]}),a.files=(t.files||[]).concat(Array.from(e.querySelectorAll("input:not([type=file])")).map(o=>({source:o.value,options:{type:o.dataset.type}})));let r=jn(a);return e.files&&Array.from(e.files).forEach(o=>{r.addFile(o)}),r.replaceElement(e),r},Od=(...e)=>Uo(e[0])?Md(...e):jn(...e),xd=["fire","_read","_write"],cn=e=>{let t={};return En(e,t,xd),t},Dd=(e,t)=>e.replace(/(?:{([a-zA-Z]+)})/g,(i,a)=>t[a]),Pd=e=>{let t=new Blob(["(",e.toString(),")()"],{type:"application/javascript"}),i=URL.createObjectURL(t),a=new Worker(i);return{transfer:(n,r)=>{},post:(n,r,o)=>{let l=ki();a.onmessage=s=>{s.data.id===l&&r(s.data.message)},a.postMessage({id:l,message:n},o)},terminate:()=>{a.terminate(),URL.revokeObjectURL(i)}}},Fd=e=>new Promise((t,i)=>{let a=new Image;a.onload=()=>{t(a)},a.onerror=n=>{i(n)},a.src=e}),Zn=(e,t)=>{let i=e.slice(0,e.size,e.type);return i.lastModifiedDate=e.lastModifiedDate,i.name=t,i},Cd=e=>Zn(e,e.name),dn=[],zd=e=>{if(dn.includes(e))return;dn.push(e);let t=e({addFilter:Cl,utils:{Type:M,forin:te,isString:pe,isFile:ht,toNaturalFileSize:On,replaceInString:Dd,getExtensionFromFilename:si,getFilenameWithoutExtension:An,guesstimateMimeType:Un,getFileFromBlob:ut,getFilenameFromURL:xt,createRoute:me,createWorker:Pd,createView:re,createItemAPI:ge,loadImage:Fd,copyFile:Cd,renameFile:Zn,createBlob:Sn,applyFilterChain:Le,text:ae,getNumericAspectRatioFromString:bn},views:{fileActionButton:Mn}});zl(t.options)},Nd=()=>Object.prototype.toString.call(window.operamini)==="[object OperaMini]",Bd=()=>"Promise"in window,Gd=()=>"slice"in Blob.prototype,Vd=()=>"URL"in window&&"createObjectURL"in window.URL,Ud=()=>"visibilityState"in document,kd=()=>"performance"in window,Hd=()=>"supports"in(window.CSS||{}),Wd=()=>/MSIE|Trident/.test(window.navigator.userAgent),zi=(()=>{let e=un()&&!Nd()&&Ud()&&Bd()&&Gd()&&Vd()&&kd()&&(Hd()||Wd());return()=>e})(),Ve={apps:[]},Yd="filepond",Je=()=>{},Kn={},pt={},Dt={},Ni={},ct=Je,dt=Je,Bi=Je,Gi=Je,_e=Je,Vi=Je,Ot=Je;if(zi()){fl(()=>{Ve.apps.forEach(i=>i._read())},i=>{Ve.apps.forEach(a=>a._write(i))});let e=()=>{document.dispatchEvent(new CustomEvent("FilePond:loaded",{detail:{supported:zi,create:ct,destroy:dt,parse:Bi,find:Gi,registerPlugin:_e,setOptions:Ot}})),document.removeEventListener("DOMContentLoaded",e)};document.readyState!=="loading"?setTimeout(()=>e(),0):document.addEventListener("DOMContentLoaded",e);let t=()=>te(ti(),(i,a)=>{Ni[i]=a[1]});Kn={..._n},Dt={...se},pt={...k},Ni={},t(),ct=(...i)=>{let a=Od(...i);return a.on("destroy",dt),Ve.apps.push(a),cn(a)},dt=i=>{let a=Ve.apps.findIndex(n=>n.isAttachedTo(i));return a>=0?(Ve.apps.splice(a,1)[0].restoreElement(),!0):!1},Bi=i=>Array.from(i.querySelectorAll(`.${Yd}`)).filter(r=>!Ve.apps.find(o=>o.isAttachedTo(r))).map(r=>ct(r)),Gi=i=>{let a=Ve.apps.find(n=>n.isAttachedTo(i));return a?cn(a):null},_e=(...i)=>{i.forEach(zd),t()},Vi=()=>{let i={};return te(ti(),(a,n)=>{i[a]=n[0]}),i},Ot=i=>(ce(i)&&(Ve.apps.forEach(a=>{a.setOptions(i)}),Nl(i)),Vi())}function Jn(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),i.push.apply(i,a)}return i}function mr(e){for(var t=1;te.length)&&(t=e.length);for(var i=0,a=new Array(t);i
',cu=Number.isNaN||Pe.isNaN;function Y(e){return typeof e=="number"&&!cu(e)}var hr=function(t){return t>0&&t<1/0};function ta(e){return typeof e>"u"}function it(e){return aa(e)==="object"&&e!==null}var du=Object.prototype.hasOwnProperty;function gt(e){if(!it(e))return!1;try{var t=e.constructor,i=t.prototype;return t&&i&&du.call(i,"isPrototypeOf")}catch{return!1}}function Ee(e){return typeof e=="function"}var uu=Array.prototype.slice;function wr(e){return Array.from?Array.from(e):uu.call(e)}function oe(e,t){return e&&Ee(t)&&(Array.isArray(e)||Y(e.length)?wr(e).forEach(function(i,a){t.call(e,i,a,e)}):it(e)&&Object.keys(e).forEach(function(i){t.call(e,e[i],i,e)})),e}var K=Object.assign||function(t){for(var i=arguments.length,a=new Array(i>1?i-1:0),n=1;n0&&a.forEach(function(r){it(r)&&Object.keys(r).forEach(function(o){t[o]=r[o]})}),t},hu=/\.\d*(?:0|9){12}\d*$/;function Tt(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e11;return hu.test(e)?Math.round(e*t)/t:e}var fu=/^width|height|left|top|marginLeft|marginTop$/;function He(e,t){var i=e.style;oe(t,function(a,n){fu.test(n)&&Y(a)&&(a="".concat(a,"px")),i[n]=a})}function pu(e,t){return e.classList?e.classList.contains(t):e.className.indexOf(t)>-1}function de(e,t){if(t){if(Y(e.length)){oe(e,function(a){de(a,t)});return}if(e.classList){e.classList.add(t);return}var i=e.className.trim();i?i.indexOf(t)<0&&(e.className="".concat(i," ").concat(t)):e.className=t}}function De(e,t){if(t){if(Y(e.length)){oe(e,function(i){De(i,t)});return}if(e.classList){e.classList.remove(t);return}e.className.indexOf(t)>=0&&(e.className=e.className.replace(t,""))}}function Et(e,t,i){if(t){if(Y(e.length)){oe(e,function(a){Et(a,t,i)});return}i?de(e,t):De(e,t)}}var mu=/([a-z\d])([A-Z])/g;function Ea(e){return e.replace(mu,"$1-$2").toLowerCase()}function ha(e,t){return it(e[t])?e[t]:e.dataset?e.dataset[t]:e.getAttribute("data-".concat(Ea(t)))}function Gt(e,t,i){it(i)?e[t]=i:e.dataset?e.dataset[t]=i:e.setAttribute("data-".concat(Ea(t)),i)}function gu(e,t){if(it(e[t]))try{delete e[t]}catch{e[t]=void 0}else if(e.dataset)try{delete e.dataset[t]}catch{e.dataset[t]=void 0}else e.removeAttribute("data-".concat(Ea(t)))}var vr=/\s\s*/,Ar=function(){var e=!1;if(pi){var t=!1,i=function(){},a=Object.defineProperty({},"once",{get:function(){return e=!0,t},set:function(r){t=r}});Pe.addEventListener("test",i,a),Pe.removeEventListener("test",i,a)}return e}();function xe(e,t,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},n=i;t.trim().split(vr).forEach(function(r){if(!Ar){var o=e.listeners;o&&o[r]&&o[r][i]&&(n=o[r][i],delete o[r][i],Object.keys(o[r]).length===0&&delete o[r],Object.keys(o).length===0&&delete e.listeners)}e.removeEventListener(r,n,a)})}function we(e,t,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},n=i;t.trim().split(vr).forEach(function(r){if(a.once&&!Ar){var o=e.listeners,l=o===void 0?{}:o;n=function(){delete l[r][i],e.removeEventListener(r,n,a);for(var u=arguments.length,c=new Array(u),d=0;dMath.abs(i)&&(i=h)})}),i}function hi(e,t){var i=e.pageX,a=e.pageY,n={endX:i,endY:a};return t?n:mr({startX:i,startY:a},n)}function Iu(e){var t=0,i=0,a=0;return oe(e,function(n){var r=n.startX,o=n.startY;t+=r,i+=o,a+=1}),t/=a,i/=a,{pageX:t,pageY:i}}function We(e){var t=e.aspectRatio,i=e.height,a=e.width,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"contain",r=hr(a),o=hr(i);if(r&&o){var l=i*t;n==="contain"&&l>a||n==="cover"&&l90?{width:s,height:l}:{width:l,height:s}}function _u(e,t,i,a){var n=t.aspectRatio,r=t.naturalWidth,o=t.naturalHeight,l=t.rotate,s=l===void 0?0:l,u=t.scaleX,c=u===void 0?1:u,d=t.scaleY,h=d===void 0?1:d,f=i.aspectRatio,p=i.naturalWidth,m=i.naturalHeight,g=a.fillColor,b=g===void 0?"transparent":g,E=a.imageSmoothingEnabled,I=E===void 0?!0:E,_=a.imageSmoothingQuality,y=_===void 0?"low":_,T=a.maxWidth,v=T===void 0?1/0:T,R=a.maxHeight,S=R===void 0?1/0:R,D=a.minWidth,x=D===void 0?0:D,O=a.minHeight,z=O===void 0?0:O,A=document.createElement("canvas"),F=A.getContext("2d"),w=We({aspectRatio:f,width:v,height:S}),L=We({aspectRatio:f,width:x,height:z},"cover"),C=Math.min(w.width,Math.max(L.width,p)),P=Math.min(w.height,Math.max(L.height,m)),G=We({aspectRatio:n,width:v,height:S}),B=We({aspectRatio:n,width:x,height:z},"cover"),X=Math.min(G.width,Math.max(B.width,r)),q=Math.min(G.height,Math.max(B.height,o)),j=[-X/2,-q/2,X,q];return A.width=Tt(C),A.height=Tt(P),F.fillStyle=b,F.fillRect(0,0,C,P),F.save(),F.translate(C/2,P/2),F.rotate(s*Math.PI/180),F.scale(c,h),F.imageSmoothingEnabled=I,F.imageSmoothingQuality=y,F.drawImage.apply(F,[e].concat(gr(j.map(function(ue){return Math.floor(Tt(ue))})))),F.restore(),A}var Mr=String.fromCharCode;function Ru(e,t,i){var a="";i+=t;for(var n=t;n0;)i.push(Mr.apply(null,wr(n.subarray(0,a)))),n=n.subarray(a);return"data:".concat(t,";base64,").concat(btoa(i.join("")))}function vu(e){var t=new DataView(e),i;try{var a,n,r;if(t.getUint8(0)===255&&t.getUint8(1)===216)for(var o=t.byteLength,l=2;l+1=8&&(r=u+d)}}}if(r){var h=t.getUint16(r,a),f,p;for(p=0;p=0?r:yr),height:Math.max(a.offsetHeight,o>=0?o:Sr)};this.containerData=l,He(n,{width:l.width,height:l.height}),de(t,Te),De(n,Te)},initCanvas:function(){var t=this.containerData,i=this.imageData,a=this.options.viewMode,n=Math.abs(i.rotate)%180===90,r=n?i.naturalHeight:i.naturalWidth,o=n?i.naturalWidth:i.naturalHeight,l=r/o,s=t.width,u=t.height;t.height*l>t.width?a===3?s=t.height*l:u=t.width/l:a===3?u=t.width/l:s=t.height*l;var c={aspectRatio:l,naturalWidth:r,naturalHeight:o,width:s,height:u};this.canvasData=c,this.limited=a===1||a===2,this.limitCanvas(!0,!0),c.width=Math.min(Math.max(c.width,c.minWidth),c.maxWidth),c.height=Math.min(Math.max(c.height,c.minHeight),c.maxHeight),c.left=(t.width-c.width)/2,c.top=(t.height-c.height)/2,c.oldLeft=c.left,c.oldTop=c.top,this.initialCanvasData=K({},c)},limitCanvas:function(t,i){var a=this.options,n=this.containerData,r=this.canvasData,o=this.cropBoxData,l=a.viewMode,s=r.aspectRatio,u=this.cropped&&o;if(t){var c=Number(a.minCanvasWidth)||0,d=Number(a.minCanvasHeight)||0;l>1?(c=Math.max(c,n.width),d=Math.max(d,n.height),l===3&&(d*s>c?c=d*s:d=c/s)):l>0&&(c?c=Math.max(c,u?o.width:0):d?d=Math.max(d,u?o.height:0):u&&(c=o.width,d=o.height,d*s>c?c=d*s:d=c/s));var h=We({aspectRatio:s,width:c,height:d});c=h.width,d=h.height,r.minWidth=c,r.minHeight=d,r.maxWidth=1/0,r.maxHeight=1/0}if(i)if(l>(u?0:1)){var f=n.width-r.width,p=n.height-r.height;r.minLeft=Math.min(0,f),r.minTop=Math.min(0,p),r.maxLeft=Math.max(0,f),r.maxTop=Math.max(0,p),u&&this.limited&&(r.minLeft=Math.min(o.left,o.left+(o.width-r.width)),r.minTop=Math.min(o.top,o.top+(o.height-r.height)),r.maxLeft=o.left,r.maxTop=o.top,l===2&&(r.width>=n.width&&(r.minLeft=Math.min(0,f),r.maxLeft=Math.max(0,f)),r.height>=n.height&&(r.minTop=Math.min(0,p),r.maxTop=Math.max(0,p))))}else r.minLeft=-r.width,r.minTop=-r.height,r.maxLeft=n.width,r.maxTop=n.height},renderCanvas:function(t,i){var a=this.canvasData,n=this.imageData;if(i){var r=bu({width:n.naturalWidth*Math.abs(n.scaleX||1),height:n.naturalHeight*Math.abs(n.scaleY||1),degree:n.rotate||0}),o=r.width,l=r.height,s=a.width*(o/a.naturalWidth),u=a.height*(l/a.naturalHeight);a.left-=(s-a.width)/2,a.top-=(u-a.height)/2,a.width=s,a.height=u,a.aspectRatio=o/l,a.naturalWidth=o,a.naturalHeight=l,this.limitCanvas(!0,!1)}(a.width>a.maxWidth||a.widtha.maxHeight||a.heighti.width?r.height=r.width/a:r.width=r.height*a),this.cropBoxData=r,this.limitCropBox(!0,!0),r.width=Math.min(Math.max(r.width,r.minWidth),r.maxWidth),r.height=Math.min(Math.max(r.height,r.minHeight),r.maxHeight),r.width=Math.max(r.minWidth,r.width*n),r.height=Math.max(r.minHeight,r.height*n),r.left=i.left+(i.width-r.width)/2,r.top=i.top+(i.height-r.height)/2,r.oldLeft=r.left,r.oldTop=r.top,this.initialCropBoxData=K({},r)},limitCropBox:function(t,i){var a=this.options,n=this.containerData,r=this.canvasData,o=this.cropBoxData,l=this.limited,s=a.aspectRatio;if(t){var u=Number(a.minCropBoxWidth)||0,c=Number(a.minCropBoxHeight)||0,d=l?Math.min(n.width,r.width,r.width+r.left,n.width-r.left):n.width,h=l?Math.min(n.height,r.height,r.height+r.top,n.height-r.top):n.height;u=Math.min(u,n.width),c=Math.min(c,n.height),s&&(u&&c?c*s>u?c=u/s:u=c*s:u?c=u/s:c&&(u=c*s),h*s>d?h=d/s:d=h*s),o.minWidth=Math.min(u,d),o.minHeight=Math.min(c,h),o.maxWidth=d,o.maxHeight=h}i&&(l?(o.minLeft=Math.max(0,r.left),o.minTop=Math.max(0,r.top),o.maxLeft=Math.min(n.width,r.left+r.width)-o.width,o.maxTop=Math.min(n.height,r.top+r.height)-o.height):(o.minLeft=0,o.minTop=0,o.maxLeft=n.width-o.width,o.maxTop=n.height-o.height))},renderCropBox:function(){var t=this.options,i=this.containerData,a=this.cropBoxData;(a.width>a.maxWidth||a.widtha.maxHeight||a.height=i.width&&a.height>=i.height?Ir:ma),He(this.cropBox,K({width:a.width,height:a.height},Nt({translateX:a.left,translateY:a.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},output:function(){this.preview(),It(this.element,la,this.getData())}},Mu={initPreview:function(){var t=this.element,i=this.crossOrigin,a=this.options.preview,n=i?this.crossOriginUrl:this.url,r=t.alt||"The image to preview",o=document.createElement("img");if(i&&(o.crossOrigin=i),o.src=n,o.alt=r,this.viewBox.appendChild(o),this.viewBoxImage=o,!!a){var l=a;typeof a=="string"?l=t.ownerDocument.querySelectorAll(a):a.querySelector&&(l=[a]),this.previews=l,oe(l,function(s){var u=document.createElement("img");Gt(s,ui,{width:s.offsetWidth,height:s.offsetHeight,html:s.innerHTML}),i&&(u.crossOrigin=i),u.src=n,u.alt=r,u.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;"',s.innerHTML="",s.appendChild(u)})}},resetPreview:function(){oe(this.previews,function(t){var i=ha(t,ui);He(t,{width:i.width,height:i.height}),t.innerHTML=i.html,gu(t,ui)})},preview:function(){var t=this.imageData,i=this.canvasData,a=this.cropBoxData,n=a.width,r=a.height,o=t.width,l=t.height,s=a.left-i.left-t.left,u=a.top-i.top-t.top;!this.cropped||this.disabled||(He(this.viewBoxImage,K({width:o,height:l},Nt(K({translateX:-s,translateY:-u},t)))),oe(this.previews,function(c){var d=ha(c,ui),h=d.width,f=d.height,p=h,m=f,g=1;n&&(g=h/n,m=r*g),r&&m>f&&(g=f/r,p=n*g,m=f),He(c,{width:p,height:m}),He(c.getElementsByTagName("img")[0],K({width:o*g,height:l*g},Nt(K({translateX:-s*g,translateY:-u*g},t))))}))}},Ou={bind:function(){var t=this.element,i=this.options,a=this.cropper;Ee(i.cropstart)&&we(t,da,i.cropstart),Ee(i.cropmove)&&we(t,ca,i.cropmove),Ee(i.cropend)&&we(t,sa,i.cropend),Ee(i.crop)&&we(t,la,i.crop),Ee(i.zoom)&&we(t,ua,i.zoom),we(a,nr,this.onCropStart=this.cropStart.bind(this)),i.zoomable&&i.zoomOnWheel&&we(a,cr,this.onWheel=this.wheel.bind(this),{passive:!1,capture:!0}),i.toggleDragModeOnDblclick&&we(a,ar,this.onDblclick=this.dblclick.bind(this)),we(t.ownerDocument,rr,this.onCropMove=this.cropMove.bind(this)),we(t.ownerDocument,or,this.onCropEnd=this.cropEnd.bind(this)),i.responsive&&we(window,sr,this.onResize=this.resize.bind(this))},unbind:function(){var t=this.element,i=this.options,a=this.cropper;Ee(i.cropstart)&&xe(t,da,i.cropstart),Ee(i.cropmove)&&xe(t,ca,i.cropmove),Ee(i.cropend)&&xe(t,sa,i.cropend),Ee(i.crop)&&xe(t,la,i.crop),Ee(i.zoom)&&xe(t,ua,i.zoom),xe(a,nr,this.onCropStart),i.zoomable&&i.zoomOnWheel&&xe(a,cr,this.onWheel,{passive:!1,capture:!0}),i.toggleDragModeOnDblclick&&xe(a,ar,this.onDblclick),xe(t.ownerDocument,rr,this.onCropMove),xe(t.ownerDocument,or,this.onCropEnd),i.responsive&&xe(window,sr,this.onResize)}},xu={resize:function(){if(!this.disabled){var t=this.options,i=this.container,a=this.containerData,n=i.offsetWidth/a.width,r=i.offsetHeight/a.height,o=Math.abs(n-1)>Math.abs(r-1)?n:r;if(o!==1){var l,s;t.restore&&(l=this.getCanvasData(),s=this.getCropBoxData()),this.render(),t.restore&&(this.setCanvasData(oe(l,function(u,c){l[c]=u*o})),this.setCropBoxData(oe(s,function(u,c){s[c]=u*o})))}}},dblclick:function(){this.disabled||this.options.dragMode===Rr||this.setDragMode(pu(this.dragBox,ra)?_r:ga)},wheel:function(t){var i=this,a=Number(this.options.wheelZoomRatio)||.1,n=1;this.disabled||(t.preventDefault(),!this.wheeling&&(this.wheeling=!0,setTimeout(function(){i.wheeling=!1},50),t.deltaY?n=t.deltaY>0?1:-1:t.wheelDelta?n=-t.wheelDelta/120:t.detail&&(n=t.detail>0?1:-1),this.zoom(-n*a,t)))},cropStart:function(t){var i=t.buttons,a=t.button;if(!(this.disabled||(t.type==="mousedown"||t.type==="pointerdown"&&t.pointerType==="mouse")&&(Y(i)&&i!==1||Y(a)&&a!==0||t.ctrlKey))){var n=this.options,r=this.pointers,o;t.changedTouches?oe(t.changedTouches,function(l){r[l.identifier]=hi(l)}):r[t.pointerId||0]=hi(t),Object.keys(r).length>1&&n.zoomable&&n.zoomOnTouch?o=br:o=ha(t.target,Bt),nu.test(o)&&It(this.element,da,{originalEvent:t,action:o})!==!1&&(t.preventDefault(),this.action=o,this.cropping=!1,o===Tr&&(this.cropping=!0,de(this.dragBox,fi)))}},cropMove:function(t){var i=this.action;if(!(this.disabled||!i)){var a=this.pointers;t.preventDefault(),It(this.element,ca,{originalEvent:t,action:i})!==!1&&(t.changedTouches?oe(t.changedTouches,function(n){K(a[n.identifier]||{},hi(n,!0))}):K(a[t.pointerId||0]||{},hi(t,!0)),this.change(t))}},cropEnd:function(t){if(!this.disabled){var i=this.action,a=this.pointers;t.changedTouches?oe(t.changedTouches,function(n){delete a[n.identifier]}):delete a[t.pointerId||0],i&&(t.preventDefault(),Object.keys(a).length||(this.action=""),this.cropping&&(this.cropping=!1,Et(this.dragBox,fi,this.cropped&&this.options.modal)),It(this.element,sa,{originalEvent:t,action:i}))}}},Du={change:function(t){var i=this.options,a=this.canvasData,n=this.containerData,r=this.cropBoxData,o=this.pointers,l=this.action,s=i.aspectRatio,u=r.left,c=r.top,d=r.width,h=r.height,f=u+d,p=c+h,m=0,g=0,b=n.width,E=n.height,I=!0,_;!s&&t.shiftKey&&(s=d&&h?d/h:1),this.limited&&(m=r.minLeft,g=r.minTop,b=m+Math.min(n.width,a.width,a.left+a.width),E=g+Math.min(n.height,a.height,a.top+a.height));var y=o[Object.keys(o)[0]],T={x:y.endX-y.startX,y:y.endY-y.startY},v=function(S){switch(S){case et:f+T.x>b&&(T.x=b-f);break;case tt:u+T.xE&&(T.y=E-p);break}};switch(l){case ma:u+=T.x,c+=T.y;break;case et:if(T.x>=0&&(f>=b||s&&(c<=g||p>=E))){I=!1;break}v(et),d+=T.x,d<0&&(l=tt,d=-d,u-=d),s&&(h=d/s,c+=(r.height-h)/2);break;case ke:if(T.y<=0&&(c<=g||s&&(u<=m||f>=b))){I=!1;break}v(ke),h-=T.y,c+=T.y,h<0&&(l=mt,h=-h,c-=h),s&&(d=h*s,u+=(r.width-d)/2);break;case tt:if(T.x<=0&&(u<=m||s&&(c<=g||p>=E))){I=!1;break}v(tt),d-=T.x,u+=T.x,d<0&&(l=et,d=-d,u-=d),s&&(h=d/s,c+=(r.height-h)/2);break;case mt:if(T.y>=0&&(p>=E||s&&(u<=m||f>=b))){I=!1;break}v(mt),h+=T.y,h<0&&(l=ke,h=-h,c-=h),s&&(d=h*s,u+=(r.width-d)/2);break;case Pt:if(s){if(T.y<=0&&(c<=g||f>=b)){I=!1;break}v(ke),h-=T.y,c+=T.y,d=h*s}else v(ke),v(et),T.x>=0?fg&&(h-=T.y,c+=T.y):(h-=T.y,c+=T.y);d<0&&h<0?(l=zt,h=-h,d=-d,c-=h,u-=d):d<0?(l=Ft,d=-d,u-=d):h<0&&(l=Ct,h=-h,c-=h);break;case Ft:if(s){if(T.y<=0&&(c<=g||u<=m)){I=!1;break}v(ke),h-=T.y,c+=T.y,d=h*s,u+=r.width-d}else v(ke),v(tt),T.x<=0?u>m?(d-=T.x,u+=T.x):T.y<=0&&c<=g&&(I=!1):(d-=T.x,u+=T.x),T.y<=0?c>g&&(h-=T.y,c+=T.y):(h-=T.y,c+=T.y);d<0&&h<0?(l=Ct,h=-h,d=-d,c-=h,u-=d):d<0?(l=Pt,d=-d,u-=d):h<0&&(l=zt,h=-h,c-=h);break;case zt:if(s){if(T.x<=0&&(u<=m||p>=E)){I=!1;break}v(tt),d-=T.x,u+=T.x,h=d/s}else v(mt),v(tt),T.x<=0?u>m?(d-=T.x,u+=T.x):T.y>=0&&p>=E&&(I=!1):(d-=T.x,u+=T.x),T.y>=0?p=0&&(f>=b||p>=E)){I=!1;break}v(et),d+=T.x,h=d/s}else v(mt),v(et),T.x>=0?f=0&&p>=E&&(I=!1):d+=T.x,T.y>=0?p0?l=T.y>0?Ct:Pt:T.x<0&&(u-=d,l=T.y>0?zt:Ft),T.y<0&&(c-=h),this.cropped||(De(this.cropBox,Te),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0));break}I&&(r.width=d,r.height=h,r.left=u,r.top=c,this.action=l,this.renderCropBox()),oe(o,function(R){R.startX=R.endX,R.startY=R.endY})}},Pu={crop:function(){return this.ready&&!this.cropped&&!this.disabled&&(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&de(this.dragBox,fi),De(this.cropBox,Te),this.setCropBoxData(this.initialCropBoxData)),this},reset:function(){return this.ready&&!this.disabled&&(this.imageData=K({},this.initialImageData),this.canvasData=K({},this.initialCanvasData),this.cropBoxData=K({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},clear:function(){return this.cropped&&!this.disabled&&(K(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),De(this.dragBox,fi),de(this.cropBox,Te)),this},replace:function(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return!this.disabled&&t&&(this.isImg&&(this.element.src=t),i?(this.url=t,this.image.src=t,this.ready&&(this.viewBoxImage.src=t,oe(this.previews,function(a){a.getElementsByTagName("img")[0].src=t}))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.uncreate(),this.load(t))),this},enable:function(){return this.ready&&this.disabled&&(this.disabled=!1,De(this.cropper,tr)),this},disable:function(){return this.ready&&!this.disabled&&(this.disabled=!0,de(this.cropper,tr)),this},destroy:function(){var t=this.element;return t[Z]?(t[Z]=void 0,this.isImg&&this.replaced&&(t.src=this.originalUrl),this.uncreate(),this):this},move:function(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t,a=this.canvasData,n=a.left,r=a.top;return this.moveTo(ta(t)?t:n+Number(t),ta(i)?i:r+Number(i))},moveTo:function(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t,a=this.canvasData,n=!1;return t=Number(t),i=Number(i),this.ready&&!this.disabled&&this.options.movable&&(Y(t)&&(a.left=t,n=!0),Y(i)&&(a.top=i,n=!0),n&&this.renderCanvas(!0)),this},zoom:function(t,i){var a=this.canvasData;return t=Number(t),t<0?t=1/(1-t):t=1+t,this.zoomTo(a.width*t/a.naturalWidth,null,i)},zoomTo:function(t,i,a){var n=this.options,r=this.canvasData,o=r.width,l=r.height,s=r.naturalWidth,u=r.naturalHeight;if(t=Number(t),t>=0&&this.ready&&!this.disabled&&n.zoomable){var c=s*t,d=u*t;if(It(this.element,ua,{ratio:t,oldRatio:o/s,originalEvent:a})===!1)return this;if(a){var h=this.pointers,f=Lr(this.cropper),p=h&&Object.keys(h).length?Iu(h):{pageX:a.pageX,pageY:a.pageY};r.left-=(c-o)*((p.pageX-f.left-r.left)/o),r.top-=(d-l)*((p.pageY-f.top-r.top)/l)}else gt(i)&&Y(i.x)&&Y(i.y)?(r.left-=(c-o)*((i.x-r.left)/o),r.top-=(d-l)*((i.y-r.top)/l)):(r.left-=(c-o)/2,r.top-=(d-l)/2);r.width=c,r.height=d,this.renderCanvas(!0)}return this},rotate:function(t){return this.rotateTo((this.imageData.rotate||0)+Number(t))},rotateTo:function(t){return t=Number(t),Y(t)&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=t%360,this.renderCanvas(!0,!0)),this},scaleX:function(t){var i=this.imageData.scaleY;return this.scale(t,Y(i)?i:1)},scaleY:function(t){var i=this.imageData.scaleX;return this.scale(Y(i)?i:1,t)},scale:function(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t,a=this.imageData,n=!1;return t=Number(t),i=Number(i),this.ready&&!this.disabled&&this.options.scalable&&(Y(t)&&(a.scaleX=t,n=!0),Y(i)&&(a.scaleY=i,n=!0),n&&this.renderCanvas(!0,!0)),this},getData:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,i=this.options,a=this.imageData,n=this.canvasData,r=this.cropBoxData,o;if(this.ready&&this.cropped){o={x:r.left-n.left,y:r.top-n.top,width:r.width,height:r.height};var l=a.width/a.naturalWidth;if(oe(o,function(c,d){o[d]=c/l}),t){var s=Math.round(o.y+o.height),u=Math.round(o.x+o.width);o.x=Math.round(o.x),o.y=Math.round(o.y),o.width=u-o.x,o.height=s-o.y}}else o={x:0,y:0,width:0,height:0};return i.rotatable&&(o.rotate=a.rotate||0),i.scalable&&(o.scaleX=a.scaleX||1,o.scaleY=a.scaleY||1),o},setData:function(t){var i=this.options,a=this.imageData,n=this.canvasData,r={};if(this.ready&&!this.disabled&>(t)){var o=!1;i.rotatable&&Y(t.rotate)&&t.rotate!==a.rotate&&(a.rotate=t.rotate,o=!0),i.scalable&&(Y(t.scaleX)&&t.scaleX!==a.scaleX&&(a.scaleX=t.scaleX,o=!0),Y(t.scaleY)&&t.scaleY!==a.scaleY&&(a.scaleY=t.scaleY,o=!0)),o&&this.renderCanvas(!0,!0);var l=a.width/a.naturalWidth;Y(t.x)&&(r.left=t.x*l+n.left),Y(t.y)&&(r.top=t.y*l+n.top),Y(t.width)&&(r.width=t.width*l),Y(t.height)&&(r.height=t.height*l),this.setCropBoxData(r)}return this},getContainerData:function(){return this.ready?K({},this.containerData):{}},getImageData:function(){return this.sized?K({},this.imageData):{}},getCanvasData:function(){var t=this.canvasData,i={};return this.ready&&oe(["left","top","width","height","naturalWidth","naturalHeight"],function(a){i[a]=t[a]}),i},setCanvasData:function(t){var i=this.canvasData,a=i.aspectRatio;return this.ready&&!this.disabled&>(t)&&(Y(t.left)&&(i.left=t.left),Y(t.top)&&(i.top=t.top),Y(t.width)?(i.width=t.width,i.height=t.width/a):Y(t.height)&&(i.height=t.height,i.width=t.height*a),this.renderCanvas(!0)),this},getCropBoxData:function(){var t=this.cropBoxData,i;return this.ready&&this.cropped&&(i={left:t.left,top:t.top,width:t.width,height:t.height}),i||{}},setCropBoxData:function(t){var i=this.cropBoxData,a=this.options.aspectRatio,n,r;return this.ready&&this.cropped&&!this.disabled&>(t)&&(Y(t.left)&&(i.left=t.left),Y(t.top)&&(i.top=t.top),Y(t.width)&&t.width!==i.width&&(n=!0,i.width=t.width),Y(t.height)&&t.height!==i.height&&(r=!0,i.height=t.height),a&&(n?i.height=i.width/a:r&&(i.width=i.height*a)),this.renderCropBox()),this},getCroppedCanvas:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement)return null;var i=this.canvasData,a=_u(this.image,this.imageData,i,t);if(!this.cropped)return a;var n=this.getData(t.rounded),r=n.x,o=n.y,l=n.width,s=n.height,u=a.width/Math.floor(i.naturalWidth);u!==1&&(r*=u,o*=u,l*=u,s*=u);var c=l/s,d=We({aspectRatio:c,width:t.maxWidth||1/0,height:t.maxHeight||1/0}),h=We({aspectRatio:c,width:t.minWidth||0,height:t.minHeight||0},"cover"),f=We({aspectRatio:c,width:t.width||(u!==1?a.width:l),height:t.height||(u!==1?a.height:s)}),p=f.width,m=f.height;p=Math.min(d.width,Math.max(h.width,p)),m=Math.min(d.height,Math.max(h.height,m));var g=document.createElement("canvas"),b=g.getContext("2d");g.width=Tt(p),g.height=Tt(m),b.fillStyle=t.fillColor||"transparent",b.fillRect(0,0,p,m);var E=t.imageSmoothingEnabled,I=E===void 0?!0:E,_=t.imageSmoothingQuality;b.imageSmoothingEnabled=I,_&&(b.imageSmoothingQuality=_);var y=a.width,T=a.height,v=r,R=o,S,D,x,O,z,A;v<=-l||v>y?(v=0,S=0,x=0,z=0):v<=0?(x=-v,v=0,S=Math.min(y,l+v),z=S):v<=y&&(x=0,S=Math.min(l,y-v),z=S),S<=0||R<=-s||R>T?(R=0,D=0,O=0,A=0):R<=0?(O=-R,R=0,D=Math.min(T,s+R),A=D):R<=T&&(O=0,D=Math.min(s,T-R),A=D);var F=[v,R,S,D];if(z>0&&A>0){var w=p/l;F.push(x*w,O*w,z*w,A*w)}return b.drawImage.apply(b,[a].concat(gr(F.map(function(L){return Math.floor(Tt(L))})))),g},setAspectRatio:function(t){var i=this.options;return!this.disabled&&!ta(t)&&(i.aspectRatio=Math.max(0,t)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},setDragMode:function(t){var i=this.options,a=this.dragBox,n=this.face;if(this.ready&&!this.disabled){var r=t===ga,o=i.movable&&t===_r;t=r||o?t:Rr,i.dragMode=t,Gt(a,Bt,t),Et(a,ra,r),Et(a,oa,o),i.cropBoxMovable||(Gt(n,Bt,t),Et(n,ra,r),Et(n,oa,o))}return this}},Fu=Pe.Cropper,Ta=function(){function e(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if($d(this,e),!t||!lu.test(t.tagName))throw new Error("The first argument is required and must be an or element.");this.element=t,this.options=K({},ur,gt(i)&&i),this.cropped=!1,this.disabled=!1,this.pointers={},this.ready=!1,this.reloading=!1,this.replaced=!1,this.sized=!1,this.sizing=!1,this.init()}return qd(e,[{key:"init",value:function(){var i=this.element,a=i.tagName.toLowerCase(),n;if(!i[Z]){if(i[Z]=this,a==="img"){if(this.isImg=!0,n=i.getAttribute("src")||"",this.originalUrl=n,!n)return;n=i.src}else a==="canvas"&&window.HTMLCanvasElement&&(n=i.toDataURL());this.load(n)}}},{key:"load",value:function(i){var a=this;if(i){this.url=i,this.imageData={};var n=this.element,r=this.options;if(!r.rotatable&&!r.scalable&&(r.checkOrientation=!1),!r.checkOrientation||!window.ArrayBuffer){this.clone();return}if(ru.test(i)){ou.test(i)?this.read(Su(i)):this.clone();return}var o=new XMLHttpRequest,l=this.clone.bind(this);this.reloading=!0,this.xhr=o,o.onabort=l,o.onerror=l,o.ontimeout=l,o.onprogress=function(){o.getResponseHeader("content-type")!==dr&&o.abort()},o.onload=function(){a.read(o.response)},o.onloadend=function(){a.reloading=!1,a.xhr=null},r.checkCrossOrigin&&fr(i)&&n.crossOrigin&&(i=pr(i)),o.open("GET",i,!0),o.responseType="arraybuffer",o.withCredentials=n.crossOrigin==="use-credentials",o.send()}}},{key:"read",value:function(i){var a=this.options,n=this.imageData,r=vu(i),o=0,l=1,s=1;if(r>1){this.url=wu(i,dr);var u=Au(r);o=u.rotate,l=u.scaleX,s=u.scaleY}a.rotatable&&(n.rotate=o),a.scalable&&(n.scaleX=l,n.scaleY=s),this.clone()}},{key:"clone",value:function(){var i=this.element,a=this.url,n=i.crossOrigin,r=a;this.options.checkCrossOrigin&&fr(a)&&(n||(n="anonymous"),r=pr(a)),this.crossOrigin=n,this.crossOriginUrl=r;var o=document.createElement("img");n&&(o.crossOrigin=n),o.src=r||a,o.alt=i.alt||"The image to crop",this.image=o,o.onload=this.start.bind(this),o.onerror=this.stop.bind(this),de(o,ir),i.parentNode.insertBefore(o,i.nextSibling)}},{key:"start",value:function(){var i=this,a=this.image;a.onload=null,a.onerror=null,this.sizing=!0;var n=Pe.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(Pe.navigator.userAgent),r=function(u,c){K(i.imageData,{naturalWidth:u,naturalHeight:c,aspectRatio:u/c}),i.initialImageData=K({},i.imageData),i.sizing=!1,i.sized=!0,i.build()};if(a.naturalWidth&&!n){r(a.naturalWidth,a.naturalHeight);return}var o=document.createElement("img"),l=document.body||document.documentElement;this.sizingImage=o,o.onload=function(){r(o.width,o.height),n||l.removeChild(o)},o.src=a.src,n||(o.style.cssText="left:0;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:0;position:absolute;top:0;z-index:-1;",l.appendChild(o))}},{key:"stop",value:function(){var i=this.image;i.onload=null,i.onerror=null,i.parentNode.removeChild(i),this.image=null}},{key:"build",value:function(){if(!(!this.sized||this.ready)){var i=this.element,a=this.options,n=this.image,r=i.parentNode,o=document.createElement("div");o.innerHTML=su;var l=o.querySelector(".".concat(Z,"-container")),s=l.querySelector(".".concat(Z,"-canvas")),u=l.querySelector(".".concat(Z,"-drag-box")),c=l.querySelector(".".concat(Z,"-crop-box")),d=c.querySelector(".".concat(Z,"-face"));this.container=r,this.cropper=l,this.canvas=s,this.dragBox=u,this.cropBox=c,this.viewBox=l.querySelector(".".concat(Z,"-view-box")),this.face=d,s.appendChild(n),de(i,Te),r.insertBefore(l,i.nextSibling),De(n,ir),this.initPreview(),this.bind(),a.initialAspectRatio=Math.max(0,a.initialAspectRatio)||NaN,a.aspectRatio=Math.max(0,a.aspectRatio)||NaN,a.viewMode=Math.max(0,Math.min(3,Math.round(a.viewMode)))||0,de(c,Te),a.guides||de(c.getElementsByClassName("".concat(Z,"-dashed")),Te),a.center||de(c.getElementsByClassName("".concat(Z,"-center")),Te),a.background&&de(l,"".concat(Z,"-bg")),a.highlight||de(d,eu),a.cropBoxMovable&&(de(d,oa),Gt(d,Bt,ma)),a.cropBoxResizable||(de(c.getElementsByClassName("".concat(Z,"-line")),Te),de(c.getElementsByClassName("".concat(Z,"-point")),Te)),this.render(),this.ready=!0,this.setDragMode(a.dragMode),a.autoCrop&&this.crop(),this.setData(a.data),Ee(a.ready)&&we(i,lr,a.ready,{once:!0}),It(i,lr)}}},{key:"unbuild",value:function(){if(this.ready){this.ready=!1,this.unbind(),this.resetPreview();var i=this.cropper.parentNode;i&&i.removeChild(this.cropper),De(this.element,Te)}}},{key:"uncreate",value:function(){this.ready?(this.unbuild(),this.ready=!1,this.cropped=!1):this.sizing?(this.sizingImage.onload=null,this.sizing=!1,this.sized=!1):this.reloading?(this.xhr.onabort=null,this.xhr.abort()):this.image&&this.stop()}}],[{key:"noConflict",value:function(){return window.Cropper=Fu,e}},{key:"setDefaults",value:function(i){K(ur,gt(i)&&i)}}]),e}();K(Ta.prototype,Lu,Mu,Ou,xu,Du,Pu);var Or=({addFilter:e,utils:t})=>{let{Type:i,replaceInString:a,toNaturalFileSize:n}=t;return e("ALLOW_HOPPER_ITEM",(r,{query:o})=>{if(!o("GET_ALLOW_FILE_SIZE_VALIDATION"))return!0;let l=o("GET_MAX_FILE_SIZE");if(l!==null&&r.size>l)return!1;let s=o("GET_MIN_FILE_SIZE");return!(s!==null&&r.sizenew Promise((l,s)=>{if(!o("GET_ALLOW_FILE_SIZE_VALIDATION"))return l(r);let u=o("GET_FILE_VALIDATE_SIZE_FILTER");if(u&&!u(r))return l(r);let c=o("GET_MAX_FILE_SIZE");if(c!==null&&r.size>c){s({status:{main:o("GET_LABEL_MAX_FILE_SIZE_EXCEEDED"),sub:a(o("GET_LABEL_MAX_FILE_SIZE"),{filesize:n(c,".",o("GET_FILE_SIZE_BASE"),o("GET_FILE_SIZE_LABELS",o))})}});return}let d=o("GET_MIN_FILE_SIZE");if(d!==null&&r.sizep+m.fileSize,0)>h){s({status:{main:o("GET_LABEL_MAX_TOTAL_FILE_SIZE_EXCEEDED"),sub:a(o("GET_LABEL_MAX_TOTAL_FILE_SIZE"),{filesize:n(h,".",o("GET_FILE_SIZE_BASE"),o("GET_FILE_SIZE_LABELS",o))})}});return}l(r)})),{options:{allowFileSizeValidation:[!0,i.BOOLEAN],maxFileSize:[null,i.INT],minFileSize:[null,i.INT],maxTotalFileSize:[null,i.INT],fileValidateSizeFilter:[null,i.FUNCTION],labelMinFileSizeExceeded:["File is too small",i.STRING],labelMinFileSize:["Minimum file size is {filesize}",i.STRING],labelMaxFileSizeExceeded:["File is too large",i.STRING],labelMaxFileSize:["Maximum file size is {filesize}",i.STRING],labelMaxTotalFileSizeExceeded:["Maximum total size exceeded",i.STRING],labelMaxTotalFileSize:["Maximum total file size is {filesize}",i.STRING]}}},Cu=typeof window<"u"&&typeof window.document<"u";Cu&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Or}));var xr=Or;var Dr=({addFilter:e,utils:t})=>{let{Type:i,isString:a,replaceInString:n,guesstimateMimeType:r,getExtensionFromFilename:o,getFilenameFromURL:l}=t,s=(f,p)=>{let m=(/^[^/]+/.exec(f)||[]).pop(),g=p.slice(0,-2);return m===g},u=(f,p)=>f.some(m=>/\*$/.test(m)?s(p,m):m===p),c=f=>{let p="";if(a(f)){let m=l(f),g=o(m);g&&(p=r(g))}else p=f.type;return p},d=(f,p,m)=>{if(p.length===0)return!0;let g=c(f);return m?new Promise((b,E)=>{m(f,g).then(I=>{u(p,I)?b():E()}).catch(E)}):u(p,g)},h=f=>p=>f[p]===null?!1:f[p]||p;return e("SET_ATTRIBUTE_TO_OPTION_MAP",f=>Object.assign(f,{accept:"acceptedFileTypes"})),e("ALLOW_HOPPER_ITEM",(f,{query:p})=>p("GET_ALLOW_FILE_TYPE_VALIDATION")?d(f,p("GET_ACCEPTED_FILE_TYPES")):!0),e("LOAD_FILE",(f,{query:p})=>new Promise((m,g)=>{if(!p("GET_ALLOW_FILE_TYPE_VALIDATION")){m(f);return}let b=p("GET_ACCEPTED_FILE_TYPES"),E=p("GET_FILE_VALIDATE_TYPE_DETECT_TYPE"),I=d(f,b,E),_=()=>{let y=b.map(h(p("GET_FILE_VALIDATE_TYPE_LABEL_EXPECTED_TYPES_MAP"))).filter(v=>v!==!1),T=y.filter((v,R)=>y.indexOf(v)===R);g({status:{main:p("GET_LABEL_FILE_TYPE_NOT_ALLOWED"),sub:n(p("GET_FILE_VALIDATE_TYPE_LABEL_EXPECTED_TYPES"),{allTypes:T.join(", "),allButLastType:T.slice(0,-1).join(", "),lastType:T[T.length-1]})}})};if(typeof I=="boolean")return I?m(f):_();I.then(()=>{m(f)}).catch(_)})),{options:{allowFileTypeValidation:[!0,i.BOOLEAN],acceptedFileTypes:[[],i.ARRAY],labelFileTypeNotAllowed:["File is of invalid type",i.STRING],fileValidateTypeLabelExpectedTypes:["Expects {allButLastType} or {lastType}",i.STRING],fileValidateTypeLabelExpectedTypesMap:[{},i.OBJECT],fileValidateTypeDetectType:[null,i.FUNCTION]}}},zu=typeof window<"u"&&typeof window.document<"u";zu&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Dr}));var Pr=Dr;var Fr=e=>/^image/.test(e.type),Cr=({addFilter:e,utils:t})=>{let{Type:i,isFile:a,getNumericAspectRatioFromString:n}=t,r=(u,c)=>!(!Fr(u.file)||!c("GET_ALLOW_IMAGE_CROP")),o=u=>typeof u=="object",l=u=>typeof u=="number",s=(u,c)=>u.setMetadata("crop",Object.assign({},u.getMetadata("crop"),c));return e("DID_CREATE_ITEM",(u,{query:c})=>{u.extend("setImageCrop",d=>{if(!(!r(u,c)||!o(center)))return u.setMetadata("crop",d),d}),u.extend("setImageCropCenter",d=>{if(!(!r(u,c)||!o(d)))return s(u,{center:d})}),u.extend("setImageCropZoom",d=>{if(!(!r(u,c)||!l(d)))return s(u,{zoom:Math.max(1,d)})}),u.extend("setImageCropRotation",d=>{if(!(!r(u,c)||!l(d)))return s(u,{rotation:d})}),u.extend("setImageCropFlip",d=>{if(!(!r(u,c)||!o(d)))return s(u,{flip:d})}),u.extend("setImageCropAspectRatio",d=>{if(!r(u,c)||typeof d>"u")return;let h=u.getMetadata("crop"),f=n(d),p={center:{x:.5,y:.5},flip:h?Object.assign({},h.flip):{horizontal:!1,vertical:!1},rotation:0,zoom:1,aspectRatio:f};return u.setMetadata("crop",p),p})}),e("DID_LOAD_ITEM",(u,{query:c})=>new Promise((d,h)=>{let f=u.file;if(!a(f)||!Fr(f)||!c("GET_ALLOW_IMAGE_CROP")||u.getMetadata("crop"))return d(u);let m=c("GET_IMAGE_CROP_ASPECT_RATIO");u.setMetadata("crop",{center:{x:.5,y:.5},flip:{horizontal:!1,vertical:!1},rotation:0,zoom:1,aspectRatio:m?n(m):null}),d(u)})),{options:{allowImageCrop:[!0,i.BOOLEAN],imageCropAspectRatio:[null,i.STRING]}}},Nu=typeof window<"u"&&typeof window.document<"u";Nu&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Cr}));var zr=Cr;var Ia=e=>/^image/.test(e.type),Nr=e=>{let{addFilter:t,utils:i,views:a}=e,{Type:n,createRoute:r,createItemAPI:o=c=>c}=i,{fileActionButton:l}=a;t("SHOULD_REMOVE_ON_REVERT",(c,{item:d,query:h})=>new Promise(f=>{let{file:p}=d,m=h("GET_ALLOW_IMAGE_EDIT")&&h("GET_IMAGE_EDIT_ALLOW_EDIT")&&Ia(p);f(!m)})),t("DID_LOAD_ITEM",(c,{query:d,dispatch:h})=>new Promise((f,p)=>{if(c.origin>1){f(c);return}let{file:m}=c;if(!d("GET_ALLOW_IMAGE_EDIT")||!d("GET_IMAGE_EDIT_INSTANT_EDIT")){f(c);return}if(!Ia(m)){f(c);return}let g=(E,I,_)=>y=>{s.shift(),y?I(E):_(E),h("KICK"),b()},b=()=>{if(!s.length)return;let{item:E,resolve:I,reject:_}=s[0];h("EDIT_ITEM",{id:E.id,handleEditorResponse:g(E,I,_)})};u({item:c,resolve:f,reject:p}),s.length===1&&b()})),t("DID_CREATE_ITEM",(c,{query:d,dispatch:h})=>{c.extend("edit",()=>{h("EDIT_ITEM",{id:c.id})})});let s=[],u=c=>(s.push(c),c);return t("CREATE_VIEW",c=>{let{is:d,view:h,query:f}=c;if(!f("GET_ALLOW_IMAGE_EDIT"))return;let p=f("GET_ALLOW_IMAGE_PREVIEW");if(!(d("file-info")&&!p||d("file")&&p))return;let g=f("GET_IMAGE_EDIT_EDITOR");if(!g)return;g.filepondCallbackBridge||(g.outputData=!0,g.outputFile=!1,g.filepondCallbackBridge={onconfirm:g.onconfirm||(()=>{}),oncancel:g.oncancel||(()=>{})});let b=({root:_,props:y,action:T})=>{let{id:v}=y,{handleEditorResponse:R}=T;g.cropAspectRatio=_.query("GET_IMAGE_CROP_ASPECT_RATIO")||g.cropAspectRatio,g.outputCanvasBackgroundColor=_.query("GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR")||g.outputCanvasBackgroundColor;let S=_.query("GET_ITEM",v);if(!S)return;let D=S.file,x=S.getMetadata("crop"),O={center:{x:.5,y:.5},flip:{horizontal:!1,vertical:!1},zoom:1,rotation:0,aspectRatio:null},z=S.getMetadata("resize"),A=S.getMetadata("filter")||null,F=S.getMetadata("filters")||null,w=S.getMetadata("colors")||null,L=S.getMetadata("markup")||null,C={crop:x||O,size:z?{upscale:z.upscale,mode:z.mode,width:z.size.width,height:z.size.height}:null,filter:F?F.id||F.matrix:_.query("GET_ALLOW_IMAGE_FILTER")&&_.query("GET_IMAGE_FILTER_COLOR_MATRIX")&&!w?A:null,color:w,markup:L};g.onconfirm=({data:P})=>{let{crop:G,size:B,filter:X,color:q,colorMatrix:j,markup:ue}=P,U={};if(G&&(U.crop=G),B){let W=(S.getMetadata("resize")||{}).size,$={width:B.width,height:B.height};!($.width&&$.height)&&W&&($.width=W.width,$.height=W.height),($.width||$.height)&&(U.resize={upscale:B.upscale,mode:B.mode,size:$})}ue&&(U.markup=ue),U.colors=q,U.filters=X,U.filter=j,S.setMetadata(U),g.filepondCallbackBridge.onconfirm(P,o(S)),R&&(g.onclose=()=>{R(!0),g.onclose=null})},g.oncancel=()=>{g.filepondCallbackBridge.oncancel(o(S)),R&&(g.onclose=()=>{R(!1),g.onclose=null})},g.open(D,C)},E=({root:_,props:y})=>{if(!f("GET_IMAGE_EDIT_ALLOW_EDIT"))return;let{id:T}=y,v=f("GET_ITEM",T);if(!v)return;let R=v.file;if(Ia(R))if(_.ref.handleEdit=S=>{S.stopPropagation(),_.dispatch("EDIT_ITEM",{id:T})},p){let S=h.createChildView(l,{label:"edit",icon:f("GET_IMAGE_EDIT_ICON_EDIT"),opacity:0});S.element.classList.add("filepond--action-edit-item"),S.element.dataset.align=f("GET_STYLE_IMAGE_EDIT_BUTTON_EDIT_ITEM_POSITION"),S.on("click",_.ref.handleEdit),_.ref.buttonEditItem=h.appendChildView(S)}else{let S=h.element.querySelector(".filepond--file-info-main"),D=document.createElement("button");D.className="filepond--action-edit-item-alt",D.innerHTML=f("GET_IMAGE_EDIT_ICON_EDIT")+"edit",D.addEventListener("click",_.ref.handleEdit),S.appendChild(D),_.ref.editButton=D}};h.registerDestroyer(({root:_})=>{_.ref.buttonEditItem&&_.ref.buttonEditItem.off("click",_.ref.handleEdit),_.ref.editButton&&_.ref.editButton.removeEventListener("click",_.ref.handleEdit)});let I={EDIT_ITEM:b,DID_LOAD_ITEM:E};if(p){let _=({root:y})=>{y.ref.buttonEditItem&&(y.ref.buttonEditItem.opacity=1)};I.DID_IMAGE_PREVIEW_SHOW=_}h.registerWriter(r(I))}),{options:{allowImageEdit:[!0,n.BOOLEAN],styleImageEditButtonEditItemPosition:["bottom center",n.STRING],imageEditInstantEdit:[!1,n.BOOLEAN],imageEditAllowEdit:[!0,n.BOOLEAN],imageEditIconEdit:['',n.STRING],imageEditEditor:[null,n.OBJECT]}}},Bu=typeof window<"u"&&typeof window.document<"u";Bu&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Nr}));var Br=Nr;var Gu=e=>/^image\/jpeg/.test(e.type),at={JPEG:65496,APP1:65505,EXIF:1165519206,TIFF:18761,Orientation:274,Unknown:65280},nt=(e,t,i=!1)=>e.getUint16(t,i),Gr=(e,t,i=!1)=>e.getUint32(t,i),Vu=e=>new Promise((t,i)=>{let a=new FileReader;a.onload=function(n){let r=new DataView(n.target.result);if(nt(r,0)!==at.JPEG){t(-1);return}let o=r.byteLength,l=2;for(;ltypeof window<"u"&&typeof window.document<"u")(),ku=()=>Uu,Hu="data:image/jpg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4QA6RXhpZgAATU0AKgAAAAgAAwESAAMAAAABAAYAAAEoAAMAAAABAAIAAAITAAMAAAABAAEAAAAAAAD/2wBDAP//////////////////////////////////////////////////////////////////////////////////////wAALCAABAAIBASIA/8QAJgABAAAAAAAAAAAAAAAAAAAAAxABAAAAAAAAAAAAAAAAAAAAAP/aAAgBAQAAPwBH/9k=",Vr,mi=ku()?new Image:{};mi.onload=()=>Vr=mi.naturalWidth>mi.naturalHeight;mi.src=Hu;var Wu=()=>Vr,Ur=({addFilter:e,utils:t})=>{let{Type:i,isFile:a}=t;return e("DID_LOAD_ITEM",(n,{query:r})=>new Promise((o,l)=>{let s=n.file;if(!a(s)||!Gu(s)||!r("GET_ALLOW_IMAGE_EXIF_ORIENTATION")||!Wu())return o(n);Vu(s).then(u=>{n.setMetadata("exif",{orientation:u}),o(n)})})),{options:{allowImageExifOrientation:[!0,i.BOOLEAN]}}},Yu=typeof window<"u"&&typeof window.document<"u";Yu&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Ur}));var kr=Ur;var $u=e=>/^image/.test(e.type),Hr=(e,t)=>Ut(e.x*t,e.y*t),Wr=(e,t)=>Ut(e.x+t.x,e.y+t.y),qu=e=>{let t=Math.sqrt(e.x*e.x+e.y*e.y);return t===0?{x:0,y:0}:Ut(e.x/t,e.y/t)},gi=(e,t,i)=>{let a=Math.cos(t),n=Math.sin(t),r=Ut(e.x-i.x,e.y-i.y);return Ut(i.x+a*r.x-n*r.y,i.y+n*r.x+a*r.y)},Ut=(e=0,t=0)=>({x:e,y:t}),Ie=(e,t,i=1,a)=>{if(typeof e=="string")return parseFloat(e)*i;if(typeof e=="number")return e*(a?t[a]:Math.min(t.width,t.height))},Xu=(e,t,i)=>{let a=e.borderStyle||e.lineStyle||"solid",n=e.backgroundColor||e.fontColor||"transparent",r=e.borderColor||e.lineColor||"transparent",o=Ie(e.borderWidth||e.lineWidth,t,i),l=e.lineCap||"round",s=e.lineJoin||"round",u=typeof a=="string"?"":a.map(d=>Ie(d,t,i)).join(","),c=e.opacity||1;return{"stroke-linecap":l,"stroke-linejoin":s,"stroke-width":o||0,"stroke-dasharray":u,stroke:r,fill:n,opacity:c}},ve=e=>e!=null,ju=(e,t,i=1)=>{let a=Ie(e.x,t,i,"width")||Ie(e.left,t,i,"width"),n=Ie(e.y,t,i,"height")||Ie(e.top,t,i,"height"),r=Ie(e.width,t,i,"width"),o=Ie(e.height,t,i,"height"),l=Ie(e.right,t,i,"width"),s=Ie(e.bottom,t,i,"height");return ve(n)||(ve(o)&&ve(s)?n=t.height-o-s:n=s),ve(a)||(ve(r)&&ve(l)?a=t.width-r-l:a=l),ve(r)||(ve(a)&&ve(l)?r=t.width-a-l:r=0),ve(o)||(ve(n)&&ve(s)?o=t.height-n-s:o=0),{x:a||0,y:n||0,width:r||0,height:o||0}},Qu=e=>e.map((t,i)=>`${i===0?"M":"L"} ${t.x} ${t.y}`).join(" "),Ce=(e,t)=>Object.keys(t).forEach(i=>e.setAttribute(i,t[i])),Zu="http://www.w3.org/2000/svg",bt=(e,t)=>{let i=document.createElementNS(Zu,e);return t&&Ce(i,t),i},Ku=e=>Ce(e,{...e.rect,...e.styles}),Ju=e=>{let t=e.rect.x+e.rect.width*.5,i=e.rect.y+e.rect.height*.5,a=e.rect.width*.5,n=e.rect.height*.5;return Ce(e,{cx:t,cy:i,rx:a,ry:n,...e.styles})},eh={contain:"xMidYMid meet",cover:"xMidYMid slice"},th=(e,t)=>{Ce(e,{...e.rect,...e.styles,preserveAspectRatio:eh[t.fit]||"none"})},ih={left:"start",center:"middle",right:"end"},ah=(e,t,i,a)=>{let n=Ie(t.fontSize,i,a),r=t.fontFamily||"sans-serif",o=t.fontWeight||"normal",l=ih[t.textAlign]||"start";Ce(e,{...e.rect,...e.styles,"stroke-width":0,"font-weight":o,"font-size":n,"font-family":r,"text-anchor":l}),e.text!==t.text&&(e.text=t.text,e.textContent=t.text.length?t.text:" ")},nh=(e,t,i,a)=>{Ce(e,{...e.rect,...e.styles,fill:"none"});let n=e.childNodes[0],r=e.childNodes[1],o=e.childNodes[2],l=e.rect,s={x:e.rect.x+e.rect.width,y:e.rect.y+e.rect.height};if(Ce(n,{x1:l.x,y1:l.y,x2:s.x,y2:s.y}),!t.lineDecoration)return;r.style.display="none",o.style.display="none";let u=qu({x:s.x-l.x,y:s.y-l.y}),c=Ie(.05,i,a);if(t.lineDecoration.indexOf("arrow-begin")!==-1){let d=Hr(u,c),h=Wr(l,d),f=gi(l,2,h),p=gi(l,-2,h);Ce(r,{style:"display:block;",d:`M${f.x},${f.y} L${l.x},${l.y} L${p.x},${p.y}`})}if(t.lineDecoration.indexOf("arrow-end")!==-1){let d=Hr(u,-c),h=Wr(s,d),f=gi(s,2,h),p=gi(s,-2,h);Ce(o,{style:"display:block;",d:`M${f.x},${f.y} L${s.x},${s.y} L${p.x},${p.y}`})}},rh=(e,t,i,a)=>{Ce(e,{...e.styles,fill:"none",d:Qu(t.points.map(n=>({x:Ie(n.x,i,a,"width"),y:Ie(n.y,i,a,"height")})))})},Ei=e=>t=>bt(e,{id:t.id}),oh=e=>{let t=bt("image",{id:e.id,"stroke-linecap":"round","stroke-linejoin":"round",opacity:"0"});return t.onload=()=>{t.setAttribute("opacity",e.opacity||1)},t.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",e.src),t},lh=e=>{let t=bt("g",{id:e.id,"stroke-linecap":"round","stroke-linejoin":"round"}),i=bt("line");t.appendChild(i);let a=bt("path");t.appendChild(a);let n=bt("path");return t.appendChild(n),t},sh={image:oh,rect:Ei("rect"),ellipse:Ei("ellipse"),text:Ei("text"),path:Ei("path"),line:lh},ch={rect:Ku,ellipse:Ju,image:th,text:ah,path:rh,line:nh},dh=(e,t)=>sh[e](t),uh=(e,t,i,a,n)=>{t!=="path"&&(e.rect=ju(i,a,n)),e.styles=Xu(i,a,n),ch[t](e,i,a,n)},hh=["x","y","left","top","right","bottom","width","height"],fh=e=>typeof e=="string"&&/%/.test(e)?parseFloat(e)/100:e,ph=e=>{let[t,i]=e,a=i.points?{}:hh.reduce((n,r)=>(n[r]=fh(i[r]),n),{});return[t,{zIndex:0,...i,...a}]},mh=(e,t)=>e[1].zIndex>t[1].zIndex?1:e[1].zIndexe.utils.createView({name:"image-preview-markup",tag:"svg",ignoreRect:!0,mixins:{apis:["width","height","crop","markup","resize","dirty"]},write:({root:t,props:i})=>{if(!i.dirty)return;let{crop:a,resize:n,markup:r}=i,o=i.width,l=i.height,s=a.width,u=a.height;if(n){let{size:f}=n,p=f&&f.width,m=f&&f.height,g=n.mode,b=n.upscale;p&&!m&&(m=p),m&&!p&&(p=m);let E=s{let[p,m]=f,g=dh(p,m);uh(g,p,m,c,d),t.element.appendChild(g)})}}),Vt=(e,t)=>({x:e,y:t}),Eh=(e,t)=>e.x*t.x+e.y*t.y,Yr=(e,t)=>Vt(e.x-t.x,e.y-t.y),Th=(e,t)=>Eh(Yr(e,t),Yr(e,t)),$r=(e,t)=>Math.sqrt(Th(e,t)),qr=(e,t)=>{let i=e,a=1.5707963267948966,n=t,r=1.5707963267948966-t,o=Math.sin(a),l=Math.sin(n),s=Math.sin(r),u=Math.cos(r),c=i/o,d=c*l,h=c*s;return Vt(u*d,u*h)},Ih=(e,t)=>{let i=e.width,a=e.height,n=qr(i,t),r=qr(a,t),o=Vt(e.x+Math.abs(n.x),e.y-Math.abs(n.y)),l=Vt(e.x+e.width+Math.abs(r.y),e.y+Math.abs(r.x)),s=Vt(e.x-Math.abs(r.y),e.y+e.height-Math.abs(r.x));return{width:$r(o,l),height:$r(o,s)}},bh=(e,t,i=1)=>{let a=e.height/e.width,n=1,r=t,o=1,l=a;l>r&&(l=r,o=l/a);let s=Math.max(n/o,r/l),u=e.width/(i*s*o),c=u*t;return{width:u,height:c}},jr=(e,t,i,a)=>{let n=a.x>.5?1-a.x:a.x,r=a.y>.5?1-a.y:a.y,o=n*2*e.width,l=r*2*e.height,s=Ih(t,i);return Math.max(s.width/o,s.height/l)},Qr=(e,t)=>{let i=e.width,a=i*t;a>e.height&&(a=e.height,i=a/t);let n=(e.width-i)*.5,r=(e.height-a)*.5;return{x:n,y:r,width:i,height:a}},_h=(e,t={})=>{let{zoom:i,rotation:a,center:n,aspectRatio:r}=t;r||(r=e.height/e.width);let o=bh(e,r,i),l={x:o.width*.5,y:o.height*.5},s={x:0,y:0,width:o.width,height:o.height,center:l},u=typeof t.scaleToFit>"u"||t.scaleToFit,c=jr(e,Qr(s,r),a,u?n:{x:.5,y:.5}),d=i*c;return{widthFloat:o.width/d,heightFloat:o.height/d,width:Math.round(o.width/d),height:Math.round(o.height/d)}},Fe={type:"spring",stiffness:.5,damping:.45,mass:10},Rh=e=>e.utils.createView({name:"image-bitmap",ignoreRect:!0,mixins:{styles:["scaleX","scaleY"]},create:({root:t,props:i})=>{t.appendChild(i.image)}}),yh=e=>e.utils.createView({name:"image-canvas-wrapper",tag:"div",ignoreRect:!0,mixins:{apis:["crop","width","height"],styles:["originX","originY","translateX","translateY","scaleX","scaleY","rotateZ"],animations:{originX:Fe,originY:Fe,scaleX:Fe,scaleY:Fe,translateX:Fe,translateY:Fe,rotateZ:Fe}},create:({root:t,props:i})=>{i.width=i.image.width,i.height=i.image.height,t.ref.bitmap=t.appendChildView(t.createChildView(Rh(e),{image:i.image}))},write:({root:t,props:i})=>{let{flip:a}=i.crop,{bitmap:n}=t.ref;n.scaleX=a.horizontal?-1:1,n.scaleY=a.vertical?-1:1}}),Sh=e=>e.utils.createView({name:"image-clip",tag:"div",ignoreRect:!0,mixins:{apis:["crop","markup","resize","width","height","dirty","background"],styles:["width","height","opacity"],animations:{opacity:{type:"tween",duration:250}}},didWriteView:function({root:t,props:i}){i.background&&(t.element.style.backgroundColor=i.background)},create:({root:t,props:i})=>{t.ref.image=t.appendChildView(t.createChildView(yh(e),Object.assign({},i))),t.ref.createMarkup=()=>{t.ref.markup||(t.ref.markup=t.appendChildView(t.createChildView(gh(e),Object.assign({},i))))},t.ref.destroyMarkup=()=>{t.ref.markup&&(t.removeChildView(t.ref.markup),t.ref.markup=null)};let a=t.query("GET_IMAGE_PREVIEW_TRANSPARENCY_INDICATOR");a!==null&&(a==="grid"?t.element.dataset.transparencyIndicator=a:t.element.dataset.transparencyIndicator="color")},write:({root:t,props:i,shouldOptimize:a})=>{let{crop:n,markup:r,resize:o,dirty:l,width:s,height:u}=i;t.ref.image.crop=n;let c={x:0,y:0,width:s,height:u,center:{x:s*.5,y:u*.5}},d={width:t.ref.image.width,height:t.ref.image.height},h={x:n.center.x*d.width,y:n.center.y*d.height},f={x:c.center.x-d.width*n.center.x,y:c.center.y-d.height*n.center.y},p=Math.PI*2+n.rotation%(Math.PI*2),m=n.aspectRatio||d.height/d.width,g=typeof n.scaleToFit>"u"||n.scaleToFit,b=jr(d,Qr(c,m),p,g?n.center:{x:.5,y:.5}),E=n.zoom*b;r&&r.length?(t.ref.createMarkup(),t.ref.markup.width=s,t.ref.markup.height=u,t.ref.markup.resize=o,t.ref.markup.dirty=l,t.ref.markup.markup=r,t.ref.markup.crop=_h(d,n)):t.ref.markup&&t.ref.destroyMarkup();let I=t.ref.image;if(a){I.originX=null,I.originY=null,I.translateX=null,I.translateY=null,I.rotateZ=null,I.scaleX=null,I.scaleY=null;return}I.originX=h.x,I.originY=h.y,I.translateX=f.x,I.translateY=f.y,I.rotateZ=p,I.scaleX=E,I.scaleY=E}}),wh=e=>e.utils.createView({name:"image-preview",tag:"div",ignoreRect:!0,mixins:{apis:["image","crop","markup","resize","dirty","background"],styles:["translateY","scaleX","scaleY","opacity"],animations:{scaleX:Fe,scaleY:Fe,translateY:Fe,opacity:{type:"tween",duration:400}}},create:({root:t,props:i})=>{t.ref.clip=t.appendChildView(t.createChildView(Sh(e),{id:i.id,image:i.image,crop:i.crop,markup:i.markup,resize:i.resize,dirty:i.dirty,background:i.background}))},write:({root:t,props:i,shouldOptimize:a})=>{let{clip:n}=t.ref,{image:r,crop:o,markup:l,resize:s,dirty:u}=i;if(n.crop=o,n.markup=l,n.resize=s,n.dirty=u,n.opacity=a?0:1,a||t.rect.element.hidden)return;let c=r.height/r.width,d=o.aspectRatio||c,h=t.rect.inner.width,f=t.rect.inner.height,p=t.query("GET_IMAGE_PREVIEW_HEIGHT"),m=t.query("GET_IMAGE_PREVIEW_MIN_HEIGHT"),g=t.query("GET_IMAGE_PREVIEW_MAX_HEIGHT"),b=t.query("GET_PANEL_ASPECT_RATIO"),E=t.query("GET_ALLOW_MULTIPLE");b&&!E&&(p=h*b,d=b);let I=p!==null?p:Math.max(m,Math.min(h*d,g)),_=I/d;_>h&&(_=h,I=_*d),I>f&&(I=f,_=f/d),n.width=_,n.height=I}}),vh=` + + + + + + + + + + + + + + + + + +`,Xr=0,Ah=e=>e.utils.createView({name:"image-preview-overlay",tag:"div",ignoreRect:!0,create:({root:t,props:i})=>{let a=vh;if(document.querySelector("base")){let n=new URL(window.location.href.replace(window.location.hash,"")).href;a=a.replace(/url\(\#/g,"url("+n+"#")}Xr++,t.element.classList.add(`filepond--image-preview-overlay-${i.status}`),t.element.innerHTML=a.replace(/__UID__/g,Xr)},mixins:{styles:["opacity"],animations:{opacity:{type:"spring",mass:25}}}}),Lh=function(){self.onmessage=e=>{createImageBitmap(e.data.message.file).then(t=>{self.postMessage({id:e.data.id,message:t},[t])})}},Mh=function(){self.onmessage=e=>{let t=e.data.message.imageData,i=e.data.message.colorMatrix,a=t.data,n=a.length,r=i[0],o=i[1],l=i[2],s=i[3],u=i[4],c=i[5],d=i[6],h=i[7],f=i[8],p=i[9],m=i[10],g=i[11],b=i[12],E=i[13],I=i[14],_=i[15],y=i[16],T=i[17],v=i[18],R=i[19],S=0,D=0,x=0,O=0,z=0;for(;S{let i=new Image;i.onload=()=>{let a=i.naturalWidth,n=i.naturalHeight;i=null,t(a,n)},i.src=e},xh={1:()=>[1,0,0,1,0,0],2:e=>[-1,0,0,1,e,0],3:(e,t)=>[-1,0,0,-1,e,t],4:(e,t)=>[1,0,0,-1,0,t],5:()=>[0,1,1,0,0,0],6:(e,t)=>[0,1,-1,0,t,0],7:(e,t)=>[0,-1,-1,0,t,e],8:e=>[0,-1,1,0,0,e]},Dh=(e,t,i,a)=>{a!==-1&&e.transform.apply(e,xh[a](t,i))},Ph=(e,t,i,a)=>{t=Math.round(t),i=Math.round(i);let n=document.createElement("canvas");n.width=t,n.height=i;let r=n.getContext("2d");return a>=5&&a<=8&&([t,i]=[i,t]),Dh(r,t,i,a),r.drawImage(e,0,0,t,i),n},Zr=e=>/^image/.test(e.type)&&!/svg/.test(e.type),Fh=10,Ch=10,zh=e=>{let t=Math.min(Fh/e.width,Ch/e.height),i=document.createElement("canvas"),a=i.getContext("2d"),n=i.width=Math.ceil(e.width*t),r=i.height=Math.ceil(e.height*t);a.drawImage(e,0,0,n,r);let o=null;try{o=a.getImageData(0,0,n,r).data}catch{return null}let l=o.length,s=0,u=0,c=0,d=0;for(;dMath.floor(Math.sqrt(e/(t/4))),Nh=(e,t)=>(t=t||document.createElement("canvas"),t.width=e.width,t.height=e.height,t.getContext("2d").drawImage(e,0,0),t),Bh=e=>{let t;try{t=new ImageData(e.width,e.height)}catch{t=document.createElement("canvas").getContext("2d").createImageData(e.width,e.height)}return t.data.set(new Uint8ClampedArray(e.data)),t},Gh=e=>new Promise((t,i)=>{let a=new Image;a.crossOrigin="Anonymous",a.onload=()=>{t(a)},a.onerror=n=>{i(n)},a.src=e}),Vh=e=>{let t=Ah(e),i=wh(e),{createWorker:a}=e.utils,n=(E,I,_)=>new Promise(y=>{E.ref.imageData||(E.ref.imageData=_.getContext("2d").getImageData(0,0,_.width,_.height));let T=Bh(E.ref.imageData);if(!I||I.length!==20)return _.getContext("2d").putImageData(T,0,0),y();let v=a(Mh);v.post({imageData:T,colorMatrix:I},R=>{_.getContext("2d").putImageData(R,0,0),v.terminate(),y()},[T.data.buffer])}),r=(E,I)=>{E.removeChildView(I),I.image.width=1,I.image.height=1,I._destroy()},o=({root:E})=>{let I=E.ref.images.shift();return I.opacity=0,I.translateY=-15,E.ref.imageViewBin.push(I),I},l=({root:E,props:I,image:_})=>{let y=I.id,T=E.query("GET_ITEM",{id:y});if(!T)return;let v=T.getMetadata("crop")||{center:{x:.5,y:.5},flip:{horizontal:!1,vertical:!1},zoom:1,rotation:0,aspectRatio:null},R=E.query("GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR"),S,D,x=!1;E.query("GET_IMAGE_PREVIEW_MARKUP_SHOW")&&(S=T.getMetadata("markup")||[],D=T.getMetadata("resize"),x=!0);let O=E.appendChildView(E.createChildView(i,{id:y,image:_,crop:v,resize:D,markup:S,dirty:x,background:R,opacity:0,scaleX:1.15,scaleY:1.15,translateY:15}),E.childViews.length);E.ref.images.push(O),O.opacity=1,O.scaleX=1,O.scaleY=1,O.translateY=0,setTimeout(()=>{E.dispatch("DID_IMAGE_PREVIEW_SHOW",{id:y})},250)},s=({root:E,props:I})=>{let _=E.query("GET_ITEM",{id:I.id});if(!_)return;let y=E.ref.images[E.ref.images.length-1];y.crop=_.getMetadata("crop"),y.background=E.query("GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR"),E.query("GET_IMAGE_PREVIEW_MARKUP_SHOW")&&(y.dirty=!0,y.resize=_.getMetadata("resize"),y.markup=_.getMetadata("markup"))},u=({root:E,props:I,action:_})=>{if(!/crop|filter|markup|resize/.test(_.change.key)||!E.ref.images.length)return;let y=E.query("GET_ITEM",{id:I.id});if(y){if(/filter/.test(_.change.key)){let T=E.ref.images[E.ref.images.length-1];n(E,_.change.value,T.image);return}if(/crop|markup|resize/.test(_.change.key)){let T=y.getMetadata("crop"),v=E.ref.images[E.ref.images.length-1];if(T&&T.aspectRatio&&v.crop&&v.crop.aspectRatio&&Math.abs(T.aspectRatio-v.crop.aspectRatio)>1e-5){let R=o({root:E});l({root:E,props:I,image:Nh(R.image)})}else s({root:E,props:I})}}},c=E=>{let _=window.navigator.userAgent.match(/Firefox\/([0-9]+)\./),y=_?parseInt(_[1]):null;return y!==null&&y<=58?!1:"createImageBitmap"in window&&Zr(E)},d=({root:E,props:I})=>{let{id:_}=I,y=E.query("GET_ITEM",_);if(!y)return;let T=URL.createObjectURL(y.file);Oh(T,(v,R)=>{E.dispatch("DID_IMAGE_PREVIEW_CALCULATE_SIZE",{id:_,width:v,height:R})})},h=({root:E,props:I})=>{let{id:_}=I,y=E.query("GET_ITEM",_);if(!y)return;let T=URL.createObjectURL(y.file),v=()=>{Gh(T).then(R)},R=S=>{URL.revokeObjectURL(T);let x=(y.getMetadata("exif")||{}).orientation||-1,{width:O,height:z}=S;if(!O||!z)return;x>=5&&x<=8&&([O,z]=[z,O]);let A=Math.max(1,window.devicePixelRatio*.75),w=E.query("GET_IMAGE_PREVIEW_ZOOM_FACTOR")*A,L=z/O,C=E.rect.element.width,P=E.rect.element.height,G=C,B=G*L;L>1?(G=Math.min(O,C*w),B=G*L):(B=Math.min(z,P*w),G=B/L);let X=Ph(S,G,B,x),q=()=>{let ue=E.query("GET_IMAGE_PREVIEW_CALCULATE_AVERAGE_IMAGE_COLOR")?zh(data):null;y.setMetadata("color",ue,!0),"close"in S&&S.close(),E.ref.overlayShadow.opacity=1,l({root:E,props:I,image:X})},j=y.getMetadata("filter");j?n(E,j,X).then(q):q()};if(c(y.file)){let S=a(Lh);S.post({file:y.file},D=>{if(S.terminate(),!D){v();return}R(D)})}else v()},f=({root:E})=>{let I=E.ref.images[E.ref.images.length-1];I.translateY=0,I.scaleX=1,I.scaleY=1,I.opacity=1},p=({root:E})=>{E.ref.overlayShadow.opacity=1,E.ref.overlayError.opacity=0,E.ref.overlaySuccess.opacity=0},m=({root:E})=>{E.ref.overlayShadow.opacity=.25,E.ref.overlayError.opacity=1},g=({root:E})=>{E.ref.overlayShadow.opacity=.25,E.ref.overlaySuccess.opacity=1},b=({root:E})=>{E.ref.images=[],E.ref.imageData=null,E.ref.imageViewBin=[],E.ref.overlayShadow=E.appendChildView(E.createChildView(t,{opacity:0,status:"idle"})),E.ref.overlaySuccess=E.appendChildView(E.createChildView(t,{opacity:0,status:"success"})),E.ref.overlayError=E.appendChildView(E.createChildView(t,{opacity:0,status:"failure"}))};return e.utils.createView({name:"image-preview-wrapper",create:b,styles:["height"],apis:["height"],destroy:({root:E})=>{E.ref.images.forEach(I=>{I.image.width=1,I.image.height=1})},didWriteView:({root:E})=>{E.ref.images.forEach(I=>{I.dirty=!1})},write:e.utils.createRoute({DID_IMAGE_PREVIEW_DRAW:f,DID_IMAGE_PREVIEW_CONTAINER_CREATE:d,DID_FINISH_CALCULATE_PREVIEWSIZE:h,DID_UPDATE_ITEM_METADATA:u,DID_THROW_ITEM_LOAD_ERROR:m,DID_THROW_ITEM_PROCESSING_ERROR:m,DID_THROW_ITEM_INVALID:m,DID_COMPLETE_ITEM_PROCESSING:g,DID_START_ITEM_PROCESSING:p,DID_REVERT_ITEM_PROCESSING:p},({root:E})=>{let I=E.ref.imageViewBin.filter(_=>_.opacity===0);E.ref.imageViewBin=E.ref.imageViewBin.filter(_=>_.opacity>0),I.forEach(_=>r(E,_)),I.length=0})})},Kr=e=>{let{addFilter:t,utils:i}=e,{Type:a,createRoute:n,isFile:r}=i,o=Vh(e);return t("CREATE_VIEW",l=>{let{is:s,view:u,query:c}=l;if(!s("file")||!c("GET_ALLOW_IMAGE_PREVIEW"))return;let d=({root:g,props:b})=>{let{id:E}=b,I=c("GET_ITEM",E);if(!I||!r(I.file)||I.archived)return;let _=I.file;if(!$u(_)||!c("GET_IMAGE_PREVIEW_FILTER_ITEM")(I))return;let y="createImageBitmap"in(window||{}),T=c("GET_IMAGE_PREVIEW_MAX_FILE_SIZE");if(!y&&T&&_.size>T)return;g.ref.imagePreview=u.appendChildView(u.createChildView(o,{id:E}));let v=g.query("GET_IMAGE_PREVIEW_HEIGHT");v&&g.dispatch("DID_UPDATE_PANEL_HEIGHT",{id:I.id,height:v});let R=!y&&_.size>c("GET_IMAGE_PREVIEW_MAX_INSTANT_PREVIEW_FILE_SIZE");g.dispatch("DID_IMAGE_PREVIEW_CONTAINER_CREATE",{id:E},R)},h=(g,b)=>{if(!g.ref.imagePreview)return;let{id:E}=b,I=g.query("GET_ITEM",{id:E});if(!I)return;let _=g.query("GET_PANEL_ASPECT_RATIO"),y=g.query("GET_ITEM_PANEL_ASPECT_RATIO"),T=g.query("GET_IMAGE_PREVIEW_HEIGHT");if(_||y||T)return;let{imageWidth:v,imageHeight:R}=g.ref;if(!v||!R)return;let S=g.query("GET_IMAGE_PREVIEW_MIN_HEIGHT"),D=g.query("GET_IMAGE_PREVIEW_MAX_HEIGHT"),O=(I.getMetadata("exif")||{}).orientation||-1;if(O>=5&&O<=8&&([v,R]=[R,v]),!Zr(I.file)||g.query("GET_IMAGE_PREVIEW_UPSCALE")){let C=2048/v;v*=C,R*=C}let z=R/v,A=(I.getMetadata("crop")||{}).aspectRatio||z,F=Math.max(S,Math.min(R,D)),w=g.rect.element.width,L=Math.min(w*A,F);g.dispatch("DID_UPDATE_PANEL_HEIGHT",{id:I.id,height:L})},f=({root:g})=>{g.ref.shouldRescale=!0},p=({root:g,action:b})=>{b.change.key==="crop"&&(g.ref.shouldRescale=!0)},m=({root:g,action:b})=>{g.ref.imageWidth=b.width,g.ref.imageHeight=b.height,g.ref.shouldRescale=!0,g.ref.shouldDrawPreview=!0,g.dispatch("KICK")};u.registerWriter(n({DID_RESIZE_ROOT:f,DID_STOP_RESIZE:f,DID_LOAD_ITEM:d,DID_IMAGE_PREVIEW_CALCULATE_SIZE:m,DID_UPDATE_ITEM_METADATA:p},({root:g,props:b})=>{g.ref.imagePreview&&(g.rect.element.hidden||(g.ref.shouldRescale&&(h(g,b),g.ref.shouldRescale=!1),g.ref.shouldDrawPreview&&(requestAnimationFrame(()=>{requestAnimationFrame(()=>{g.dispatch("DID_FINISH_CALCULATE_PREVIEWSIZE",{id:b.id})})}),g.ref.shouldDrawPreview=!1)))}))}),{options:{allowImagePreview:[!0,a.BOOLEAN],imagePreviewFilterItem:[()=>!0,a.FUNCTION],imagePreviewHeight:[null,a.INT],imagePreviewMinHeight:[44,a.INT],imagePreviewMaxHeight:[256,a.INT],imagePreviewMaxFileSize:[null,a.INT],imagePreviewZoomFactor:[2,a.INT],imagePreviewUpscale:[!1,a.BOOLEAN],imagePreviewMaxInstantPreviewFileSize:[1e6,a.INT],imagePreviewTransparencyIndicator:[null,a.STRING],imagePreviewCalculateAverageImageColor:[!1,a.BOOLEAN],imagePreviewMarkupShow:[!0,a.BOOLEAN],imagePreviewMarkupFilter:[()=>!0,a.FUNCTION]}}},Uh=typeof window<"u"&&typeof window.document<"u";Uh&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Kr}));var Jr=Kr;var kh=e=>/^image/.test(e.type),Hh=(e,t)=>{let i=new Image;i.onload=()=>{let a=i.naturalWidth,n=i.naturalHeight;i=null,t({width:a,height:n})},i.onerror=()=>t(null),i.src=e},eo=({addFilter:e,utils:t})=>{let{Type:i}=t;return e("DID_LOAD_ITEM",(a,{query:n})=>new Promise((r,o)=>{let l=a.file;if(!kh(l)||!n("GET_ALLOW_IMAGE_RESIZE"))return r(a);let s=n("GET_IMAGE_RESIZE_MODE"),u=n("GET_IMAGE_RESIZE_TARGET_WIDTH"),c=n("GET_IMAGE_RESIZE_TARGET_HEIGHT"),d=n("GET_IMAGE_RESIZE_UPSCALE");if(u===null&&c===null)return r(a);let h=u===null?c:u,f=c===null?h:c,p=URL.createObjectURL(l);Hh(p,m=>{if(URL.revokeObjectURL(p),!m)return r(a);let{width:g,height:b}=m,E=(a.getMetadata("exif")||{}).orientation||-1;if(E>=5&&E<=8&&([g,b]=[b,g]),g===h&&b===f)return r(a);if(!d){if(s==="cover"){if(g<=h||b<=f)return r(a)}else if(g<=h&&b<=h)return r(a)}a.setMetadata("resize",{mode:s,upscale:d,size:{width:h,height:f}}),r(a)})})),{options:{allowImageResize:[!0,i.BOOLEAN],imageResizeMode:["cover",i.STRING],imageResizeUpscale:[!0,i.BOOLEAN],imageResizeTargetWidth:[null,i.INT],imageResizeTargetHeight:[null,i.INT]}}},Wh=typeof window<"u"&&typeof window.document<"u";Wh&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:eo}));var to=eo;var Yh=e=>/^image/.test(e.type),$h=e=>e.substr(0,e.lastIndexOf("."))||e,qh={jpeg:"jpg","svg+xml":"svg"},Xh=(e,t)=>{let i=$h(e),a=t.split("/")[1],n=qh[a]||a;return`${i}.${n}`},jh=e=>/jpeg|png|svg\+xml/.test(e)?e:"image/jpeg",Qh=e=>/^image/.test(e.type),Zh={1:()=>[1,0,0,1,0,0],2:e=>[-1,0,0,1,e,0],3:(e,t)=>[-1,0,0,-1,e,t],4:(e,t)=>[1,0,0,-1,0,t],5:()=>[0,1,1,0,0,0],6:(e,t)=>[0,1,-1,0,t,0],7:(e,t)=>[0,-1,-1,0,t,e],8:e=>[0,-1,1,0,0,e]},Kh=(e,t,i)=>(i===-1&&(i=1),Zh[i](e,t)),kt=(e,t)=>({x:e,y:t}),Jh=(e,t)=>e.x*t.x+e.y*t.y,io=(e,t)=>kt(e.x-t.x,e.y-t.y),ef=(e,t)=>Jh(io(e,t),io(e,t)),ao=(e,t)=>Math.sqrt(ef(e,t)),no=(e,t)=>{let i=e,a=1.5707963267948966,n=t,r=1.5707963267948966-t,o=Math.sin(a),l=Math.sin(n),s=Math.sin(r),u=Math.cos(r),c=i/o,d=c*l,h=c*s;return kt(u*d,u*h)},tf=(e,t)=>{let i=e.width,a=e.height,n=no(i,t),r=no(a,t),o=kt(e.x+Math.abs(n.x),e.y-Math.abs(n.y)),l=kt(e.x+e.width+Math.abs(r.y),e.y+Math.abs(r.x)),s=kt(e.x-Math.abs(r.y),e.y+e.height-Math.abs(r.x));return{width:ao(o,l),height:ao(o,s)}},lo=(e,t,i=0,a={x:.5,y:.5})=>{let n=a.x>.5?1-a.x:a.x,r=a.y>.5?1-a.y:a.y,o=n*2*e.width,l=r*2*e.height,s=tf(t,i);return Math.max(s.width/o,s.height/l)},so=(e,t)=>{let i=e.width,a=i*t;a>e.height&&(a=e.height,i=a/t);let n=(e.width-i)*.5,r=(e.height-a)*.5;return{x:n,y:r,width:i,height:a}},ro=(e,t,i=1)=>{let a=e.height/e.width,n=1,r=t,o=1,l=a;l>r&&(l=r,o=l/a);let s=Math.max(n/o,r/l),u=e.width/(i*s*o),c=u*t;return{width:u,height:c}},co=e=>{e.width=1,e.height=1,e.getContext("2d").clearRect(0,0,1,1)},oo=e=>e&&(e.horizontal||e.vertical),af=(e,t,i)=>{if(t<=1&&!oo(i))return e.width=e.naturalWidth,e.height=e.naturalHeight,e;let a=document.createElement("canvas"),n=e.naturalWidth,r=e.naturalHeight,o=t>=5&&t<=8;o?(a.width=r,a.height=n):(a.width=n,a.height=r);let l=a.getContext("2d");if(t&&l.transform.apply(l,Kh(n,r,t)),oo(i)){let s=[1,0,0,1,0,0];(!o&&i.horizontal||o&i.vertical)&&(s[0]=-1,s[4]=n),(!o&&i.vertical||o&&i.horizontal)&&(s[3]=-1,s[5]=r),l.transform(...s)}return l.drawImage(e,0,0,n,r),a},nf=(e,t,i={},a={})=>{let{canvasMemoryLimit:n,background:r=null}=a,o=i.zoom||1,l=af(e,t,i.flip),s={width:l.width,height:l.height},u=i.aspectRatio||s.height/s.width,c=ro(s,u,o);if(n){let I=c.width*c.height;if(I>n){let _=Math.sqrt(n)/Math.sqrt(I);s.width=Math.floor(s.width*_),s.height=Math.floor(s.height*_),c=ro(s,u,o)}}let d=document.createElement("canvas"),h={x:c.width*.5,y:c.height*.5},f={x:0,y:0,width:c.width,height:c.height,center:h},p=typeof i.scaleToFit>"u"||i.scaleToFit,m=o*lo(s,so(f,u),i.rotation,p?i.center:{x:.5,y:.5});d.width=Math.round(c.width/m),d.height=Math.round(c.height/m),h.x/=m,h.y/=m;let g={x:h.x-s.width*(i.center?i.center.x:.5),y:h.y-s.height*(i.center?i.center.y:.5)},b=d.getContext("2d");r&&(b.fillStyle=r,b.fillRect(0,0,d.width,d.height)),b.translate(h.x,h.y),b.rotate(i.rotation||0),b.drawImage(l,g.x-h.x,g.y-h.y,s.width,s.height);let E=b.getImageData(0,0,d.width,d.height);return co(d),E},rf=(()=>typeof window<"u"&&typeof window.document<"u")();rf&&(HTMLCanvasElement.prototype.toBlob||Object.defineProperty(HTMLCanvasElement.prototype,"toBlob",{value:function(e,t,i){var a=this.toDataURL(t,i).split(",")[1];setTimeout(function(){for(var n=atob(a),r=n.length,o=new Uint8Array(r),l=0;lnew Promise(a=>{let n=i?i(e):e;Promise.resolve(n).then(r=>{r.toBlob(a,t.type,t.quality)})}),Ii=(e,t)=>Ht(e.x*t,e.y*t),bi=(e,t)=>Ht(e.x+t.x,e.y+t.y),uo=e=>{let t=Math.sqrt(e.x*e.x+e.y*e.y);return t===0?{x:0,y:0}:Ht(e.x/t,e.y/t)},Ye=(e,t,i)=>{let a=Math.cos(t),n=Math.sin(t),r=Ht(e.x-i.x,e.y-i.y);return Ht(i.x+a*r.x-n*r.y,i.y+n*r.x+a*r.y)},Ht=(e=0,t=0)=>({x:e,y:t}),he=(e,t,i=1,a)=>{if(typeof e=="string")return parseFloat(e)*i;if(typeof e=="number")return e*(a?t[a]:Math.min(t.width,t.height))},rt=(e,t,i)=>{let a=e.borderStyle||e.lineStyle||"solid",n=e.backgroundColor||e.fontColor||"transparent",r=e.borderColor||e.lineColor||"transparent",o=he(e.borderWidth||e.lineWidth,t,i),l=e.lineCap||"round",s=e.lineJoin||"round",u=typeof a=="string"?"":a.map(d=>he(d,t,i)).join(","),c=e.opacity||1;return{"stroke-linecap":l,"stroke-linejoin":s,"stroke-width":o||0,"stroke-dasharray":u,stroke:r,fill:n,opacity:c}},Ae=e=>e!=null,Rt=(e,t,i=1)=>{let a=he(e.x,t,i,"width")||he(e.left,t,i,"width"),n=he(e.y,t,i,"height")||he(e.top,t,i,"height"),r=he(e.width,t,i,"width"),o=he(e.height,t,i,"height"),l=he(e.right,t,i,"width"),s=he(e.bottom,t,i,"height");return Ae(n)||(Ae(o)&&Ae(s)?n=t.height-o-s:n=s),Ae(a)||(Ae(r)&&Ae(l)?a=t.width-r-l:a=l),Ae(r)||(Ae(a)&&Ae(l)?r=t.width-a-l:r=0),Ae(o)||(Ae(n)&&Ae(s)?o=t.height-n-s:o=0),{x:a||0,y:n||0,width:r||0,height:o||0}},lf=e=>e.map((t,i)=>`${i===0?"M":"L"} ${t.x} ${t.y}`).join(" "),ze=(e,t)=>Object.keys(t).forEach(i=>e.setAttribute(i,t[i])),sf="http://www.w3.org/2000/svg",_t=(e,t)=>{let i=document.createElementNS(sf,e);return t&&ze(i,t),i},cf=e=>ze(e,{...e.rect,...e.styles}),df=e=>{let t=e.rect.x+e.rect.width*.5,i=e.rect.y+e.rect.height*.5,a=e.rect.width*.5,n=e.rect.height*.5;return ze(e,{cx:t,cy:i,rx:a,ry:n,...e.styles})},uf={contain:"xMidYMid meet",cover:"xMidYMid slice"},hf=(e,t)=>{ze(e,{...e.rect,...e.styles,preserveAspectRatio:uf[t.fit]||"none"})},ff={left:"start",center:"middle",right:"end"},pf=(e,t,i,a)=>{let n=he(t.fontSize,i,a),r=t.fontFamily||"sans-serif",o=t.fontWeight||"normal",l=ff[t.textAlign]||"start";ze(e,{...e.rect,...e.styles,"stroke-width":0,"font-weight":o,"font-size":n,"font-family":r,"text-anchor":l}),e.text!==t.text&&(e.text=t.text,e.textContent=t.text.length?t.text:" ")},mf=(e,t,i,a)=>{ze(e,{...e.rect,...e.styles,fill:"none"});let n=e.childNodes[0],r=e.childNodes[1],o=e.childNodes[2],l=e.rect,s={x:e.rect.x+e.rect.width,y:e.rect.y+e.rect.height};if(ze(n,{x1:l.x,y1:l.y,x2:s.x,y2:s.y}),!t.lineDecoration)return;r.style.display="none",o.style.display="none";let u=uo({x:s.x-l.x,y:s.y-l.y}),c=he(.05,i,a);if(t.lineDecoration.indexOf("arrow-begin")!==-1){let d=Ii(u,c),h=bi(l,d),f=Ye(l,2,h),p=Ye(l,-2,h);ze(r,{style:"display:block;",d:`M${f.x},${f.y} L${l.x},${l.y} L${p.x},${p.y}`})}if(t.lineDecoration.indexOf("arrow-end")!==-1){let d=Ii(u,-c),h=bi(s,d),f=Ye(s,2,h),p=Ye(s,-2,h);ze(o,{style:"display:block;",d:`M${f.x},${f.y} L${s.x},${s.y} L${p.x},${p.y}`})}},gf=(e,t,i,a)=>{ze(e,{...e.styles,fill:"none",d:lf(t.points.map(n=>({x:he(n.x,i,a,"width"),y:he(n.y,i,a,"height")})))})},Ti=e=>t=>_t(e,{id:t.id}),Ef=e=>{let t=_t("image",{id:e.id,"stroke-linecap":"round","stroke-linejoin":"round",opacity:"0"});return t.onload=()=>{t.setAttribute("opacity",e.opacity||1)},t.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",e.src),t},Tf=e=>{let t=_t("g",{id:e.id,"stroke-linecap":"round","stroke-linejoin":"round"}),i=_t("line");t.appendChild(i);let a=_t("path");t.appendChild(a);let n=_t("path");return t.appendChild(n),t},If={image:Ef,rect:Ti("rect"),ellipse:Ti("ellipse"),text:Ti("text"),path:Ti("path"),line:Tf},bf={rect:cf,ellipse:df,image:hf,text:pf,path:gf,line:mf},_f=(e,t)=>If[e](t),Rf=(e,t,i,a,n)=>{t!=="path"&&(e.rect=Rt(i,a,n)),e.styles=rt(i,a,n),bf[t](e,i,a,n)},ho=(e,t)=>e[1].zIndex>t[1].zIndex?1:e[1].zIndexnew Promise(n=>{let{background:r=null}=a,o=new FileReader;o.onloadend=()=>{let l=o.result,s=document.createElement("div");s.style.cssText="position:absolute;pointer-events:none;width:0;height:0;visibility:hidden;",s.innerHTML=l;let u=s.querySelector("svg");document.body.appendChild(s);let c=u.getBBox();s.parentNode.removeChild(s);let d=s.querySelector("title"),h=u.getAttribute("viewBox")||"",f=u.getAttribute("width")||"",p=u.getAttribute("height")||"",m=parseFloat(f)||null,g=parseFloat(p)||null,b=(f.match(/[a-z]+/)||[])[0]||"",E=(p.match(/[a-z]+/)||[])[0]||"",I=h.split(" ").map(parseFloat),_=I.length?{x:I[0],y:I[1],width:I[2],height:I[3]}:c,y=m??_.width,T=g??_.height;u.style.overflow="visible",u.setAttribute("width",y),u.setAttribute("height",T);let v="";if(i&&i.length){let j={width:y,height:T};v=i.sort(ho).reduce((ue,U)=>{let W=_f(U[0],U[1]);return Rf(W,U[0],U[1],j),W.removeAttribute("id"),W.getAttribute("opacity")===1&&W.removeAttribute("opacity"),ue+` +`+W.outerHTML+` +`},""),v=` + +${v.replace(/ /g," ")} + +`}let R=t.aspectRatio||T/y,S=y,D=S*R,x=typeof t.scaleToFit>"u"||t.scaleToFit,O=t.center?t.center.x:.5,z=t.center?t.center.y:.5,A=lo({width:y,height:T},so({width:S,height:D},R),t.rotation,x?{x:O,y:z}:{x:.5,y:.5}),F=t.zoom*A,w=t.rotation*(180/Math.PI),L={x:S*.5,y:D*.5},C={x:L.x-y*O,y:L.y-T*z},P=[`rotate(${w} ${L.x} ${L.y})`,`translate(${L.x} ${L.y})`,`scale(${F})`,`translate(${-L.x} ${-L.y})`,`translate(${C.x} ${C.y})`],G=t.flip&&t.flip.horizontal,B=t.flip&&t.flip.vertical,X=[`scale(${G?-1:1} ${B?-1:1})`,`translate(${G?-y:0} ${B?-T:0})`],q=` + + +${d?d.textContent:""} + + +${u.outerHTML}${v} + + +`;n(q)},o.readAsText(e)}),Sf=e=>{let t;try{t=new ImageData(e.width,e.height)}catch{t=document.createElement("canvas").getContext("2d").createImageData(e.width,e.height)}return t.data.set(e.data),t},wf=()=>{let e={resize:c,filter:u},t=(d,h)=>(d.forEach(f=>{h=e[f.type](h,f.data)}),h),i=(d,h)=>{let f=d.transforms,p=null;if(f.forEach(m=>{m.type==="filter"&&(p=m)}),p){let m=null;f.forEach(g=>{g.type==="resize"&&(m=g)}),m&&(m.data.matrix=p.data,f=f.filter(g=>g.type!=="filter"))}h(t(f,d.imageData))};self.onmessage=d=>{i(d.data.message,h=>{self.postMessage({id:d.data.id,message:h},[h.data.buffer])})};let a=1,n=1,r=1;function o(d,h,f){let p=h[d]/255,m=h[d+1]/255,g=h[d+2]/255,b=h[d+3]/255,E=p*f[0]+m*f[1]+g*f[2]+b*f[3]+f[4],I=p*f[5]+m*f[6]+g*f[7]+b*f[8]+f[9],_=p*f[10]+m*f[11]+g*f[12]+b*f[13]+f[14],y=p*f[15]+m*f[16]+g*f[17]+b*f[18]+f[19],T=Math.max(0,E*y)+a*(1-y),v=Math.max(0,I*y)+n*(1-y),R=Math.max(0,_*y)+r*(1-y);h[d]=Math.max(0,Math.min(1,T))*255,h[d+1]=Math.max(0,Math.min(1,v))*255,h[d+2]=Math.max(0,Math.min(1,R))*255}let l=self.JSON.stringify([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0]);function s(d){return self.JSON.stringify(d||[])===l}function u(d,h){if(!h||s(h))return d;let f=d.data,p=f.length,m=h[0],g=h[1],b=h[2],E=h[3],I=h[4],_=h[5],y=h[6],T=h[7],v=h[8],R=h[9],S=h[10],D=h[11],x=h[12],O=h[13],z=h[14],A=h[15],F=h[16],w=h[17],L=h[18],C=h[19],P=0,G=0,B=0,X=0,q=0,j=0,ue=0,U=0,W=0,$=0,le=0,J=0;for(;P1&&p===!1)return u(d,b);m=d.width*A,g=d.height*A}let E=d.width,I=d.height,_=Math.round(m),y=Math.round(g),T=d.data,v=new Uint8ClampedArray(_*y*4),R=E/_,S=I/y,D=Math.ceil(R*.5),x=Math.ceil(S*.5);for(let O=0;O=-1&&le<=1&&(F=2*le*le*le-3*le*le+1,F>0)){$=4*(W+q*E);let J=T[$+3];B+=F*J,L+=F,J<255&&(F=F*J/250),C+=F*T[$],P+=F*T[$+1],G+=F*T[$+2],w+=F}}}v[A]=C/w,v[A+1]=P/w,v[A+2]=G/w,v[A+3]=B/L,b&&o(A,v,b)}return{data:v,width:_,height:y}}},vf=(e,t)=>{if(e.getUint32(t+4,!1)!==1165519206)return;t+=4;let i=e.getUint16(t+=6,!1)===18761;t+=e.getUint32(t+4,i);let a=e.getUint16(t,i);t+=2;for(let n=0;n{let t=new DataView(e);if(t.getUint16(0)!==65496)return null;let i=2,a,n,r=!1;for(;i=65504&&a<=65519||a===65534)||(r||(r=vf(t,i,n)),i+n>t.byteLength)));)i+=n;return e.slice(0,i)},Lf=e=>new Promise(t=>{let i=new FileReader;i.onload=()=>t(Af(i.result)||null),i.readAsArrayBuffer(e.slice(0,256*1024))}),Mf=()=>window.BlobBuilder=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,Of=(e,t)=>{let i=Mf();if(i){let a=new i;return a.append(e),a.getBlob(t)}return new Blob([e],{type:t})},xf=()=>Math.random().toString(36).substr(2,9),Df=e=>{let t=new Blob(["(",e.toString(),")()"],{type:"application/javascript"}),i=URL.createObjectURL(t),a=new Worker(i),n=[];return{transfer:()=>{},post:(r,o,l)=>{let s=xf();n[s]=o,a.onmessage=u=>{let c=n[u.data.id];c&&(c(u.data.message),delete n[u.data.id])},a.postMessage({id:s,message:r},l)},terminate:()=>{a.terminate(),URL.revokeObjectURL(i)}}},Pf=e=>new Promise((t,i)=>{let a=new Image;a.onload=()=>{t(a)},a.onerror=n=>{i(n)},a.src=e}),Ff=e=>e.reduce((t,i)=>t.then(a=>i().then(Array.prototype.concat.bind(a))),Promise.resolve([])),Cf=(e,t)=>new Promise(i=>{let a={width:e.width,height:e.height},n=e.getContext("2d"),r=t.sort(ho).map(o=>()=>new Promise(l=>{kf[o[0]](n,a,o[1],l)&&l()}));Ff(r).then(()=>i(e))}),yt=(e,t)=>{e.beginPath(),e.lineCap=t["stroke-linecap"],e.lineJoin=t["stroke-linejoin"],e.lineWidth=t["stroke-width"],t["stroke-dasharray"].length&&e.setLineDash(t["stroke-dasharray"].split(",")),e.fillStyle=t.fill,e.strokeStyle=t.stroke,e.globalAlpha=t.opacity||1},St=e=>{e.fill(),e.stroke(),e.globalAlpha=1},zf=(e,t,i)=>{let a=Rt(i,t),n=rt(i,t);return yt(e,n),e.rect(a.x,a.y,a.width,a.height),St(e,n),!0},Nf=(e,t,i)=>{let a=Rt(i,t),n=rt(i,t);yt(e,n);let r=a.x,o=a.y,l=a.width,s=a.height,u=.5522848,c=l/2*u,d=s/2*u,h=r+l,f=o+s,p=r+l/2,m=o+s/2;return e.moveTo(r,m),e.bezierCurveTo(r,m-d,p-c,o,p,o),e.bezierCurveTo(p+c,o,h,m-d,h,m),e.bezierCurveTo(h,m+d,p+c,f,p,f),e.bezierCurveTo(p-c,f,r,m+d,r,m),St(e,n),!0},Bf=(e,t,i,a)=>{let n=Rt(i,t),r=rt(i,t);yt(e,r);let o=new Image;new URL(i.src,window.location.href).origin!==window.location.origin&&(o.crossOrigin=""),o.onload=()=>{if(i.fit==="cover"){let s=n.width/n.height,u=s>1?o.width:o.height*s,c=s>1?o.width/s:o.height,d=o.width*.5-u*.5,h=o.height*.5-c*.5;e.drawImage(o,d,h,u,c,n.x,n.y,n.width,n.height)}else if(i.fit==="contain"){let s=Math.min(n.width/o.width,n.height/o.height),u=s*o.width,c=s*o.height,d=n.x+n.width*.5-u*.5,h=n.y+n.height*.5-c*.5;e.drawImage(o,0,0,o.width,o.height,d,h,u,c)}else e.drawImage(o,0,0,o.width,o.height,n.x,n.y,n.width,n.height);St(e,r),a()},o.src=i.src},Gf=(e,t,i)=>{let a=Rt(i,t),n=rt(i,t);yt(e,n);let r=he(i.fontSize,t),o=i.fontFamily||"sans-serif",l=i.fontWeight||"normal",s=i.textAlign||"left";return e.font=`${l} ${r}px ${o}`,e.textAlign=s,e.fillText(i.text,a.x,a.y),St(e,n),!0},Vf=(e,t,i)=>{let a=rt(i,t);yt(e,a),e.beginPath();let n=i.points.map(o=>({x:he(o.x,t,1,"width"),y:he(o.y,t,1,"height")}));e.moveTo(n[0].x,n[0].y);let r=n.length;for(let o=1;o{let a=Rt(i,t),n=rt(i,t);yt(e,n),e.beginPath();let r={x:a.x,y:a.y},o={x:a.x+a.width,y:a.y+a.height};e.moveTo(r.x,r.y),e.lineTo(o.x,o.y);let l=uo({x:o.x-r.x,y:o.y-r.y}),s=.04*Math.min(t.width,t.height);if(i.lineDecoration.indexOf("arrow-begin")!==-1){let u=Ii(l,s),c=bi(r,u),d=Ye(r,2,c),h=Ye(r,-2,c);e.moveTo(d.x,d.y),e.lineTo(r.x,r.y),e.lineTo(h.x,h.y)}if(i.lineDecoration.indexOf("arrow-end")!==-1){let u=Ii(l,-s),c=bi(o,u),d=Ye(o,2,c),h=Ye(o,-2,c);e.moveTo(d.x,d.y),e.lineTo(o.x,o.y),e.lineTo(h.x,h.y)}return St(e,n),!0},kf={rect:zf,ellipse:Nf,image:Bf,text:Gf,line:Uf,path:Vf},Hf=e=>{let t=document.createElement("canvas");return t.width=e.width,t.height=e.height,t.getContext("2d").putImageData(e,0,0),t},Wf=(e,t,i={})=>new Promise((a,n)=>{if(!e||!Qh(e))return n({status:"not an image file",file:e});let{stripImageHead:r,beforeCreateBlob:o,afterCreateBlob:l,canvasMemoryLimit:s}=i,{crop:u,size:c,filter:d,markup:h,output:f}=t,p=t.image&&t.image.orientation?Math.max(1,Math.min(8,t.image.orientation)):null,m=f&&f.quality,g=m===null?null:m/100,b=f&&f.type||null,E=f&&f.background||null,I=[];c&&(typeof c.width=="number"||typeof c.height=="number")&&I.push({type:"resize",data:c}),d&&d.length===20&&I.push({type:"filter",data:d});let _=v=>{let R=l?l(v):v;Promise.resolve(R).then(a)},y=(v,R)=>{let S=Hf(v),D=h.length?Cf(S,h):S;Promise.resolve(D).then(x=>{of(x,R,o).then(O=>{if(co(x),r)return _(O);Lf(e).then(z=>{z!==null&&(O=new Blob([z,O.slice(20)],{type:O.type})),_(O)})}).catch(n)})};if(/svg/.test(e.type)&&b===null)return yf(e,u,h,{background:E}).then(v=>{a(Of(v,"image/svg+xml"))});let T=URL.createObjectURL(e);Pf(T).then(v=>{URL.revokeObjectURL(T);let R=nf(v,p,u,{canvasMemoryLimit:s,background:E}),S={quality:g,type:b||e.type};if(!I.length)return y(R,S);let D=Df(wf);D.post({transforms:I,imageData:R},x=>{y(Sf(x),S),D.terminate()},[R.data.buffer])}).catch(n)}),Yf=["x","y","left","top","right","bottom","width","height"],$f=e=>typeof e=="string"&&/%/.test(e)?parseFloat(e)/100:e,qf=e=>{let[t,i]=e,a=i.points?{}:Yf.reduce((n,r)=>(n[r]=$f(i[r]),n),{});return[t,{zIndex:0,...i,...a}]},Xf=e=>new Promise((t,i)=>{let a=new Image;a.src=URL.createObjectURL(e);let n=()=>{let o=a.naturalWidth,l=a.naturalHeight;o&&l&&(URL.revokeObjectURL(a.src),clearInterval(r),t({width:o,height:l}))};a.onerror=o=>{URL.revokeObjectURL(a.src),clearInterval(r),i(o)};let r=setInterval(n,1);n()});typeof window<"u"&&typeof window.document<"u"&&(HTMLCanvasElement.prototype.toBlob||Object.defineProperty(HTMLCanvasElement.prototype,"toBlob",{value:function(e,t,i){let a=this;setTimeout(()=>{let n=a.toDataURL(t,i).split(",")[1],r=atob(n),o=r.length,l=new Uint8Array(o);for(;o--;)l[o]=r.charCodeAt(o);e(new Blob([l],{type:t||"image/png"}))})}}));var _a=typeof window<"u"&&typeof window.document<"u",jf=_a&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,fo=({addFilter:e,utils:t})=>{let{Type:i,forin:a,getFileFromBlob:n,isFile:r}=t,o=["crop","resize","filter","markup","output"],l=c=>(d,h,f)=>d(h,c?c(f):f),s=c=>c.aspectRatio===null&&c.rotation===0&&c.zoom===1&&c.center&&c.center.x===.5&&c.center.y===.5&&c.flip&&c.flip.horizontal===!1&&c.flip.vertical===!1;e("SHOULD_PREPARE_OUTPUT",(c,{query:d})=>new Promise(h=>{h(!d("IS_ASYNC"))}));let u=(c,d,h)=>new Promise(f=>{if(!c("GET_ALLOW_IMAGE_TRANSFORM")||h.archived||!r(d)||!Yh(d))return f(!1);Xf(d).then(()=>{let p=c("GET_IMAGE_TRANSFORM_IMAGE_FILTER");if(p){let m=p(d);if(m==null)return handleRevert(!0);if(typeof m=="boolean")return f(m);if(typeof m.then=="function")return m.then(f)}f(!0)}).catch(p=>{f(!1)})});return e("DID_CREATE_ITEM",(c,{query:d,dispatch:h})=>{d("GET_ALLOW_IMAGE_TRANSFORM")&&c.extend("requestPrepare",()=>new Promise((f,p)=>{h("REQUEST_PREPARE_OUTPUT",{query:c.id,item:c,success:f,failure:p},!0)}))}),e("PREPARE_OUTPUT",(c,{query:d,item:h})=>new Promise(f=>{u(d,c,h).then(p=>{if(!p)return f(c);let m=[];d("GET_IMAGE_TRANSFORM_VARIANTS_INCLUDE_ORIGINAL")&&m.push(()=>new Promise(R=>{R({name:d("GET_IMAGE_TRANSFORM_VARIANTS_ORIGINAL_NAME"),file:c})})),d("GET_IMAGE_TRANSFORM_VARIANTS_INCLUDE_DEFAULT")&&m.push((R,S,D)=>new Promise(x=>{R(S,D).then(O=>x({name:d("GET_IMAGE_TRANSFORM_VARIANTS_DEFAULT_NAME"),file:O}))}));let g=d("GET_IMAGE_TRANSFORM_VARIANTS")||{};a(g,(R,S)=>{let D=l(S);m.push((x,O,z)=>new Promise(A=>{D(x,O,z).then(F=>A({name:R,file:F}))}))});let b=d("GET_IMAGE_TRANSFORM_OUTPUT_QUALITY"),E=d("GET_IMAGE_TRANSFORM_OUTPUT_QUALITY_MODE"),I=b===null?null:b/100,_=d("GET_IMAGE_TRANSFORM_OUTPUT_MIME_TYPE"),y=d("GET_IMAGE_TRANSFORM_CLIENT_TRANSFORMS")||o;h.setMetadata("output",{type:_,quality:I,client:y},!0);let T=(R,S)=>new Promise((D,x)=>{let O={...S};Object.keys(O).filter(B=>B!=="exif").forEach(B=>{y.indexOf(B)===-1&&delete O[B]});let{resize:z,exif:A,output:F,crop:w,filter:L,markup:C}=O,P={image:{orientation:A?A.orientation:null},output:F&&(F.type||typeof F.quality=="number"||F.background)?{type:F.type,quality:typeof F.quality=="number"?F.quality*100:null,background:F.background||d("GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR")||null}:void 0,size:z&&(z.size.width||z.size.height)?{mode:z.mode,upscale:z.upscale,...z.size}:void 0,crop:w&&!s(w)?{...w}:void 0,markup:C&&C.length?C.map(qf):[],filter:L};if(P.output){let B=F.type?F.type!==R.type:!1,X=/\/jpe?g$/.test(R.type),q=F.quality!==null?X&&E==="always":!1;if(!!!(P.size||P.crop||P.filter||B||q))return D(R)}let G={beforeCreateBlob:d("GET_IMAGE_TRANSFORM_BEFORE_CREATE_BLOB"),afterCreateBlob:d("GET_IMAGE_TRANSFORM_AFTER_CREATE_BLOB"),canvasMemoryLimit:d("GET_IMAGE_TRANSFORM_CANVAS_MEMORY_LIMIT"),stripImageHead:d("GET_IMAGE_TRANSFORM_OUTPUT_STRIP_IMAGE_HEAD")};Wf(R,P,G).then(B=>{let X=n(B,Xh(R.name,jh(B.type)));D(X)}).catch(x)}),v=m.map(R=>R(T,c,h.getMetadata()));Promise.all(v).then(R=>{f(R.length===1&&R[0].name===null?R[0].file:R)})})})),{options:{allowImageTransform:[!0,i.BOOLEAN],imageTransformImageFilter:[null,i.FUNCTION],imageTransformOutputMimeType:[null,i.STRING],imageTransformOutputQuality:[null,i.INT],imageTransformOutputStripImageHead:[!0,i.BOOLEAN],imageTransformClientTransforms:[null,i.ARRAY],imageTransformOutputQualityMode:["always",i.STRING],imageTransformVariants:[null,i.OBJECT],imageTransformVariantsIncludeDefault:[!0,i.BOOLEAN],imageTransformVariantsDefaultName:[null,i.STRING],imageTransformVariantsIncludeOriginal:[!1,i.BOOLEAN],imageTransformVariantsOriginalName:["original_",i.STRING],imageTransformBeforeCreateBlob:[null,i.FUNCTION],imageTransformAfterCreateBlob:[null,i.FUNCTION],imageTransformCanvasMemoryLimit:[_a&&jf?4096*4096:null,i.INT],imageTransformCanvasBackgroundColor:[null,i.STRING]}}};_a&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:fo}));var po=fo;var Ra=e=>/^video/.test(e.type),Wt=e=>/^audio/.test(e.type),ya=class{constructor(t,i){this.mediaEl=t,this.audioElems=i,this.onplayhead=!1,this.duration=0,this.timelineWidth=this.audioElems.timeline.offsetWidth-this.audioElems.playhead.offsetWidth,this.moveplayheadFn=this.moveplayhead.bind(this),this.registerListeners()}registerListeners(){this.mediaEl.addEventListener("timeupdate",this.timeUpdate.bind(this),!1),this.mediaEl.addEventListener("canplaythrough",()=>this.duration=this.mediaEl.duration,!1),this.audioElems.timeline.addEventListener("click",this.timelineClicked.bind(this),!1),this.audioElems.button.addEventListener("click",this.play.bind(this)),this.audioElems.playhead.addEventListener("mousedown",this.mouseDown.bind(this),!1),window.addEventListener("mouseup",this.mouseUp.bind(this),!1)}play(){this.mediaEl.paused?this.mediaEl.play():this.mediaEl.pause(),this.audioElems.button.classList.toggle("play"),this.audioElems.button.classList.toggle("pause")}timeUpdate(){let t=this.mediaEl.currentTime/this.duration*100;this.audioElems.playhead.style.marginLeft=t+"%",this.mediaEl.currentTime===this.duration&&(this.audioElems.button.classList.toggle("play"),this.audioElems.button.classList.toggle("pause"))}moveplayhead(t){let i=t.clientX-this.getPosition(this.audioElems.timeline);i>=0&&i<=this.timelineWidth&&(this.audioElems.playhead.style.marginLeft=i+"px"),i<0&&(this.audioElems.playhead.style.marginLeft="0px"),i>this.timelineWidth&&(this.audioElems.playhead.style.marginLeft=this.timelineWidth-4+"px")}timelineClicked(t){this.moveplayhead(t),this.mediaEl.currentTime=this.duration*this.clickPercent(t)}mouseDown(){this.onplayhead=!0,window.addEventListener("mousemove",this.moveplayheadFn,!0),this.mediaEl.removeEventListener("timeupdate",this.timeUpdate.bind(this),!1)}mouseUp(t){window.removeEventListener("mousemove",this.moveplayheadFn,!0),this.onplayhead==!0&&(this.moveplayhead(t),this.mediaEl.currentTime=this.duration*this.clickPercent(t),this.mediaEl.addEventListener("timeupdate",this.timeUpdate.bind(this),!1)),this.onplayhead=!1}clickPercent(t){return(t.clientX-this.getPosition(this.audioElems.timeline))/this.timelineWidth}getPosition(t){return t.getBoundingClientRect().left}},Qf=e=>e.utils.createView({name:"media-preview",tag:"div",ignoreRect:!0,create:({root:t,props:i})=>{let{id:a}=i,n=t.query("GET_ITEM",{id:i.id}),r=Wt(n.file)?"audio":"video";if(t.ref.media=document.createElement(r),t.ref.media.setAttribute("controls",!0),t.element.appendChild(t.ref.media),Wt(n.file)){let o=document.createDocumentFragment();t.ref.audio=[],t.ref.audio.container=document.createElement("div"),t.ref.audio.button=document.createElement("span"),t.ref.audio.timeline=document.createElement("div"),t.ref.audio.playhead=document.createElement("div"),t.ref.audio.container.className="audioplayer",t.ref.audio.button.className="playpausebtn play",t.ref.audio.timeline.className="timeline",t.ref.audio.playhead.className="playhead",t.ref.audio.timeline.appendChild(t.ref.audio.playhead),t.ref.audio.container.appendChild(t.ref.audio.button),t.ref.audio.container.appendChild(t.ref.audio.timeline),o.appendChild(t.ref.audio.container),t.element.appendChild(o)}},write:e.utils.createRoute({DID_MEDIA_PREVIEW_LOAD:({root:t,props:i})=>{let{id:a}=i,n=t.query("GET_ITEM",{id:i.id});if(!n)return;let r=window.URL||window.webkitURL,o=new Blob([n.file],{type:n.file.type});t.ref.media.type=n.file.type,t.ref.media.src=n.file.mock&&n.file.url||r.createObjectURL(o),Wt(n.file)&&new ya(t.ref.media,t.ref.audio),t.ref.media.addEventListener("loadeddata",()=>{let l=75;if(Ra(n.file)){let s=t.ref.media.offsetWidth,u=t.ref.media.videoWidth/s;l=t.ref.media.videoHeight/u}t.dispatch("DID_UPDATE_PANEL_HEIGHT",{id:i.id,height:l})},!1)}})}),Zf=e=>{let t=({root:a,props:n})=>{let{id:r}=n;a.query("GET_ITEM",r)&&a.dispatch("DID_MEDIA_PREVIEW_LOAD",{id:r})},i=({root:a,props:n})=>{let r=Qf(e);a.ref.media=a.appendChildView(a.createChildView(r,{id:n.id}))};return e.utils.createView({name:"media-preview-wrapper",create:i,write:e.utils.createRoute({DID_MEDIA_PREVIEW_CONTAINER_CREATE:t})})},Sa=e=>{let{addFilter:t,utils:i}=e,{Type:a,createRoute:n}=i,r=Zf(e);return t("CREATE_VIEW",o=>{let{is:l,view:s,query:u}=o;if(!l("file"))return;let c=({root:d,props:h})=>{let{id:f}=h,p=u("GET_ITEM",f),m=u("GET_ALLOW_VIDEO_PREVIEW"),g=u("GET_ALLOW_AUDIO_PREVIEW");!p||p.archived||(!Ra(p.file)||!m)&&(!Wt(p.file)||!g)||(d.ref.mediaPreview=s.appendChildView(s.createChildView(r,{id:f})),d.dispatch("DID_MEDIA_PREVIEW_CONTAINER_CREATE",{id:f}))};s.registerWriter(n({DID_LOAD_ITEM:c},({root:d,props:h})=>{let{id:f}=h,p=u("GET_ITEM",f),m=d.query("GET_ALLOW_VIDEO_PREVIEW"),g=d.query("GET_ALLOW_AUDIO_PREVIEW");!p||(!Ra(p.file)||!m)&&(!Wt(p.file)||!g)||d.rect.element.hidden}))}),{options:{allowVideoPreview:[!0,a.BOOLEAN],allowAudioPreview:[!0,a.BOOLEAN]}}},Kf=typeof window<"u"&&typeof window.document<"u";Kf&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Sa}));var mo={labelIdle:'\u0627\u0633\u062D\u0628 \u0648 \u0627\u062F\u0631\u062C \u0645\u0644\u0641\u0627\u062A\u0643 \u0623\u0648 \u062A\u0635\u0641\u062D ',labelInvalidField:"\u0627\u0644\u062D\u0642\u0644 \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0645\u0644\u0641\u0627\u062A \u063A\u064A\u0631 \u0635\u0627\u0644\u062D\u0629",labelFileWaitingForSize:"\u0628\u0627\u0646\u062A\u0638\u0627\u0631 \u0627\u0644\u062D\u062C\u0645",labelFileSizeNotAvailable:"\u0627\u0644\u062D\u062C\u0645 \u063A\u064A\u0631 \u0645\u062A\u0627\u062D",labelFileLoading:"\u0628\u0627\u0644\u0625\u0646\u062A\u0638\u0627\u0631",labelFileLoadError:"\u062D\u062F\u062B \u062E\u0637\u0623 \u0623\u062B\u0646\u0627\u0621 \u0627\u0644\u062A\u062D\u0645\u064A\u0644",labelFileProcessing:"\u064A\u062A\u0645 \u0627\u0644\u0631\u0641\u0639",labelFileProcessingComplete:"\u062A\u0645 \u0627\u0644\u0631\u0641\u0639",labelFileProcessingAborted:"\u062A\u0645 \u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u0631\u0641\u0639",labelFileProcessingError:"\u062D\u062F\u062B \u062E\u0637\u0623 \u0623\u062B\u0646\u0627\u0621 \u0627\u0644\u0631\u0641\u0639",labelFileProcessingRevertError:"\u062D\u062F\u062B \u062E\u0637\u0623 \u0623\u062B\u0646\u0627\u0621 \u0627\u0644\u062A\u0631\u0627\u062C\u0639",labelFileRemoveError:"\u062D\u062F\u062B \u062E\u0637\u0623 \u0623\u062B\u0646\u0627\u0621 \u0627\u0644\u062D\u0630\u0641",labelTapToCancel:"\u0627\u0646\u0642\u0631 \u0644\u0644\u0625\u0644\u063A\u0627\u0621",labelTapToRetry:"\u0627\u0646\u0642\u0631 \u0644\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629",labelTapToUndo:"\u0627\u0646\u0642\u0631 \u0644\u0644\u062A\u0631\u0627\u062C\u0639",labelButtonRemoveItem:"\u0645\u0633\u062D",labelButtonAbortItemLoad:"\u0625\u0644\u063A\u0627\u0621",labelButtonRetryItemLoad:"\u0625\u0639\u0627\u062F\u0629",labelButtonAbortItemProcessing:"\u0625\u0644\u063A\u0627\u0621",labelButtonUndoItemProcessing:"\u062A\u0631\u0627\u062C\u0639",labelButtonRetryItemProcessing:"\u0625\u0639\u0627\u062F\u0629",labelButtonProcessItem:"\u0631\u0641\u0639",labelMaxFileSizeExceeded:"\u0627\u0644\u0645\u0644\u0641 \u0643\u0628\u064A\u0631 \u062C\u062F\u0627",labelMaxFileSize:"\u062D\u062C\u0645 \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0623\u0642\u0635\u0649: {filesize}",labelMaxTotalFileSizeExceeded:"\u062A\u0645 \u062A\u062C\u0627\u0648\u0632 \u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0644\u062D\u062C\u0645 \u0627\u0644\u0625\u062C\u0645\u0627\u0644\u064A",labelMaxTotalFileSize:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u062D\u062C\u0645 \u0627\u0644\u0645\u0644\u0641: {filesize}",labelFileTypeNotAllowed:"\u0645\u0644\u0641 \u0645\u0646 \u0646\u0648\u0639 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D",fileValidateTypeLabelExpectedTypes:"\u062A\u062A\u0648\u0642\u0639 {allButLastType} \u0645\u0646 {lastType}",imageValidateSizeLabelFormatError:"\u0646\u0648\u0639 \u0627\u0644\u0635\u0648\u0631\u0629 \u063A\u064A\u0631 \u0645\u062F\u0639\u0648\u0645",imageValidateSizeLabelImageSizeTooSmall:"\u0627\u0644\u0635\u0648\u0631\u0629 \u0635\u063A\u064A\u0631 \u062C\u062F\u0627",imageValidateSizeLabelImageSizeTooBig:"\u0627\u0644\u0635\u0648\u0631\u0629 \u0643\u0628\u064A\u0631\u0629 \u062C\u062F\u0627",imageValidateSizeLabelExpectedMinSize:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u062F\u0646\u0649 \u0644\u0644\u0623\u0628\u0639\u0627\u062F \u0647\u0648: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0644\u0623\u0628\u0639\u0627\u062F \u0647\u0648: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\u0627\u0644\u062F\u0642\u0629 \u0636\u0639\u064A\u0641\u0629 \u062C\u062F\u0627",imageValidateSizeLabelImageResolutionTooHigh:"\u0627\u0644\u062F\u0642\u0629 \u0645\u0631\u062A\u0641\u0639\u0629 \u062C\u062F\u0627",imageValidateSizeLabelExpectedMinResolution:"\u0623\u0642\u0644 \u062F\u0642\u0629: {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"\u0623\u0642\u0635\u0649 \u062F\u0642\u0629: {maxResolution}"};var go={labelIdle:'P\u0159et\xE1hn\u011Bte soubor sem (drag&drop) nebo Vyhledat ',labelInvalidField:"Pole obsahuje chybn\xE9 soubory",labelFileWaitingForSize:"Zji\u0161\u0165uje se velikost",labelFileSizeNotAvailable:"Velikost nen\xED zn\xE1m\xE1",labelFileLoading:"P\u0159en\xE1\u0161\xED se",labelFileLoadError:"Chyba p\u0159i p\u0159enosu",labelFileProcessing:"Prob\xEDh\xE1 upload",labelFileProcessingComplete:"Upload dokon\u010Den",labelFileProcessingAborted:"Upload stornov\xE1n",labelFileProcessingError:"Chyba p\u0159i uploadu",labelFileProcessingRevertError:"Chyba p\u0159i obnov\u011B",labelFileRemoveError:"Chyba p\u0159i odstran\u011Bn\xED",labelTapToCancel:"klepn\u011Bte pro storno",labelTapToRetry:"klepn\u011Bte pro opakov\xE1n\xED",labelTapToUndo:"klepn\u011Bte pro vr\xE1cen\xED",labelButtonRemoveItem:"Odstranit",labelButtonAbortItemLoad:"Storno",labelButtonRetryItemLoad:"Opakovat",labelButtonAbortItemProcessing:"Zp\u011Bt",labelButtonUndoItemProcessing:"Vr\xE1tit",labelButtonRetryItemProcessing:"Opakovat",labelButtonProcessItem:"Upload",labelMaxFileSizeExceeded:"Soubor je p\u0159\xEDli\u0161 velk\xFD",labelMaxFileSize:"Nejv\u011Bt\u0161\xED velikost souboru je {filesize}",labelMaxTotalFileSizeExceeded:"P\u0159ekro\u010Dena maxim\xE1ln\xED celkov\xE1 velikost souboru",labelMaxTotalFileSize:"Maxim\xE1ln\xED celkov\xE1 velikost souboru je {filesize}",labelFileTypeNotAllowed:"Soubor je nespr\xE1vn\xE9ho typu",fileValidateTypeLabelExpectedTypes:"O\u010Dek\xE1v\xE1 se {allButLastType} nebo {lastType}",imageValidateSizeLabelFormatError:"Obr\xE1zek tohoto typu nen\xED podporov\xE1n",imageValidateSizeLabelImageSizeTooSmall:"Obr\xE1zek je p\u0159\xEDli\u0161 mal\xFD",imageValidateSizeLabelImageSizeTooBig:"Obr\xE1zek je p\u0159\xEDli\u0161 velk\xFD",imageValidateSizeLabelExpectedMinSize:"Minim\xE1ln\xED rozm\u011Br je {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maxim\xE1ln\xED rozm\u011Br je {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Rozli\u0161en\xED je p\u0159\xEDli\u0161 mal\xE9",imageValidateSizeLabelImageResolutionTooHigh:"Rozli\u0161en\xED je p\u0159\xEDli\u0161 velk\xE9",imageValidateSizeLabelExpectedMinResolution:"Minim\xE1ln\xED rozli\u0161en\xED je {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maxim\xE1ln\xED rozli\u0161en\xED je {maxResolution}"};var Eo={labelIdle:'Tr\xE6k & slip filer eller Gennemse ',labelInvalidField:"Felt indeholder ugyldige filer",labelFileWaitingForSize:"Venter p\xE5 st\xF8rrelse",labelFileSizeNotAvailable:"St\xF8rrelse ikke tilg\xE6ngelig",labelFileLoading:"Loader",labelFileLoadError:"Load fejlede",labelFileProcessing:"Uploader",labelFileProcessingComplete:"Upload f\xE6rdig",labelFileProcessingAborted:"Upload annulleret",labelFileProcessingError:"Upload fejlede",labelFileProcessingRevertError:"Fortryd fejlede",labelFileRemoveError:"Fjern fejlede",labelTapToCancel:"tryk for at annullere",labelTapToRetry:"tryk for at pr\xF8ve igen",labelTapToUndo:"tryk for at fortryde",labelButtonRemoveItem:"Fjern",labelButtonAbortItemLoad:"Annuller",labelButtonRetryItemLoad:"Fors\xF8g igen",labelButtonAbortItemProcessing:"Annuller",labelButtonUndoItemProcessing:"Fortryd",labelButtonRetryItemProcessing:"Pr\xF8v igen",labelButtonProcessItem:"Upload",labelMaxFileSizeExceeded:"Filen er for stor",labelMaxFileSize:"Maksimal filst\xF8rrelse er {filesize}",labelMaxTotalFileSizeExceeded:"Maksimal totalst\xF8rrelse overskredet",labelMaxTotalFileSize:"Maksimal total filst\xF8rrelse er {filesize}",labelFileTypeNotAllowed:"Ugyldig filtype",fileValidateTypeLabelExpectedTypes:"Forventer {allButLastType} eller {lastType}",imageValidateSizeLabelFormatError:"Ugyldigt format",imageValidateSizeLabelImageSizeTooSmall:"Billedet er for lille",imageValidateSizeLabelImageSizeTooBig:"Billedet er for stort",imageValidateSizeLabelExpectedMinSize:"Minimum st\xF8rrelse er {minBredde} \xD7 {minH\xF8jde}",imageValidateSizeLabelExpectedMaxSize:"Maksimal st\xF8rrelse er {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"For lav opl\xF8sning",imageValidateSizeLabelImageResolutionTooHigh:"For h\xF8j opl\xF8sning",imageValidateSizeLabelExpectedMinResolution:"Minimum opl\xF8sning er {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maksimal opl\xF8sning er {maxResolution}"};var To={labelIdle:'Dateien ablegen oder ausw\xE4hlen ',labelInvalidField:"Feld beinhaltet ung\xFCltige Dateien",labelFileWaitingForSize:"Dateigr\xF6\xDFe berechnen",labelFileSizeNotAvailable:"Dateigr\xF6\xDFe nicht verf\xFCgbar",labelFileLoading:"Laden",labelFileLoadError:"Fehler beim Laden",labelFileProcessing:"Upload l\xE4uft",labelFileProcessingComplete:"Upload abgeschlossen",labelFileProcessingAborted:"Upload abgebrochen",labelFileProcessingError:"Fehler beim Upload",labelFileProcessingRevertError:"Fehler beim Wiederherstellen",labelFileRemoveError:"Fehler beim L\xF6schen",labelTapToCancel:"abbrechen",labelTapToRetry:"erneut versuchen",labelTapToUndo:"r\xFCckg\xE4ngig",labelButtonRemoveItem:"Entfernen",labelButtonAbortItemLoad:"Verwerfen",labelButtonRetryItemLoad:"Erneut versuchen",labelButtonAbortItemProcessing:"Abbrechen",labelButtonUndoItemProcessing:"R\xFCckg\xE4ngig",labelButtonRetryItemProcessing:"Erneut versuchen",labelButtonProcessItem:"Upload",labelMaxFileSizeExceeded:"Datei ist zu gro\xDF",labelMaxFileSize:"Maximale Dateigr\xF6\xDFe: {filesize}",labelMaxTotalFileSizeExceeded:"Maximale gesamte Dateigr\xF6\xDFe \xFCberschritten",labelMaxTotalFileSize:"Maximale gesamte Dateigr\xF6\xDFe: {filesize}",labelFileTypeNotAllowed:"Dateityp ung\xFCltig",fileValidateTypeLabelExpectedTypes:"Erwartet {allButLastType} oder {lastType}",imageValidateSizeLabelFormatError:"Bildtyp nicht unterst\xFCtzt",imageValidateSizeLabelImageSizeTooSmall:"Bild ist zu klein",imageValidateSizeLabelImageSizeTooBig:"Bild ist zu gro\xDF",imageValidateSizeLabelExpectedMinSize:"Mindestgr\xF6\xDFe: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maximale Gr\xF6\xDFe: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Aufl\xF6sung ist zu niedrig",imageValidateSizeLabelImageResolutionTooHigh:"Aufl\xF6sung ist zu hoch",imageValidateSizeLabelExpectedMinResolution:"Mindestaufl\xF6sung: {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maximale Aufl\xF6sung: {maxResolution}"};var Io={labelIdle:'Drag & Drop your files or Browse ',labelInvalidField:"Field contains invalid files",labelFileWaitingForSize:"Waiting for size",labelFileSizeNotAvailable:"Size not available",labelFileLoading:"Loading",labelFileLoadError:"Error during load",labelFileProcessing:"Uploading",labelFileProcessingComplete:"Upload complete",labelFileProcessingAborted:"Upload cancelled",labelFileProcessingError:"Error during upload",labelFileProcessingRevertError:"Error during revert",labelFileRemoveError:"Error during remove",labelTapToCancel:"tap to cancel",labelTapToRetry:"tap to retry",labelTapToUndo:"tap to undo",labelButtonRemoveItem:"Remove",labelButtonAbortItemLoad:"Abort",labelButtonRetryItemLoad:"Retry",labelButtonAbortItemProcessing:"Cancel",labelButtonUndoItemProcessing:"Undo",labelButtonRetryItemProcessing:"Retry",labelButtonProcessItem:"Upload",labelMaxFileSizeExceeded:"File is too large",labelMaxFileSize:"Maximum file size is {filesize}",labelMaxTotalFileSizeExceeded:"Maximum total size exceeded",labelMaxTotalFileSize:"Maximum total file size is {filesize}",labelFileTypeNotAllowed:"File of invalid type",fileValidateTypeLabelExpectedTypes:"Expects {allButLastType} or {lastType}",imageValidateSizeLabelFormatError:"Image type not supported",imageValidateSizeLabelImageSizeTooSmall:"Image is too small",imageValidateSizeLabelImageSizeTooBig:"Image is too big",imageValidateSizeLabelExpectedMinSize:"Minimum size is {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maximum size is {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Resolution is too low",imageValidateSizeLabelImageResolutionTooHigh:"Resolution is too high",imageValidateSizeLabelExpectedMinResolution:"Minimum resolution is {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maximum resolution is {maxResolution}"};var bo={labelIdle:'Arrastra y suelta tus archivos o Examinar ',labelInvalidField:"El campo contiene archivos inv\xE1lidos",labelFileWaitingForSize:"Esperando tama\xF1o",labelFileSizeNotAvailable:"Tama\xF1o no disponible",labelFileLoading:"Cargando",labelFileLoadError:"Error durante la carga",labelFileProcessing:"Cargando",labelFileProcessingComplete:"Carga completa",labelFileProcessingAborted:"Carga cancelada",labelFileProcessingError:"Error durante la carga",labelFileProcessingRevertError:"Error durante la reversi\xF3n",labelFileRemoveError:"Error durante la eliminaci\xF3n",labelTapToCancel:"toca para cancelar",labelTapToRetry:"tocar para volver a intentar",labelTapToUndo:"tocar para deshacer",labelButtonRemoveItem:"Eliminar",labelButtonAbortItemLoad:"Abortar",labelButtonRetryItemLoad:"Reintentar",labelButtonAbortItemProcessing:"Cancelar",labelButtonUndoItemProcessing:"Deshacer",labelButtonRetryItemProcessing:"Reintentar",labelButtonProcessItem:"Cargar",labelMaxFileSizeExceeded:"El archivo es demasiado grande",labelMaxFileSize:"El tama\xF1o m\xE1ximo del archivo es {filesize}",labelMaxTotalFileSizeExceeded:"Tama\xF1o total m\xE1ximo excedido",labelMaxTotalFileSize:"El tama\xF1o total m\xE1ximo del archivo es {filesize}",labelFileTypeNotAllowed:"Archivo de tipo no v\xE1lido",fileValidateTypeLabelExpectedTypes:"Espera {allButLastType} o {lastType}",imageValidateSizeLabelFormatError:"Tipo de imagen no compatible",imageValidateSizeLabelImageSizeTooSmall:"La imagen es demasiado peque\xF1a",imageValidateSizeLabelImageSizeTooBig:"La imagen es demasiado grande",imageValidateSizeLabelExpectedMinSize:"El tama\xF1o m\xEDnimo es {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"El tama\xF1o m\xE1ximo es {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"La resoluci\xF3n es demasiado baja",imageValidateSizeLabelImageResolutionTooHigh:"La resoluci\xF3n es demasiado alta",imageValidateSizeLabelExpectedMinResolution:"La resoluci\xF3n m\xEDnima es {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"La resoluci\xF3n m\xE1xima es {maxResolution}"};var _o={labelIdle:'\u0641\u0627\u06CC\u0644 \u0631\u0627 \u0627\u06CC\u0646\u062C\u0627 \u0628\u06A9\u0634\u06CC\u062F \u0648 \u0631\u0647\u0627 \u06A9\u0646\u06CC\u062F\u060C \u06CC\u0627 \u062C\u0633\u062A\u062C\u0648 \u06A9\u0646\u06CC\u062F ',labelInvalidField:"\u0641\u06CC\u0644\u062F \u062F\u0627\u0631\u0627\u06CC \u0641\u0627\u06CC\u0644 \u0647\u0627\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",labelFileWaitingForSize:"Waiting for size",labelFileSizeNotAvailable:"\u062D\u062C\u0645 \u0641\u0627\u06CC\u0644 \u0645\u062C\u0627\u0632 \u0646\u06CC\u0633\u062A",labelFileLoading:"\u062F\u0631\u062D\u0627\u0644 \u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC",labelFileLoadError:"\u062E\u0637\u0627 \u062F\u0631 \u0632\u0645\u0627\u0646 \u0627\u062C\u0631\u0627",labelFileProcessing:"\u062F\u0631\u062D\u0627\u0644 \u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC",labelFileProcessingComplete:"\u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC \u06A9\u0627\u0645\u0644 \u0634\u062F",labelFileProcessingAborted:"\u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC \u0644\u063A\u0648 \u0634\u062F",labelFileProcessingError:"\u062E\u0637\u0627 \u062F\u0631 \u0632\u0645\u0627\u0646 \u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC",labelFileProcessingRevertError:"\u062E\u0637\u0627 \u062F\u0631 \u0632\u0645\u0627\u0646 \u062D\u0630\u0641",labelFileRemoveError:"\u062E\u0637\u0627 \u062F\u0631 \u0632\u0645\u0627\u0646 \u062D\u0630\u0641",labelTapToCancel:"\u0628\u0631\u0627\u06CC \u0644\u063A\u0648 \u0636\u0631\u0628\u0647 \u0628\u0632\u0646\u06CC\u062F",labelTapToRetry:"\u0628\u0631\u0627\u06CC \u062A\u06A9\u0631\u0627\u0631 \u06A9\u0644\u06CC\u06A9 \u06A9\u0646\u06CC\u062F",labelTapToUndo:"\u0628\u0631\u0627\u06CC \u0628\u0631\u06AF\u0634\u062A \u06A9\u0644\u06CC\u06A9 \u06A9\u0646\u06CC\u062F",labelButtonRemoveItem:"\u062D\u0630\u0641",labelButtonAbortItemLoad:"\u0644\u063A\u0648",labelButtonRetryItemLoad:"\u062A\u06A9\u0631\u0627\u0631",labelButtonAbortItemProcessing:"\u0644\u063A\u0648",labelButtonUndoItemProcessing:"\u0628\u0631\u06AF\u0634\u062A",labelButtonRetryItemProcessing:"\u062A\u06A9\u0631\u0627\u0631",labelButtonProcessItem:"\u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC",labelMaxFileSizeExceeded:"\u0641\u0627\u06CC\u0644 \u0628\u0633\u06CC\u0627\u0631 \u062D\u062C\u06CC\u0645 \u0627\u0633\u062A",labelMaxFileSize:"\u062D\u062F\u0627\u06A9\u062B\u0631 \u0645\u062C\u0627\u0632 \u0641\u0627\u06CC\u0644 {filesize} \u0627\u0633\u062A",labelMaxTotalFileSizeExceeded:"\u0627\u0632 \u062D\u062F\u0627\u06A9\u062B\u0631 \u062D\u062C\u0645 \u0641\u0627\u06CC\u0644 \u0628\u06CC\u0634\u062A\u0631 \u0634\u062F",labelMaxTotalFileSize:"\u062D\u062F\u0627\u06A9\u062B\u0631 \u062D\u062C\u0645 \u0641\u0627\u06CC\u0644 {filesize} \u0627\u0633\u062A",labelFileTypeNotAllowed:"\u0646\u0648\u0639 \u0641\u0627\u06CC\u0644 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",fileValidateTypeLabelExpectedTypes:"\u062F\u0631 \u0627\u0646\u062A\u0638\u0627\u0631 {allButLastType} \u06CC\u0627 {lastType}",imageValidateSizeLabelFormatError:"\u0641\u0631\u0645\u062A \u062A\u0635\u0648\u06CC\u0631 \u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC \u0646\u0645\u06CC \u0634\u0648\u062F",imageValidateSizeLabelImageSizeTooSmall:"\u062A\u0635\u0648\u06CC\u0631 \u0628\u0633\u06CC\u0627\u0631 \u06A9\u0648\u0686\u06A9 \u0627\u0633\u062A",imageValidateSizeLabelImageSizeTooBig:"\u062A\u0635\u0648\u06CC\u0631 \u0628\u0633\u06CC\u0627\u0631 \u0628\u0632\u0631\u06AF \u0627\u0633\u062A",imageValidateSizeLabelExpectedMinSize:"\u062D\u062F\u0627\u0642\u0644 \u0627\u0646\u062F\u0627\u0632\u0647 {minWidth} \xD7 {minHeight} \u0627\u0633\u062A",imageValidateSizeLabelExpectedMaxSize:"\u062D\u062F\u0627\u06A9\u062B\u0631 \u0627\u0646\u062F\u0627\u0632\u0647 {maxWidth} \xD7 {maxHeight} \u0627\u0633\u062A",imageValidateSizeLabelImageResolutionTooLow:"\u0648\u0636\u0648\u062D \u062A\u0635\u0648\u06CC\u0631 \u0628\u0633\u06CC\u0627\u0631 \u06A9\u0645 \u0627\u0633\u062A",imageValidateSizeLabelImageResolutionTooHigh:"\u0648\u0636\u0648\u0639 \u062A\u0635\u0648\u06CC\u0631 \u0628\u0633\u06CC\u0627\u0631 \u0632\u06CC\u0627\u062F \u0627\u0633\u062A",imageValidateSizeLabelExpectedMinResolution:"\u062D\u062F\u0627\u0642\u0644 \u0648\u0636\u0648\u062D \u062A\u0635\u0648\u06CC\u0631 {minResolution} \u0627\u0633\u062A",imageValidateSizeLabelExpectedMaxResolution:"\u062D\u062F\u0627\u06A9\u062B\u0631 \u0648\u0636\u0648\u062D \u062A\u0635\u0648\u06CC\u0631 {maxResolution} \u0627\u0633\u062A"};var Ro={labelIdle:'Ved\xE4 ja pudota tiedostoja tai Selaa ',labelInvalidField:"Kent\xE4ss\xE4 on virheellisi\xE4 tiedostoja",labelFileWaitingForSize:"Odotetaan kokoa",labelFileSizeNotAvailable:"Kokoa ei saatavilla",labelFileLoading:"Ladataan",labelFileLoadError:"Virhe latauksessa",labelFileProcessing:"L\xE4hetet\xE4\xE4n",labelFileProcessingComplete:"L\xE4hetys valmis",labelFileProcessingAborted:"L\xE4hetys peruttu",labelFileProcessingError:"Virhe l\xE4hetyksess\xE4",labelFileProcessingRevertError:"Virhe palautuksessa",labelFileRemoveError:"Virhe poistamisessa",labelTapToCancel:"peruuta napauttamalla",labelTapToRetry:"yrit\xE4 uudelleen napauttamalla",labelTapToUndo:"kumoa napauttamalla",labelButtonRemoveItem:"Poista",labelButtonAbortItemLoad:"Keskeyt\xE4",labelButtonRetryItemLoad:"Yrit\xE4 uudelleen",labelButtonAbortItemProcessing:"Peruuta",labelButtonUndoItemProcessing:"Kumoa",labelButtonRetryItemProcessing:"Yrit\xE4 uudelleen",labelButtonProcessItem:"L\xE4het\xE4",labelMaxFileSizeExceeded:"Tiedoston koko on liian suuri",labelMaxFileSize:"Tiedoston maksimikoko on {filesize}",labelMaxTotalFileSizeExceeded:"Tiedostojen yhdistetty maksimikoko ylitetty",labelMaxTotalFileSize:"Tiedostojen yhdistetty maksimikoko on {filesize}",labelFileTypeNotAllowed:"Tiedostotyyppi\xE4 ei sallita",fileValidateTypeLabelExpectedTypes:"Sallitaan {allButLastType} tai {lastType}",imageValidateSizeLabelFormatError:"Kuvatyyppi\xE4 ei tueta",imageValidateSizeLabelImageSizeTooSmall:"Kuva on liian pieni",imageValidateSizeLabelImageSizeTooBig:"Kuva on liian suuri",imageValidateSizeLabelExpectedMinSize:"Minimikoko on {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maksimikoko on {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Resoluutio on liian pieni",imageValidateSizeLabelImageResolutionTooHigh:"Resoluutio on liian suuri",imageValidateSizeLabelExpectedMinResolution:"Minimiresoluutio on {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maksimiresoluutio on {maxResolution}"};var yo={labelIdle:'Faites glisser vos fichiers ou Parcourir ',labelInvalidField:"Le champ contient des fichiers invalides",labelFileWaitingForSize:"En attente de taille",labelFileSizeNotAvailable:"Taille non disponible",labelFileLoading:"Chargement",labelFileLoadError:"Erreur durant le chargement",labelFileProcessing:"Traitement",labelFileProcessingComplete:"Traitement effectu\xE9",labelFileProcessingAborted:"Traitement interrompu",labelFileProcessingError:"Erreur durant le traitement",labelFileProcessingRevertError:"Erreur durant la restauration",labelFileRemoveError:"Erreur durant la suppression",labelTapToCancel:"appuyer pour annuler",labelTapToRetry:"appuyer pour r\xE9essayer",labelTapToUndo:"appuyer pour revenir en arri\xE8re",labelButtonRemoveItem:"Retirer",labelButtonAbortItemLoad:"Annuler",labelButtonRetryItemLoad:"Recommencer",labelButtonAbortItemProcessing:"Annuler",labelButtonUndoItemProcessing:"Revenir en arri\xE8re",labelButtonRetryItemProcessing:"Recommencer",labelButtonProcessItem:"Transf\xE9rer",labelMaxFileSizeExceeded:"Le fichier est trop volumineux",labelMaxFileSize:"La taille maximale de fichier est {filesize}",labelMaxTotalFileSizeExceeded:"Taille totale maximale d\xE9pass\xE9e",labelMaxTotalFileSize:"La taille totale maximale des fichiers est {filesize}",labelFileTypeNotAllowed:"Fichier non valide",fileValidateTypeLabelExpectedTypes:"Attendu {allButLastType} ou {lastType}",imageValidateSizeLabelFormatError:"Type d'image non pris en charge",imageValidateSizeLabelImageSizeTooSmall:"L'image est trop petite",imageValidateSizeLabelImageSizeTooBig:"L'image est trop grande",imageValidateSizeLabelExpectedMinSize:"La taille minimale est {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"La taille maximale est {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"La r\xE9solution est trop faible",imageValidateSizeLabelImageResolutionTooHigh:"La r\xE9solution est trop \xE9lev\xE9e",imageValidateSizeLabelExpectedMinResolution:"La r\xE9solution minimale est {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"La r\xE9solution maximale est {maxResolution}"};var So={labelIdle:'Mozgasd ide a f\xE1jlt a felt\xF6lt\xE9shez, vagy tall\xF3z\xE1s ',labelInvalidField:"A mez\u0151 \xE9rv\xE9nytelen f\xE1jlokat tartalmaz",labelFileWaitingForSize:"F\xE1ljm\xE9ret kisz\xE1mol\xE1sa",labelFileSizeNotAvailable:"A f\xE1jlm\xE9ret nem el\xE9rhet\u0151",labelFileLoading:"T\xF6lt\xE9s",labelFileLoadError:"Hiba a bet\xF6lt\xE9s sor\xE1n",labelFileProcessing:"Felt\xF6lt\xE9s",labelFileProcessingComplete:"Sikeres felt\xF6lt\xE9s",labelFileProcessingAborted:"A felt\xF6lt\xE9s megszak\xEDtva",labelFileProcessingError:"Hiba t\xF6rt\xE9nt a felt\xF6lt\xE9s sor\xE1n",labelFileProcessingRevertError:"Hiba a vissza\xE1ll\xEDt\xE1s sor\xE1n",labelFileRemoveError:"Hiba t\xF6rt\xE9nt az elt\xE1vol\xEDt\xE1s sor\xE1n",labelTapToCancel:"koppints a t\xF6rl\xE9shez",labelTapToRetry:"koppints az \xFAjrakezd\xE9shez",labelTapToUndo:"koppints a visszavon\xE1shoz",labelButtonRemoveItem:"Elt\xE1vol\xEDt\xE1s",labelButtonAbortItemLoad:"Megszak\xEDt\xE1s",labelButtonRetryItemLoad:"\xDAjrapr\xF3b\xE1lkoz\xE1s",labelButtonAbortItemProcessing:"Megszak\xEDt\xE1s",labelButtonUndoItemProcessing:"Visszavon\xE1s",labelButtonRetryItemProcessing:"\xDAjrapr\xF3b\xE1lkoz\xE1s",labelButtonProcessItem:"Felt\xF6lt\xE9s",labelMaxFileSizeExceeded:"A f\xE1jl t\xFAll\xE9pte a maxim\xE1lis m\xE9retet",labelMaxFileSize:"Maxim\xE1lis f\xE1jlm\xE9ret: {filesize}",labelMaxTotalFileSizeExceeded:"T\xFAll\xE9pte a maxim\xE1lis teljes m\xE9retet",labelMaxTotalFileSize:"A maxim\xE1is teljes f\xE1jlm\xE9ret: {filesize}",labelFileTypeNotAllowed:"\xC9rv\xE9nytelen t\xEDpus\xFA f\xE1jl",fileValidateTypeLabelExpectedTypes:"Enged\xE9lyezett t\xEDpusok {allButLastType} vagy {lastType}",imageValidateSizeLabelFormatError:"A k\xE9pt\xEDpus nem t\xE1mogatott",imageValidateSizeLabelImageSizeTooSmall:"A k\xE9p t\xFAl kicsi",imageValidateSizeLabelImageSizeTooBig:"A k\xE9p t\xFAl nagy",imageValidateSizeLabelExpectedMinSize:"Minimum m\xE9ret: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maximum m\xE9ret: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"A felbont\xE1s t\xFAl alacsony",imageValidateSizeLabelImageResolutionTooHigh:"A felbont\xE1s t\xFAl magas",imageValidateSizeLabelExpectedMinResolution:"Minim\xE1is felbont\xE1s: {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maxim\xE1lis felbont\xE1s: {maxResolution}"};var wo={labelIdle:'Seret & Jatuhkan berkas Anda atau Jelajahi',labelInvalidField:"Isian berisi berkas yang tidak valid",labelFileWaitingForSize:"Menunggu ukuran berkas",labelFileSizeNotAvailable:"Ukuran berkas tidak tersedia",labelFileLoading:"Memuat",labelFileLoadError:"Kesalahan saat memuat",labelFileProcessing:"Mengunggah",labelFileProcessingComplete:"Pengunggahan selesai",labelFileProcessingAborted:"Pengunggahan dibatalkan",labelFileProcessingError:"Kesalahan saat pengunggahan",labelFileProcessingRevertError:"Kesalahan saat pemulihan",labelFileRemoveError:"Kesalahan saat penghapusan",labelTapToCancel:"ketuk untuk membatalkan",labelTapToRetry:"ketuk untuk mencoba lagi",labelTapToUndo:"ketuk untuk mengurungkan",labelButtonRemoveItem:"Hapus",labelButtonAbortItemLoad:"Batalkan",labelButtonRetryItemLoad:"Coba Kembali",labelButtonAbortItemProcessing:"Batalkan",labelButtonUndoItemProcessing:"Urungkan",labelButtonRetryItemProcessing:"Coba Kembali",labelButtonProcessItem:"Unggah",labelMaxFileSizeExceeded:"Berkas terlalu besar",labelMaxFileSize:"Ukuran berkas maksimum adalah {filesize}",labelMaxTotalFileSizeExceeded:"Jumlah berkas maksimum terlampaui",labelMaxTotalFileSize:"Jumlah berkas maksimum adalah {filesize}",labelFileTypeNotAllowed:"Jenis berkas tidak valid",fileValidateTypeLabelExpectedTypes:"Mengharapkan {allButLastType} atau {lastType}",imageValidateSizeLabelFormatError:"Jenis citra tidak didukung",imageValidateSizeLabelImageSizeTooSmall:"Citra terlalu kecil",imageValidateSizeLabelImageSizeTooBig:"Citra terlalu besar",imageValidateSizeLabelExpectedMinSize:"Ukuran minimum adalah {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Ukuran maksimum adalah {minWidth} \xD7 {minHeight}",imageValidateSizeLabelImageResolutionTooLow:"Resolusi terlalu rendah",imageValidateSizeLabelImageResolutionTooHigh:"Resolusi terlalu tinggi",imageValidateSizeLabelExpectedMinResolution:"Resolusi minimum adalah {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Resolusi maksimum adalah {maxResolution}"};var vo={labelIdle:'Trascina e rilascia i tuoi file oppure Carica ',labelInvalidField:"Il campo contiene dei file non validi",labelFileWaitingForSize:"Aspettando le dimensioni",labelFileSizeNotAvailable:"Dimensioni non disponibili",labelFileLoading:"Caricamento",labelFileLoadError:"Errore durante il caricamento",labelFileProcessing:"Caricamento",labelFileProcessingComplete:"Caricamento completato",labelFileProcessingAborted:"Caricamento cancellato",labelFileProcessingError:"Errore durante il caricamento",labelFileProcessingRevertError:"Errore durante il ripristino",labelFileRemoveError:"Errore durante l'eliminazione",labelTapToCancel:"tocca per cancellare",labelTapToRetry:"tocca per riprovare",labelTapToUndo:"tocca per ripristinare",labelButtonRemoveItem:"Elimina",labelButtonAbortItemLoad:"Cancella",labelButtonRetryItemLoad:"Ritenta",labelButtonAbortItemProcessing:"Camcella",labelButtonUndoItemProcessing:"Indietro",labelButtonRetryItemProcessing:"Ritenta",labelButtonProcessItem:"Carica",labelMaxFileSizeExceeded:"Il peso del file \xE8 eccessivo",labelMaxFileSize:"Il peso massimo del file \xE8 {filesize}",labelMaxTotalFileSizeExceeded:"Dimensione totale massima superata",labelMaxTotalFileSize:"La dimensione massima totale del file \xE8 {filesize}",labelFileTypeNotAllowed:"File non supportato",fileValidateTypeLabelExpectedTypes:"Aspetta {allButLastType} o {lastType}",imageValidateSizeLabelFormatError:"Tipo di immagine non compatibile",imageValidateSizeLabelImageSizeTooSmall:"L'immagine \xE8 troppo piccola",imageValidateSizeLabelImageSizeTooBig:"L'immagine \xE8 troppo grande",imageValidateSizeLabelExpectedMinSize:"La dimensione minima \xE8 {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"La dimensione massima \xE8 {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"La risoluzione \xE8 troppo bassa",imageValidateSizeLabelImageResolutionTooHigh:"La risoluzione \xE8 troppo alta",imageValidateSizeLabelExpectedMinResolution:"La risoluzione minima \xE8 {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"La risoluzione massima \xE8 {maxResolution}"};var Ao={labelIdle:'Drag & Drop je bestanden of Bladeren ',labelInvalidField:"Veld bevat ongeldige bestanden",labelFileWaitingForSize:"Wachten op grootte",labelFileSizeNotAvailable:"Grootte niet beschikbaar",labelFileLoading:"Laden",labelFileLoadError:"Fout tijdens laden",labelFileProcessing:"Uploaden",labelFileProcessingComplete:"Upload afgerond",labelFileProcessingAborted:"Upload geannuleerd",labelFileProcessingError:"Fout tijdens upload",labelFileProcessingRevertError:"Fout bij herstellen",labelFileRemoveError:"Fout bij verwijderen",labelTapToCancel:"tik om te annuleren",labelTapToRetry:"tik om opnieuw te proberen",labelTapToUndo:"tik om ongedaan te maken",labelButtonRemoveItem:"Verwijderen",labelButtonAbortItemLoad:"Afbreken",labelButtonRetryItemLoad:"Opnieuw proberen",labelButtonAbortItemProcessing:"Annuleren",labelButtonUndoItemProcessing:"Ongedaan maken",labelButtonRetryItemProcessing:"Opnieuw proberen",labelButtonProcessItem:"Upload",labelMaxFileSizeExceeded:"Bestand is te groot",labelMaxFileSize:"Maximale bestandsgrootte is {filesize}",labelMaxTotalFileSizeExceeded:"Maximale totale grootte overschreden",labelMaxTotalFileSize:"Maximale totale bestandsgrootte is {filesize}",labelFileTypeNotAllowed:"Ongeldig bestandstype",fileValidateTypeLabelExpectedTypes:"Verwacht {allButLastType} of {lastType}",imageValidateSizeLabelFormatError:"Afbeeldingstype niet ondersteund",imageValidateSizeLabelImageSizeTooSmall:"Afbeelding is te klein",imageValidateSizeLabelImageSizeTooBig:"Afbeelding is te groot",imageValidateSizeLabelExpectedMinSize:"Minimale afmeting is {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maximale afmeting is {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Resolutie is te laag",imageValidateSizeLabelImageResolutionTooHigh:"Resolution is too high",imageValidateSizeLabelExpectedMinResolution:"Minimale resolutie is {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maximale resolutie is {maxResolution}"};var Lo={labelIdle:'Dra og slipp filene dine, eller Bla gjennom... ',labelInvalidField:"Feltet inneholder ugyldige filer",labelFileWaitingForSize:"Venter p\xE5 st\xF8rrelse",labelFileSizeNotAvailable:"St\xF8rrelse ikke tilgjengelig",labelFileLoading:"Laster",labelFileLoadError:"Feil under lasting",labelFileProcessing:"Laster opp",labelFileProcessingComplete:"Opplasting ferdig",labelFileProcessingAborted:"Opplasting avbrutt",labelFileProcessingError:"Feil under opplasting",labelFileProcessingRevertError:"Feil under reversering",labelFileRemoveError:"Feil under flytting",labelTapToCancel:"klikk for \xE5 avbryte",labelTapToRetry:"klikk for \xE5 pr\xF8ve p\xE5 nytt",labelTapToUndo:"klikk for \xE5 angre",labelButtonRemoveItem:"Fjern",labelButtonAbortItemLoad:"Avbryt",labelButtonRetryItemLoad:"Pr\xF8v p\xE5 nytt",labelButtonAbortItemProcessing:"Avbryt",labelButtonUndoItemProcessing:"Angre",labelButtonRetryItemProcessing:"Pr\xF8v p\xE5 nytt",labelButtonProcessItem:"Last opp",labelMaxFileSizeExceeded:"Filen er for stor",labelMaxFileSize:"Maksimal filst\xF8rrelse er {filesize}",labelMaxTotalFileSizeExceeded:"Maksimal total st\xF8rrelse oversteget",labelMaxTotalFileSize:"Maksimal total st\xF8rrelse er {filesize}",labelFileTypeNotAllowed:"Ugyldig filtype",fileValidateTypeLabelExpectedTypes:"Forventer {allButLastType} eller {lastType}",imageValidateSizeLabelFormatError:"Bildeformat ikke st\xF8ttet",imageValidateSizeLabelImageSizeTooSmall:"Bildet er for lite",imageValidateSizeLabelImageSizeTooBig:"Bildet er for stort",imageValidateSizeLabelExpectedMinSize:"Minimumsst\xF8rrelse er {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maksimumsst\xF8rrelse er {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Oppl\xF8sningen er for lav",imageValidateSizeLabelImageResolutionTooHigh:"Oppl\xF8sningen er for h\xF8y",imageValidateSizeLabelExpectedMinResolution:"Minimum oppl\xF8sning er {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maksimal oppl\xF8sning er {maxResolution}"};var Mo={labelIdle:'Przeci\u0105gnij i upu\u015B\u0107 lub wybierz pliki',labelInvalidField:"Nieprawid\u0142owe pliki",labelFileWaitingForSize:"Pobieranie rozmiaru",labelFileSizeNotAvailable:"Nieznany rozmiar",labelFileLoading:"Wczytywanie",labelFileLoadError:"B\u0142\u0105d wczytywania",labelFileProcessing:"Przesy\u0142anie",labelFileProcessingComplete:"Przes\u0142ano",labelFileProcessingAborted:"Przerwano",labelFileProcessingError:"Przesy\u0142anie nie powiod\u0142o si\u0119",labelFileProcessingRevertError:"Co\u015B posz\u0142o nie tak",labelFileRemoveError:"Nieudane usuni\u0119cie",labelTapToCancel:"Anuluj",labelTapToRetry:"Pon\xF3w",labelTapToUndo:"Cofnij",labelButtonRemoveItem:"Usu\u0144",labelButtonAbortItemLoad:"Przerwij",labelButtonRetryItemLoad:"Pon\xF3w",labelButtonAbortItemProcessing:"Anuluj",labelButtonUndoItemProcessing:"Cofnij",labelButtonRetryItemProcessing:"Pon\xF3w",labelButtonProcessItem:"Prze\u015Blij",labelMaxFileSizeExceeded:"Plik jest zbyt du\u017Cy",labelMaxFileSize:"Dopuszczalna wielko\u015B\u0107 pliku to {filesize}",labelMaxTotalFileSizeExceeded:"Przekroczono \u0142\u0105czny rozmiar plik\xF3w",labelMaxTotalFileSize:"\u0141\u0105czny rozmiar plik\xF3w nie mo\u017Ce przekroczy\u0107 {filesize}",labelFileTypeNotAllowed:"Niedozwolony rodzaj pliku",fileValidateTypeLabelExpectedTypes:"Oczekiwano {allButLastType} lub {lastType}",imageValidateSizeLabelFormatError:"Nieobs\u0142ugiwany format obrazu",imageValidateSizeLabelImageSizeTooSmall:"Obraz jest zbyt ma\u0142y",imageValidateSizeLabelImageSizeTooBig:"Obraz jest zbyt du\u017Cy",imageValidateSizeLabelExpectedMinSize:"Minimalne wymiary obrazu to {minWidth}\xD7{minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maksymalna wymiary obrazu to {maxWidth}\xD7{maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Rozdzielczo\u015B\u0107 jest zbyt niska",imageValidateSizeLabelImageResolutionTooHigh:"Rozdzielczo\u015B\u0107 jest zbyt wysoka",imageValidateSizeLabelExpectedMinResolution:"Minimalna rozdzielczo\u015B\u0107 to {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maksymalna rozdzielczo\u015B\u0107 to {maxResolution}"};var _i={labelIdle:'Arraste e solte os arquivos ou Clique aqui ',labelInvalidField:"Arquivos inv\xE1lidos",labelFileWaitingForSize:"Calculando o tamanho do arquivo",labelFileSizeNotAvailable:"Tamanho do arquivo indispon\xEDvel",labelFileLoading:"Carregando",labelFileLoadError:"Erro durante o carregamento",labelFileProcessing:"Enviando",labelFileProcessingComplete:"Envio finalizado",labelFileProcessingAborted:"Envio cancelado",labelFileProcessingError:"Erro durante o envio",labelFileProcessingRevertError:"Erro ao reverter o envio",labelFileRemoveError:"Erro ao remover o arquivo",labelTapToCancel:"clique para cancelar",labelTapToRetry:"clique para reenviar",labelTapToUndo:"clique para desfazer",labelButtonRemoveItem:"Remover",labelButtonAbortItemLoad:"Abortar",labelButtonRetryItemLoad:"Reenviar",labelButtonAbortItemProcessing:"Cancelar",labelButtonUndoItemProcessing:"Desfazer",labelButtonRetryItemProcessing:"Reenviar",labelButtonProcessItem:"Enviar",labelMaxFileSizeExceeded:"Arquivo \xE9 muito grande",labelMaxFileSize:"O tamanho m\xE1ximo permitido: {filesize}",labelMaxTotalFileSizeExceeded:"Tamanho total dos arquivos excedido",labelMaxTotalFileSize:"Tamanho total permitido: {filesize}",labelFileTypeNotAllowed:"Tipo de arquivo inv\xE1lido",fileValidateTypeLabelExpectedTypes:"Tipos de arquivo suportados s\xE3o {allButLastType} ou {lastType}",imageValidateSizeLabelFormatError:"Tipo de imagem inv\xE1lida",imageValidateSizeLabelImageSizeTooSmall:"Imagem muito pequena",imageValidateSizeLabelImageSizeTooBig:"Imagem muito grande",imageValidateSizeLabelExpectedMinSize:"Tamanho m\xEDnimo permitida: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Tamanho m\xE1ximo permitido: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Resolu\xE7\xE3o muito baixa",imageValidateSizeLabelImageResolutionTooHigh:"Resolu\xE7\xE3o muito alta",imageValidateSizeLabelExpectedMinResolution:"Resolu\xE7\xE3o m\xEDnima permitida: {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Resolu\xE7\xE3o m\xE1xima permitida: {maxResolution}"};var Oo={labelIdle:'Trage \u0219i plaseaz\u0103 fi\u0219iere sau Caut\u0103-le ',labelInvalidField:"C\xE2mpul con\u021Bine fi\u0219iere care nu sunt valide",labelFileWaitingForSize:"\xCEn a\u0219teptarea dimensiunii",labelFileSizeNotAvailable:"Dimensiunea nu este diponibil\u0103",labelFileLoading:"Se \xEEncarc\u0103",labelFileLoadError:"Eroare la \xEEnc\u0103rcare",labelFileProcessing:"Se \xEEncarc\u0103",labelFileProcessingComplete:"\xCEnc\u0103rcare finalizat\u0103",labelFileProcessingAborted:"\xCEnc\u0103rcare anulat\u0103",labelFileProcessingError:"Eroare la \xEEnc\u0103rcare",labelFileProcessingRevertError:"Eroare la anulare",labelFileRemoveError:"Eroare la \u015Ftergere",labelTapToCancel:"apas\u0103 pentru a anula",labelTapToRetry:"apas\u0103 pentru a re\xEEncerca",labelTapToUndo:"apas\u0103 pentru a anula",labelButtonRemoveItem:"\u015Eterge",labelButtonAbortItemLoad:"Anuleaz\u0103",labelButtonRetryItemLoad:"Re\xEEncearc\u0103",labelButtonAbortItemProcessing:"Anuleaz\u0103",labelButtonUndoItemProcessing:"Anuleaz\u0103",labelButtonRetryItemProcessing:"Re\xEEncearc\u0103",labelButtonProcessItem:"\xCEncarc\u0103",labelMaxFileSizeExceeded:"Fi\u0219ierul este prea mare",labelMaxFileSize:"Dimensiunea maxim\u0103 a unui fi\u0219ier este de {filesize}",labelMaxTotalFileSizeExceeded:"Dimensiunea total\u0103 maxim\u0103 a fost dep\u0103\u0219it\u0103",labelMaxTotalFileSize:"Dimensiunea total\u0103 maxim\u0103 a fi\u0219ierelor este de {filesize}",labelFileTypeNotAllowed:"Tipul fi\u0219ierului nu este valid",fileValidateTypeLabelExpectedTypes:"Se a\u0219teapt\u0103 {allButLastType} sau {lastType}",imageValidateSizeLabelFormatError:"Formatul imaginii nu este acceptat",imageValidateSizeLabelImageSizeTooSmall:"Imaginea este prea mic\u0103",imageValidateSizeLabelImageSizeTooBig:"Imaginea este prea mare",imageValidateSizeLabelExpectedMinSize:"M\u0103rimea minim\u0103 este de {maxWidth} x {maxHeight}",imageValidateSizeLabelExpectedMaxSize:"M\u0103rimea maxim\u0103 este de {maxWidth} x {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Rezolu\u021Bia este prea mic\u0103",imageValidateSizeLabelImageResolutionTooHigh:"Rezolu\u021Bia este prea mare",imageValidateSizeLabelExpectedMinResolution:"Rezolu\u021Bia minim\u0103 este de {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Rezolu\u021Bia maxim\u0103 este de {maxResolution}"};var xo={labelIdle:'\u041F\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 \u0444\u0430\u0439\u043B\u044B \u0438\u043B\u0438 \u0432\u044B\u0431\u0435\u0440\u0438\u0442\u0435 ',labelInvalidField:"\u041F\u043E\u043B\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u043D\u0435\u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B\u0435 \u0444\u0430\u0439\u043B\u044B",labelFileWaitingForSize:"\u0423\u043A\u0430\u0436\u0438\u0442\u0435 \u0440\u0430\u0437\u043C\u0435\u0440",labelFileSizeNotAvailable:"\u0420\u0430\u0437\u043C\u0435\u0440 \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044F",labelFileLoading:"\u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435",labelFileLoadError:"\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u043E\u0436\u0438\u0434\u0430\u043D\u0438\u0438",labelFileProcessing:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430",labelFileProcessingComplete:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0430",labelFileProcessingAborted:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u043E\u0442\u043C\u0435\u043D\u0435\u043D\u0430",labelFileProcessingError:"\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0435",labelFileProcessingRevertError:"\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0442\u0435",labelFileRemoveError:"\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0438",labelTapToCancel:"\u043D\u0430\u0436\u043C\u0438\u0442\u0435 \u0434\u043B\u044F \u043E\u0442\u043C\u0435\u043D\u044B",labelTapToRetry:"\u043D\u0430\u0436\u043C\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C \u043F\u043E\u043F\u044B\u0442\u043A\u0443",labelTapToUndo:"\u043D\u0430\u0436\u043C\u0438\u0442\u0435 \u0434\u043B\u044F \u043E\u0442\u043C\u0435\u043D\u044B \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F",labelButtonRemoveItem:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C",labelButtonAbortItemLoad:"\u041F\u0440\u0435\u043A\u0440\u0430\u0449\u0435\u043D\u043E",labelButtonRetryItemLoad:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043F\u043E\u043F\u044B\u0442\u043A\u0443",labelButtonAbortItemProcessing:"\u041E\u0442\u043C\u0435\u043D\u0430",labelButtonUndoItemProcessing:"\u041E\u0442\u043C\u0435\u043D\u0430 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F",labelButtonRetryItemProcessing:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043F\u043E\u043F\u044B\u0442\u043A\u0443",labelButtonProcessItem:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430",labelMaxFileSizeExceeded:"\u0424\u0430\u0439\u043B \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0439",labelMaxFileSize:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0444\u0430\u0439\u043B\u0430: {filesize}",labelMaxTotalFileSizeExceeded:"\u041F\u0440\u0435\u0432\u044B\u0448\u0435\u043D \u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440",labelMaxTotalFileSize:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0444\u0430\u0439\u043B\u0430: {filesize}",labelFileTypeNotAllowed:"\u0424\u0430\u0439\u043B \u043D\u0435\u0432\u0435\u0440\u043D\u043E\u0433\u043E \u0442\u0438\u043F\u0430",fileValidateTypeLabelExpectedTypes:"\u041E\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044F {allButLastType} \u0438\u043B\u0438 {lastType}",imageValidateSizeLabelFormatError:"\u0422\u0438\u043F \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044F",imageValidateSizeLabelImageSizeTooSmall:"\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435",imageValidateSizeLabelImageSizeTooBig:"\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435",imageValidateSizeLabelExpectedMinSize:"\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u043D\u0438\u0437\u043A\u043E\u0435",imageValidateSizeLabelImageResolutionTooHigh:"\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u0432\u044B\u0441\u043E\u043A\u043E\u0435",imageValidateSizeLabelExpectedMinResolution:"\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435: {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435: {maxResolution}"};var Do={labelIdle:'Drag och sl\xE4pp dina filer eller Bl\xE4ddra ',labelInvalidField:"F\xE4ltet inneh\xE5ller felaktiga filer",labelFileWaitingForSize:"V\xE4ntar p\xE5 storlek",labelFileSizeNotAvailable:"Storleken finns inte tillg\xE4nglig",labelFileLoading:"Laddar",labelFileLoadError:"Fel under laddning",labelFileProcessing:"Laddar upp",labelFileProcessingComplete:"Uppladdning klar",labelFileProcessingAborted:"Uppladdning avbruten",labelFileProcessingError:"Fel under uppladdning",labelFileProcessingRevertError:"Fel under \xE5terst\xE4llning",labelFileRemoveError:"Fel under borttagning",labelTapToCancel:"tryck f\xF6r att avbryta",labelTapToRetry:"tryck f\xF6r att f\xF6rs\xF6ka igen",labelTapToUndo:"tryck f\xF6r att \xE5ngra",labelButtonRemoveItem:"Tabort",labelButtonAbortItemLoad:"Avbryt",labelButtonRetryItemLoad:"F\xF6rs\xF6k igen",labelButtonAbortItemProcessing:"Avbryt",labelButtonUndoItemProcessing:"\xC5ngra",labelButtonRetryItemProcessing:"F\xF6rs\xF6k igen",labelButtonProcessItem:"Ladda upp",labelMaxFileSizeExceeded:"Filen \xE4r f\xF6r stor",labelMaxFileSize:"St\xF6rsta till\xE5tna filstorlek \xE4r {filesize}",labelMaxTotalFileSizeExceeded:"Maximal uppladdningsstorlek uppn\xE5d",labelMaxTotalFileSize:"Maximal uppladdningsstorlek \xE4r {filesize}",labelFileTypeNotAllowed:"Felaktig filtyp",fileValidateTypeLabelExpectedTypes:"Godk\xE4nda filtyper {allButLastType} eller {lastType}",imageValidateSizeLabelFormatError:"Bildtypen saknar st\xF6d",imageValidateSizeLabelImageSizeTooSmall:"Bilden \xE4r f\xF6r liten",imageValidateSizeLabelImageSizeTooBig:"Bilden \xE4r f\xF6r stor",imageValidateSizeLabelExpectedMinSize:"Minimal storlek \xE4r {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maximal storlek \xE4r {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Uppl\xF6sningen \xE4r f\xF6r l\xE5g",imageValidateSizeLabelImageResolutionTooHigh:"Uppl\xF6sningen \xE4r f\xF6r h\xF6g",imageValidateSizeLabelExpectedMinResolution:"Minsta till\xE5tna uppl\xF6sning \xE4r {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"H\xF6gsta till\xE5tna uppl\xF6sning \xE4r {maxResolution}"};var Po={labelIdle:'Dosyan\u0131z\u0131 S\xFCr\xFCkleyin & B\u0131rak\u0131n ya da Se\xE7in ',labelInvalidField:"Alan ge\xE7ersiz dosyalar i\xE7eriyor",labelFileWaitingForSize:"Boyut hesaplan\u0131yor",labelFileSizeNotAvailable:"Boyut mevcut de\u011Fil",labelFileLoading:"Y\xFCkleniyor",labelFileLoadError:"Y\xFCkleme s\u0131ras\u0131nda hata olu\u015Ftu",labelFileProcessing:"Y\xFCkleniyor",labelFileProcessingComplete:"Y\xFCkleme tamamland\u0131",labelFileProcessingAborted:"Y\xFCkleme iptal edildi",labelFileProcessingError:"Y\xFCklerken hata olu\u015Ftu",labelFileProcessingRevertError:"Geri \xE7ekerken hata olu\u015Ftu",labelFileRemoveError:"Kald\u0131r\u0131rken hata olu\u015Ftu",labelTapToCancel:"\u0130ptal etmek i\xE7in t\u0131klay\u0131n",labelTapToRetry:"Tekrar denemek i\xE7in t\u0131klay\u0131n",labelTapToUndo:"Geri almak i\xE7in t\u0131klay\u0131n",labelButtonRemoveItem:"Kald\u0131r",labelButtonAbortItemLoad:"\u0130ptal Et",labelButtonRetryItemLoad:"Tekrar dene",labelButtonAbortItemProcessing:"\u0130ptal et",labelButtonUndoItemProcessing:"Geri Al",labelButtonRetryItemProcessing:"Tekrar dene",labelButtonProcessItem:"Y\xFCkle",labelMaxFileSizeExceeded:"Dosya \xE7ok b\xFCy\xFCk",labelMaxFileSize:"En fazla dosya boyutu: {filesize}",labelMaxTotalFileSizeExceeded:"Maximum boyut a\u015F\u0131ld\u0131",labelMaxTotalFileSize:"Maximum dosya boyutu :{filesize}",labelFileTypeNotAllowed:"Ge\xE7ersiz dosya tipi",fileValidateTypeLabelExpectedTypes:"\u015Eu {allButLastType} ya da \u015Fu dosya olmas\u0131 gerekir: {lastType}",imageValidateSizeLabelFormatError:"Resim tipi desteklenmiyor",imageValidateSizeLabelImageSizeTooSmall:"Resim \xE7ok k\xFC\xE7\xFCk",imageValidateSizeLabelImageSizeTooBig:"Resim \xE7ok b\xFCy\xFCk",imageValidateSizeLabelExpectedMinSize:"Minimum boyut {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maximum boyut {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\xC7\xF6z\xFCn\xFCrl\xFCk \xE7ok d\xFC\u015F\xFCk",imageValidateSizeLabelImageResolutionTooHigh:"\xC7\xF6z\xFCn\xFCrl\xFCk \xE7ok y\xFCksek",imageValidateSizeLabelExpectedMinResolution:"Minimum \xE7\xF6z\xFCn\xFCrl\xFCk {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maximum \xE7\xF6z\xFCn\xFCrl\xFCk {maxResolution}"};var Fo={labelIdle:'\u041F\u0435\u0440\u0435\u0442\u044F\u0433\u043D\u0456\u0442\u044C \u0444\u0430\u0439\u043B\u0438 \u0430\u0431\u043E \u0432\u0438\u0431\u0435\u0440\u0456\u0442\u044C ',labelInvalidField:"\u041F\u043E\u043B\u0435 \u043C\u0456\u0441\u0442\u0438\u0442\u044C \u043D\u0435\u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u0456 \u0444\u0430\u0439\u043B\u0438",labelFileWaitingForSize:"\u0412\u043A\u0430\u0436\u0456\u0442\u044C \u0440\u043E\u0437\u043C\u0456\u0440",labelFileSizeNotAvailable:"\u0420\u043E\u0437\u043C\u0456\u0440 \u043D\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u0438\u0439",labelFileLoading:"\u041E\u0447\u0456\u043A\u0443\u0432\u0430\u043D\u043D\u044F",labelFileLoadError:"\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0440\u0438 \u043E\u0447\u0456\u043A\u0443\u0432\u0430\u043D\u043D\u0456",labelFileProcessing:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F",labelFileProcessingComplete:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E",labelFileProcessingAborted:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F \u0441\u043A\u0430\u0441\u043E\u0432\u0430\u043D\u043E",labelFileProcessingError:"\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0440\u0438 \u0437\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u0456",labelFileProcessingRevertError:"\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0440\u0438 \u0432\u0456\u0434\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u0456",labelFileRemoveError:"\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0440\u0438 \u0432\u0438\u0434\u0430\u043B\u0435\u043D\u043D\u0456",labelTapToCancel:"\u0412\u0456\u0434\u043C\u0456\u043D\u0438\u0442\u0438",labelTapToRetry:"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0438 \u0441\u043F\u0440\u043E\u0431\u0443",labelTapToUndo:"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0432\u0456\u0434\u043C\u0456\u043D\u0438\u0442\u0438 \u043E\u0441\u0442\u0430\u043D\u043D\u044E \u0434\u0456\u044E",labelButtonRemoveItem:"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438",labelButtonAbortItemLoad:"\u0412\u0456\u0434\u043C\u0456\u043D\u0438\u0442\u0438",labelButtonRetryItemLoad:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0438 \u0441\u043F\u0440\u043E\u0431\u0443",labelButtonAbortItemProcessing:"\u0412\u0456\u0434\u043C\u0456\u043D\u0438\u0442\u0438",labelButtonUndoItemProcessing:"\u0412\u0456\u0434\u043C\u0456\u043D\u0438\u0442\u0438 \u043E\u0441\u0442\u0430\u043D\u043D\u044E \u0434\u0456\u044E",labelButtonRetryItemProcessing:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0438 \u0441\u043F\u0440\u043E\u0431\u0443",labelButtonProcessItem:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F",labelMaxFileSizeExceeded:"\u0424\u0430\u0439\u043B \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0438\u0439",labelMaxFileSize:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0440\u043E\u0437\u043C\u0456\u0440 \u0444\u0430\u0439\u043B\u0443: {filesize}",labelMaxTotalFileSizeExceeded:"\u041F\u0435\u0440\u0435\u0432\u0438\u0449\u0435\u043D\u043E \u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0437\u0430\u0433\u0430\u043B\u044C\u043D\u0438\u0439 \u0440\u043E\u0437\u043C\u0456\u0440",labelMaxTotalFileSize:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0437\u0430\u0433\u0430\u043B\u044C\u043D\u0438\u0439 \u0440\u043E\u0437\u043C\u0456\u0440: {filesize}",labelFileTypeNotAllowed:"\u0424\u043E\u0440\u043C\u0430\u0442 \u0444\u0430\u0439\u043B\u0443 \u043D\u0435 \u043F\u0456\u0434\u0442\u0440\u0438\u043C\u0443\u0454\u0442\u044C\u0441\u044F",fileValidateTypeLabelExpectedTypes:"\u041E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F {allButLastType} \u0430\u0431\u043E {lastType}",imageValidateSizeLabelFormatError:"\u0424\u043E\u0440\u043C\u0430\u0442 \u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u043D\u0435 \u043F\u0456\u0434\u0442\u0440\u0438\u043C\u0443\u0454\u0442\u044C\u0441\u044F",imageValidateSizeLabelImageSizeTooSmall:"\u0417\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u0435",imageValidateSizeLabelImageSizeTooBig:"\u0417\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435",imageValidateSizeLabelExpectedMinSize:"\u041C\u0456\u043D\u0456\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0440\u043E\u0437\u043C\u0456\u0440: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0440\u043E\u0437\u043C\u0456\u0440: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\u0420\u043E\u0437\u043C\u0456\u0440\u0438 \u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u0456",imageValidateSizeLabelImageResolutionTooHigh:"\u0420\u043E\u0437\u043C\u0456\u0440\u0438 \u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0456",imageValidateSizeLabelExpectedMinResolution:"\u041C\u0456\u043D\u0456\u043C\u0430\u043B\u044C\u043D\u0456 \u0440\u043E\u0437\u043C\u0456\u0440\u0438: {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0456 \u0440\u043E\u0437\u043C\u0456\u0440\u0438: {maxResolution}"};var Co={labelIdle:'K\xE9o th\u1EA3 t\u1EC7p c\u1EE7a b\u1EA1n ho\u1EB7c T\xECm ki\u1EBFm ',labelInvalidField:"Tr\u01B0\u1EDDng ch\u1EE9a c\xE1c t\u1EC7p kh\xF4ng h\u1EE3p l\u1EC7",labelFileWaitingForSize:"\u0110ang ch\u1EDD k\xEDch th\u01B0\u1EDBc",labelFileSizeNotAvailable:"K\xEDch th\u01B0\u1EDBc kh\xF4ng c\xF3 s\u1EB5n",labelFileLoading:"\u0110ang t\u1EA3i",labelFileLoadError:"L\u1ED7i khi t\u1EA3i",labelFileProcessing:"\u0110ang t\u1EA3i l\xEAn",labelFileProcessingComplete:"T\u1EA3i l\xEAn th\xE0nh c\xF4ng",labelFileProcessingAborted:"\u0110\xE3 hu\u1EF7 t\u1EA3i l\xEAn",labelFileProcessingError:"L\u1ED7i khi t\u1EA3i l\xEAn",labelFileProcessingRevertError:"L\u1ED7i khi ho\xE0n nguy\xEAn",labelFileRemoveError:"L\u1ED7i khi x\xF3a",labelTapToCancel:"nh\u1EA5n \u0111\u1EC3 h\u1EE7y",labelTapToRetry:"nh\u1EA5n \u0111\u1EC3 th\u1EED l\u1EA1i",labelTapToUndo:"nh\u1EA5n \u0111\u1EC3 ho\xE0n t\xE1c",labelButtonRemoveItem:"Xo\xE1",labelButtonAbortItemLoad:"Hu\u1EF7 b\u1ECF",labelButtonRetryItemLoad:"Th\u1EED l\u1EA1i",labelButtonAbortItemProcessing:"H\u1EE7y b\u1ECF",labelButtonUndoItemProcessing:"Ho\xE0n t\xE1c",labelButtonRetryItemProcessing:"Th\u1EED l\u1EA1i",labelButtonProcessItem:"T\u1EA3i l\xEAn",labelMaxFileSizeExceeded:"T\u1EADp tin qu\xE1 l\u1EDBn",labelMaxFileSize:"K\xEDch th\u01B0\u1EDBc t\u1EC7p t\u1ED1i \u0111a l\xE0 {filesize}",labelMaxTotalFileSizeExceeded:"\u0110\xE3 v\u01B0\u1EE3t qu\xE1 t\u1ED5ng k\xEDch th\u01B0\u1EDBc t\u1ED1i \u0111a",labelMaxTotalFileSize:"T\u1ED5ng k\xEDch th\u01B0\u1EDBc t\u1EC7p t\u1ED1i \u0111a l\xE0 {filesize}",labelFileTypeNotAllowed:"T\u1EC7p thu\u1ED9c lo\u1EA1i kh\xF4ng h\u1EE3p l\u1EC7",fileValidateTypeLabelExpectedTypes:"Ki\u1EC3u t\u1EC7p h\u1EE3p l\u1EC7 l\xE0 {allButLastType} ho\u1EB7c {lastType}",imageValidateSizeLabelFormatError:"Lo\u1EA1i h\xECnh \u1EA3nh kh\xF4ng \u0111\u01B0\u1EE3c h\u1ED7 tr\u1EE3",imageValidateSizeLabelImageSizeTooSmall:"H\xECnh \u1EA3nh qu\xE1 nh\u1ECF",imageValidateSizeLabelImageSizeTooBig:"H\xECnh \u1EA3nh qu\xE1 l\u1EDBn",imageValidateSizeLabelExpectedMinSize:"K\xEDch th\u01B0\u1EDBc t\u1ED1i thi\u1EC3u l\xE0 {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"K\xEDch th\u01B0\u1EDBc t\u1ED1i \u0111a l\xE0 {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\u0110\u1ED9 ph\xE2n gi\u1EA3i qu\xE1 th\u1EA5p",imageValidateSizeLabelImageResolutionTooHigh:"\u0110\u1ED9 ph\xE2n gi\u1EA3i qu\xE1 cao",imageValidateSizeLabelExpectedMinResolution:"\u0110\u1ED9 ph\xE2n gi\u1EA3i t\u1ED1i thi\u1EC3u l\xE0 {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"\u0110\u1ED9 ph\xE2n gi\u1EA3i t\u1ED1i \u0111a l\xE0 {maxResolution}"};var zo={labelIdle:'\u62D6\u653E\u6587\u4EF6\uFF0C\u6216\u8005 \u6D4F\u89C8 ',labelInvalidField:"\u5B57\u6BB5\u5305\u542B\u65E0\u6548\u6587\u4EF6",labelFileWaitingForSize:"\u8BA1\u7B97\u6587\u4EF6\u5927\u5C0F",labelFileSizeNotAvailable:"\u6587\u4EF6\u5927\u5C0F\u4E0D\u53EF\u7528",labelFileLoading:"\u52A0\u8F7D",labelFileLoadError:"\u52A0\u8F7D\u9519\u8BEF",labelFileProcessing:"\u4E0A\u4F20",labelFileProcessingComplete:"\u5DF2\u4E0A\u4F20",labelFileProcessingAborted:"\u4E0A\u4F20\u5DF2\u53D6\u6D88",labelFileProcessingError:"\u4E0A\u4F20\u51FA\u9519",labelFileProcessingRevertError:"\u8FD8\u539F\u51FA\u9519",labelFileRemoveError:"\u5220\u9664\u51FA\u9519",labelTapToCancel:"\u70B9\u51FB\u53D6\u6D88",labelTapToRetry:"\u70B9\u51FB\u91CD\u8BD5",labelTapToUndo:"\u70B9\u51FB\u64A4\u6D88",labelButtonRemoveItem:"\u5220\u9664",labelButtonAbortItemLoad:"\u4E2D\u6B62",labelButtonRetryItemLoad:"\u91CD\u8BD5",labelButtonAbortItemProcessing:"\u53D6\u6D88",labelButtonUndoItemProcessing:"\u64A4\u6D88",labelButtonRetryItemProcessing:"\u91CD\u8BD5",labelButtonProcessItem:"\u4E0A\u4F20",labelMaxFileSizeExceeded:"\u6587\u4EF6\u592A\u5927",labelMaxFileSize:"\u6700\u5927\u503C: {filesize}",labelMaxTotalFileSizeExceeded:"\u8D85\u8FC7\u6700\u5927\u6587\u4EF6\u5927\u5C0F",labelMaxTotalFileSize:"\u6700\u5927\u6587\u4EF6\u5927\u5C0F\uFF1A{filesize}",labelFileTypeNotAllowed:"\u6587\u4EF6\u7C7B\u578B\u65E0\u6548",fileValidateTypeLabelExpectedTypes:"\u5E94\u4E3A {allButLastType} \u6216 {lastType}",imageValidateSizeLabelFormatError:"\u4E0D\u652F\u6301\u56FE\u50CF\u7C7B\u578B",imageValidateSizeLabelImageSizeTooSmall:"\u56FE\u50CF\u592A\u5C0F",imageValidateSizeLabelImageSizeTooBig:"\u56FE\u50CF\u592A\u5927",imageValidateSizeLabelExpectedMinSize:"\u6700\u5C0F\u503C: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"\u6700\u5927\u503C: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\u5206\u8FA8\u7387\u592A\u4F4E",imageValidateSizeLabelImageResolutionTooHigh:"\u5206\u8FA8\u7387\u592A\u9AD8",imageValidateSizeLabelExpectedMinResolution:"\u6700\u5C0F\u5206\u8FA8\u7387\uFF1A{minResolution}",imageValidateSizeLabelExpectedMaxResolution:"\u6700\u5927\u5206\u8FA8\u7387\uFF1A{maxResolution}"};var No={labelIdle:'\u62D6\u653E\u6A94\u6848\uFF0C\u6216\u8005 \u700F\u89BD ',labelInvalidField:"\u4E0D\u652F\u63F4\u6B64\u6A94\u6848",labelFileWaitingForSize:"\u6B63\u5728\u8A08\u7B97\u6A94\u6848\u5927\u5C0F",labelFileSizeNotAvailable:"\u6A94\u6848\u5927\u5C0F\u4E0D\u7B26",labelFileLoading:"\u8B80\u53D6\u4E2D",labelFileLoadError:"\u8B80\u53D6\u932F\u8AA4",labelFileProcessing:"\u4E0A\u50B3",labelFileProcessingComplete:"\u5DF2\u4E0A\u50B3",labelFileProcessingAborted:"\u4E0A\u50B3\u5DF2\u53D6\u6D88",labelFileProcessingError:"\u4E0A\u50B3\u767C\u751F\u932F\u8AA4",labelFileProcessingRevertError:"\u9084\u539F\u932F\u8AA4",labelFileRemoveError:"\u522A\u9664\u932F\u8AA4",labelTapToCancel:"\u9EDE\u64CA\u53D6\u6D88",labelTapToRetry:"\u9EDE\u64CA\u91CD\u8A66",labelTapToUndo:"\u9EDE\u64CA\u9084\u539F",labelButtonRemoveItem:"\u522A\u9664",labelButtonAbortItemLoad:"\u505C\u6B62",labelButtonRetryItemLoad:"\u91CD\u8A66",labelButtonAbortItemProcessing:"\u53D6\u6D88",labelButtonUndoItemProcessing:"\u53D6\u6D88",labelButtonRetryItemProcessing:"\u91CD\u8A66",labelButtonProcessItem:"\u4E0A\u50B3",labelMaxFileSizeExceeded:"\u6A94\u6848\u904E\u5927",labelMaxFileSize:"\u6700\u5927\u503C\uFF1A{filesize}",labelMaxTotalFileSizeExceeded:"\u8D85\u904E\u6700\u5927\u53EF\u4E0A\u50B3\u5927\u5C0F",labelMaxTotalFileSize:"\u6700\u5927\u53EF\u4E0A\u50B3\u5927\u5C0F\uFF1A{filesize}",labelFileTypeNotAllowed:"\u4E0D\u652F\u63F4\u6B64\u985E\u578B\u6A94\u6848",fileValidateTypeLabelExpectedTypes:"\u61C9\u70BA {allButLastType} \u6216 {lastType}",imageValidateSizeLabelFormatError:"\u4E0D\u652F\u6301\u6B64\u985E\u5716\u7247\u985E\u578B",imageValidateSizeLabelImageSizeTooSmall:"\u5716\u7247\u904E\u5C0F",imageValidateSizeLabelImageSizeTooBig:"\u5716\u7247\u904E\u5927",imageValidateSizeLabelExpectedMinSize:"\u6700\u5C0F\u5C3A\u5BF8\uFF1A{minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"\u6700\u5927\u5C3A\u5BF8\uFF1A{maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\u89E3\u6790\u5EA6\u904E\u4F4E",imageValidateSizeLabelImageResolutionTooHigh:"\u89E3\u6790\u5EA6\u904E\u9AD8",imageValidateSizeLabelExpectedMinResolution:"\u6700\u4F4E\u89E3\u6790\u5EA6\uFF1A{minResolution}",imageValidateSizeLabelExpectedMaxResolution:"\u6700\u9AD8\u89E3\u6790\u5EA6\uFF1A{maxResolution}"};_e(xr);_e(Pr);_e(zr);_e(Br);_e(kr);_e(Jr);_e(to);_e(po);_e(Sa);window.FilePond=ea;function Jf({acceptedFileTypes:e,imageEditorEmptyFillColor:t,imageEditorMode:i,imageEditorViewportHeight:a,imageEditorViewportWidth:n,deleteUploadedFileUsing:r,isDeletable:o,isDisabled:l,getUploadedFilesUsing:s,imageCropAspectRatio:u,imagePreviewHeight:c,imageResizeMode:d,imageResizeTargetHeight:h,imageResizeTargetWidth:f,imageResizeUpscale:p,isAvatar:m,hasImageEditor:g,hasCircleCropper:b,canEditSvgs:E,isSvgEditingConfirmed:I,confirmSvgEditingMessage:_,disabledSvgEditingMessage:y,isDownloadable:T,isMultiple:v,isOpenable:R,isPreviewable:S,isReorderable:D,itemPanelAspectRatio:x,loadingIndicatorPosition:O,locale:z,maxFiles:A,maxSize:F,minSize:w,panelAspectRatio:L,panelLayout:C,placeholder:P,removeUploadedFileButtonPosition:G,removeUploadedFileUsing:B,reorderUploadedFilesUsing:X,shouldAppendFiles:q,shouldOrientImageFromExif:j,shouldTransformImage:ue,state:U,uploadButtonPosition:W,uploadingMessage:$,uploadProgressIndicatorPosition:le,uploadUsing:J}){return{fileKeyIndex:{},pond:null,shouldUpdateState:!0,state:U,lastState:null,uploadedFileIndex:{},isEditorOpen:!1,editingFile:{},currentRatio:"",editor:{},init:async function(){Ot(Bo[z]??Bo.en),this.pond=ct(this.$refs.input,{acceptedFileTypes:e,allowImageExifOrientation:j,allowPaste:!1,allowRemove:o,allowReorder:D,allowImagePreview:S,allowVideoPreview:S,allowAudioPreview:S,allowImageTransform:ue,credits:!1,files:await this.getFiles(),imageCropAspectRatio:u,imagePreviewHeight:c,imageResizeTargetHeight:h,imageResizeTargetWidth:f,imageResizeMode:d,imageResizeUpscale:p,itemInsertLocation:q?"after":"before",...P&&{labelIdle:P},maxFiles:A,maxFileSize:F,minFileSize:w,styleButtonProcessItemPosition:W,styleButtonRemoveItemPosition:G,styleItemPanelAspectRatio:x,styleLoadIndicatorPosition:O,stylePanelAspectRatio:L,stylePanelLayout:C,styleProgressIndicatorPosition:le,server:{load:async(N,H)=>{let ee=await(await fetch(N,{cache:"no-store"})).blob();H(ee)},process:(N,H,Q,ee,wt,Ge)=>{this.shouldUpdateState=!1;let Yt=([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,$t=>($t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>$t/4).toString(16));J(Yt,H,$t=>{this.shouldUpdateState=!0,ee($t)},wt,Ge)},remove:async(N,H)=>{let Q=this.uploadedFileIndex[N]??null;Q&&(await r(Q),H())},revert:async(N,H)=>{await B(N),H()}},allowImageEdit:g,imageEditEditor:{open:N=>this.loadEditor(N),onconfirm:()=>{},oncancel:()=>this.closeEditor(),onclose:()=>this.closeEditor()}}),this.$watch("state",async()=>{if(this.pond&&this.shouldUpdateState&&this.state!==void 0){if(this.state!==null&&Object.values(this.state).filter(N=>N.startsWith("livewire-file:")).length){this.lastState=null;return}JSON.stringify(this.state)!==this.lastState&&(this.lastState=JSON.stringify(this.state),this.pond.files=await this.getFiles())}}),this.pond.on("reorderfiles",async N=>{let H=N.map(Q=>Q.source instanceof File?Q.serverId:this.uploadedFileIndex[Q.source]??null).filter(Q=>Q);await X(q?H:H.reverse())}),this.pond.on("initfile",async N=>{T&&(m||this.insertDownloadLink(N))}),this.pond.on("initfile",async N=>{R&&(m||this.insertOpenLink(N))}),this.pond.on("addfilestart",async N=>{N.status===pt.PROCESSING_QUEUED&&this.dispatchFormEvent("form-processing-started",{message:$})});let V=async()=>{this.pond.getFiles().filter(N=>N.status===pt.PROCESSING||N.status===pt.PROCESSING_QUEUED).length||this.dispatchFormEvent("form-processing-finished")};this.pond.on("processfile",V),this.pond.on("processfileabort",V),this.pond.on("processfilerevert",V)},destroy:function(){this.destroyEditor(),dt(this.$refs.input),this.pond=null},dispatchFormEvent:function(V,N={}){this.$el.closest("form")?.dispatchEvent(new CustomEvent(V,{composed:!0,cancelable:!0,detail:N}))},getUploadedFiles:async function(){let V=await s();this.fileKeyIndex=V??{},this.uploadedFileIndex=Object.entries(this.fileKeyIndex).filter(([N,H])=>H?.url).reduce((N,[H,Q])=>(N[Q.url]=H,N),{})},getFiles:async function(){await this.getUploadedFiles();let V=[];for(let N of Object.values(this.fileKeyIndex))N&&V.push({source:N.url,options:{type:"local",...!N.type||S&&(/^audio/.test(N.type)||/^image/.test(N.type)||/^video/.test(N.type))?{}:{file:{name:N.name,size:N.size,type:N.type}}}});return q?V:V.reverse()},insertDownloadLink:function(V){if(V.origin!==Dt.LOCAL)return;let N=this.getDownloadLink(V);N&&document.getElementById(`filepond--item-${V.id}`).querySelector(".filepond--file-info-main").prepend(N)},insertOpenLink:function(V){if(V.origin!==Dt.LOCAL)return;let N=this.getOpenLink(V);N&&document.getElementById(`filepond--item-${V.id}`).querySelector(".filepond--file-info-main").prepend(N)},getDownloadLink:function(V){let N=V.source;if(!N)return;let H=document.createElement("a");return H.className="filepond--download-icon",H.href=N,H.download=V.file.name,H},getOpenLink:function(V){let N=V.source;if(!N)return;let H=document.createElement("a");return H.className="filepond--open-icon",H.href=N,H.target="_blank",H},initEditor:function(){l||g&&(this.editor=new Ta(this.$refs.editor,{aspectRatio:n/a,autoCropArea:1,center:!0,crop:V=>{this.$refs.xPositionInput.value=Math.round(V.detail.x),this.$refs.yPositionInput.value=Math.round(V.detail.y),this.$refs.heightInput.value=Math.round(V.detail.height),this.$refs.widthInput.value=Math.round(V.detail.width),this.$refs.rotationInput.value=V.detail.rotate},cropBoxResizable:!0,guides:!0,highlight:!0,responsive:!0,toggleDragModeOnDblclick:!0,viewMode:i,wheelZoomRatio:.02}))},closeEditor:function(){this.editingFile={},this.isEditorOpen=!1,this.destroyEditor()},fixImageDimensions:function(V,N){if(V.type!=="image/svg+xml")return N(V);let H=new FileReader;H.onload=Q=>{let ee=new DOMParser().parseFromString(Q.target.result,"image/svg+xml")?.querySelector("svg");if(!ee)return N(V);let wt=["viewBox","ViewBox","viewbox"].find(Yt=>ee.hasAttribute(Yt));if(!wt)return N(V);let Ge=ee.getAttribute(wt).split(" ");return!Ge||Ge.length!==4?N(V):(ee.setAttribute("width",parseFloat(Ge[2])+"pt"),ee.setAttribute("height",parseFloat(Ge[3])+"pt"),N(new File([new Blob([new XMLSerializer().serializeToString(ee)],{type:"image/svg+xml"})],V.name,{type:"image/svg+xml",_relativePath:""})))},H.readAsText(V)},loadEditor:function(V){if(l||!g||!V)return;let N=V.type==="image/svg+xml";if(!E&&N){alert(y);return}I&&N&&!confirm(_)||this.fixImageDimensions(V,H=>{this.editingFile=H,this.initEditor();let Q=new FileReader;Q.onload=ee=>{this.isEditorOpen=!0,setTimeout(()=>this.editor.replace(ee.target.result),200)},Q.readAsDataURL(V)})},getRoundedCanvas:function(V){let N=V.width,H=V.height,Q=document.createElement("canvas");Q.width=N,Q.height=H;let ee=Q.getContext("2d");return ee.imageSmoothingEnabled=!0,ee.drawImage(V,0,0,N,H),ee.globalCompositeOperation="destination-in",ee.beginPath(),ee.ellipse(N/2,H/2,N/2,H/2,0,0,2*Math.PI),ee.fill(),Q},saveEditor:function(){if(l||!g)return;let V=this.editor.getCroppedCanvas({fillColor:t??"transparent",height:h,imageSmoothingEnabled:!0,imageSmoothingQuality:"high",width:f});b&&(V=this.getRoundedCanvas(V)),V.toBlob(N=>{v&&this.pond.removeFile(this.pond.getFiles().find(H=>H.filename===this.editingFile.name)?.id,{revert:!0}),this.$nextTick(()=>{this.shouldUpdateState=!1;let H=this.editingFile.name.slice(0,this.editingFile.name.lastIndexOf(".")),Q=this.editingFile.name.split(".").pop();Q==="svg"&&(Q="png");let ee=/-v(\d+)/;ee.test(H)?H=H.replace(ee,(wt,Ge)=>`-v${Number(Ge)+1}`):H+="-v1",this.pond.addFile(new File([N],`${H}.${Q}`,{type:this.editingFile.type==="image/svg+xml"||b?"image/png":this.editingFile.type,lastModified:new Date().getTime()})).then(()=>{this.closeEditor()}).catch(()=>{this.closeEditor()})})},b?"image/png":this.editingFile.type)},destroyEditor:function(){this.editor&&typeof this.editor.destroy=="function"&&this.editor.destroy(),this.editor=null}}}var Bo={ar:mo,cs:go,da:Eo,de:To,en:Io,es:bo,fa:_o,fi:Ro,fr:yo,hu:So,id:wo,it:vo,nl:Ao,no:Lo,pl:Mo,pt_BR:_i,pt_PT:_i,ro:Oo,ru:xo,sv:Do,tr:Po,uk:Fo,vi:Co,zh_CN:zo,zh_TW:No};export{Jf as default}; +/*! Bundled license information: + +filepond/dist/filepond.esm.js: + (*! + * FilePond 4.30.6 + * Licensed under MIT, https://opensource.org/licenses/MIT/ + * Please visit https://pqina.nl/filepond/ for details. + *) + +cropperjs/dist/cropper.esm.js: + (*! + * Cropper.js v1.6.1 + * https://fengyuanchen.github.io/cropperjs + * + * Copyright 2015-present Chen Fengyuan + * Released under the MIT license + * + * Date: 2023-09-17T03:44:19.860Z + *) + +filepond-plugin-file-validate-size/dist/filepond-plugin-file-validate-size.esm.js: + (*! + * FilePondPluginFileValidateSize 2.2.8 + * Licensed under MIT, https://opensource.org/licenses/MIT/ + * Please visit https://pqina.nl/filepond/ for details. + *) + +filepond-plugin-file-validate-type/dist/filepond-plugin-file-validate-type.esm.js: + (*! + * FilePondPluginFileValidateType 1.2.9 + * Licensed under MIT, https://opensource.org/licenses/MIT/ + * Please visit https://pqina.nl/filepond/ for details. + *) + +filepond-plugin-image-crop/dist/filepond-plugin-image-crop.esm.js: + (*! + * FilePondPluginImageCrop 2.0.6 + * Licensed under MIT, https://opensource.org/licenses/MIT/ + * Please visit https://pqina.nl/filepond/ for details. + *) + +filepond-plugin-image-edit/dist/filepond-plugin-image-edit.esm.js: + (*! + * FilePondPluginImageEdit 1.6.3 + * Licensed under MIT, https://opensource.org/licenses/MIT/ + * Please visit https://pqina.nl/filepond/ for details. + *) + +filepond-plugin-image-exif-orientation/dist/filepond-plugin-image-exif-orientation.esm.js: + (*! + * FilePondPluginImageExifOrientation 1.0.11 + * Licensed under MIT, https://opensource.org/licenses/MIT/ + * Please visit https://pqina.nl/filepond/ for details. + *) + +filepond-plugin-image-preview/dist/filepond-plugin-image-preview.esm.js: + (*! + * FilePondPluginImagePreview 4.6.12 + * Licensed under MIT, https://opensource.org/licenses/MIT/ + * Please visit https://pqina.nl/filepond/ for details. + *) + +filepond-plugin-image-resize/dist/filepond-plugin-image-resize.esm.js: + (*! + * FilePondPluginImageResize 2.0.10 + * Licensed under MIT, https://opensource.org/licenses/MIT/ + * Please visit https://pqina.nl/filepond/ for details. + *) + +filepond-plugin-image-transform/dist/filepond-plugin-image-transform.esm.js: + (*! + * FilePondPluginImageTransform 3.8.7 + * Licensed under MIT, https://opensource.org/licenses/MIT/ + * Please visit https://pqina.nl/filepond/ for details. + *) + +filepond-plugin-media-preview/dist/filepond-plugin-media-preview.esm.js: + (*! + * FilePondPluginMediaPreview 1.0.11 + * Licensed under MIT, https://opensource.org/licenses/MIT/ + * Please visit undefined for details. + *) +*/ diff --git a/public/js/filament/forms/components/key-value.js b/public/js/filament/forms/components/key-value.js new file mode 100644 index 000000000..3450bdffe --- /dev/null +++ b/public/js/filament/forms/components/key-value.js @@ -0,0 +1 @@ +function r({state:i}){return{state:i,rows:[],shouldUpdateRows:!0,init:function(){this.updateRows(),this.rows.length<=0?this.rows.push({key:"",value:""}):this.updateState(),this.$watch("state",(t,e)=>{let s=o=>o===null?0:Array.isArray(o)?o.length:typeof o!="object"?0:Object.keys(o).length;s(t)===0&&s(e)===0||this.updateRows()})},addRow:function(){this.rows.push({key:"",value:""}),this.updateState()},deleteRow:function(t){this.rows.splice(t,1),this.rows.length<=0&&this.addRow(),this.updateState()},reorderRows:function(t){let e=Alpine.raw(this.rows),s=e.splice(t.oldIndex,1)[0];e.splice(t.newIndex,0,s),this.rows=e,this.updateState()},updateRows:function(){if(!this.shouldUpdateRows){this.shouldUpdateRows=!0;return}let t=[];for(let[e,s]of Object.entries(this.state??{}))t.push({key:e,value:s});this.rows=t},updateState:function(){let t={};this.rows.forEach(e=>{e.key===""||e.key===null||(t[e.key]=e.value)}),this.shouldUpdateRows=!1,this.state=t}}}export{r as default}; diff --git a/public/js/filament/forms/components/markdown-editor.js b/public/js/filament/forms/components/markdown-editor.js new file mode 100644 index 000000000..02b7779fe --- /dev/null +++ b/public/js/filament/forms/components/markdown-editor.js @@ -0,0 +1,51 @@ +var ss=Object.defineProperty;var Sd=Object.getOwnPropertyDescriptor;var Td=Object.getOwnPropertyNames;var Ld=Object.prototype.hasOwnProperty;var Cd=(o,h)=>()=>(o&&(h=o(o=0)),h);var Ke=(o,h)=>()=>(h||o((h={exports:{}}).exports,h),h.exports);var Ed=(o,h,v,C)=>{if(h&&typeof h=="object"||typeof h=="function")for(let b of Td(h))!Ld.call(o,b)&&b!==v&&ss(o,b,{get:()=>h[b],enumerable:!(C=Sd(h,b))||C.enumerable});return o};var zd=o=>Ed(ss({},"__esModule",{value:!0}),o);var We=Ke((Yo,Qo)=>{(function(o,h){typeof Yo=="object"&&typeof Qo<"u"?Qo.exports=h():typeof define=="function"&&define.amd?define(h):(o=o||self,o.CodeMirror=h())})(Yo,function(){"use strict";var o=navigator.userAgent,h=navigator.platform,v=/gecko\/\d/i.test(o),C=/MSIE \d/.test(o),b=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(o),S=/Edge\/(\d+)/.exec(o),s=C||b||S,p=s&&(C?document.documentMode||6:+(S||b)[1]),g=!S&&/WebKit\//.test(o),L=g&&/Qt\/\d+\.\d+/.test(o),x=!S&&/Chrome\/(\d+)/.exec(o),c=x&&+x[1],d=/Opera\//.test(o),w=/Apple Computer/.test(navigator.vendor),E=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(o),z=/PhantomJS/.test(o),y=w&&(/Mobile\/\w+/.test(o)||navigator.maxTouchPoints>2),R=/Android/.test(o),M=y||R||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(o),H=y||/Mac/.test(h),Z=/\bCrOS\b/.test(o),ee=/win/i.test(h),re=d&&o.match(/Version\/(\d*\.\d*)/);re&&(re=Number(re[1])),re&&re>=15&&(d=!1,g=!0);var N=H&&(L||d&&(re==null||re<12.11)),F=v||s&&p>=9;function D(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}var Q=function(e,t){var n=e.className,r=D(t).exec(n);if(r){var i=n.slice(r.index+r[0].length);e.className=n.slice(0,r.index)+(i?r[1]+i:"")}};function j(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function V(e,t){return j(e).appendChild(t)}function _(e,t,n,r){var i=document.createElement(e);if(n&&(i.className=n),r&&(i.style.cssText=r),typeof t=="string")i.appendChild(document.createTextNode(t));else if(t)for(var a=0;a=t)return l+(t-a);l+=u-a,l+=n-l%n,a=u+1}}var qe=function(){this.id=null,this.f=null,this.time=0,this.handler=Ee(this.onTimeout,this)};qe.prototype.onTimeout=function(e){e.id=0,e.time<=+new Date?e.f():setTimeout(e.handler,e.time-+new Date)},qe.prototype.set=function(e,t){this.f=t;var n=+new Date+e;(!this.id||n=t)return r+Math.min(l,t-i);if(i+=a-r,i+=n-i%n,r=a+1,i>=t)return r}}var U=[""];function G(e){for(;U.length<=e;)U.push(ce(U)+" ");return U[e]}function ce(e){return e[e.length-1]}function Be(e,t){for(var n=[],r=0;r"\x80"&&(e.toUpperCase()!=e.toLowerCase()||Ue.test(e))}function Me(e,t){return t?t.source.indexOf("\\w")>-1&&we(e)?!0:t.test(e):we(e)}function Le(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}var $=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function W(e){return e.charCodeAt(0)>=768&&$.test(e)}function se(e,t,n){for(;(n<0?t>0:tn?-1:1;;){if(t==n)return t;var i=(t+n)/2,a=r<0?Math.ceil(i):Math.floor(i);if(a==t)return e(a)?t:n;e(a)?n=a:t=a+r}}function nt(e,t,n,r){if(!e)return r(t,n,"ltr",0);for(var i=!1,a=0;at||t==n&&l.to==t)&&(r(Math.max(l.from,t),Math.min(l.to,n),l.level==1?"rtl":"ltr",a),i=!0)}i||r(t,n,"ltr")}var dt=null;function Pt(e,t,n){var r;dt=null;for(var i=0;it)return i;a.to==t&&(a.from!=a.to&&n=="before"?r=i:dt=i),a.from==t&&(a.from!=a.to&&n!="before"?r=i:dt=i)}return r??dt}var It=function(){var e="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",t="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111";function n(m){return m<=247?e.charAt(m):1424<=m&&m<=1524?"R":1536<=m&&m<=1785?t.charAt(m-1536):1774<=m&&m<=2220?"r":8192<=m&&m<=8203?"w":m==8204?"b":"L"}var r=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,i=/[stwN]/,a=/[LRr]/,l=/[Lb1n]/,u=/[1n]/;function f(m,A,P){this.level=m,this.from=A,this.to=P}return function(m,A){var P=A=="ltr"?"L":"R";if(m.length==0||A=="ltr"&&!r.test(m))return!1;for(var J=m.length,Y=[],ie=0;ie-1&&(r[t]=i.slice(0,a).concat(i.slice(a+1)))}}}function it(e,t){var n=nr(e,t);if(n.length)for(var r=Array.prototype.slice.call(arguments,2),i=0;i0}function Wt(e){e.prototype.on=function(t,n){Fe(this,t,n)},e.prototype.off=function(t,n){_t(this,t,n)}}function kt(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function Hr(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function Ct(e){return e.defaultPrevented!=null?e.defaultPrevented:e.returnValue==!1}function dr(e){kt(e),Hr(e)}function yn(e){return e.target||e.srcElement}function Ut(e){var t=e.which;return t==null&&(e.button&1?t=1:e.button&2?t=3:e.button&4&&(t=2)),H&&e.ctrlKey&&t==1&&(t=3),t}var eo=function(){if(s&&p<9)return!1;var e=_("div");return"draggable"in e||"dragDrop"in e}(),Br;function ei(e){if(Br==null){var t=_("span","\u200B");V(e,_("span",[t,document.createTextNode("x")])),e.firstChild.offsetHeight!=0&&(Br=t.offsetWidth<=1&&t.offsetHeight>2&&!(s&&p<8))}var n=Br?_("span","\u200B"):_("span","\xA0",null,"display: inline-block; width: 1px; margin-right: -1px");return n.setAttribute("cm-text",""),n}var xn;function pr(e){if(xn!=null)return xn;var t=V(e,document.createTextNode("A\u062EA")),n=X(t,0,1).getBoundingClientRect(),r=X(t,1,2).getBoundingClientRect();return j(e),!n||n.left==n.right?!1:xn=r.right-n.right<3}var Bt=` + +b`.split(/\n/).length!=3?function(e){for(var t=0,n=[],r=e.length;t<=r;){var i=e.indexOf(` +`,t);i==-1&&(i=e.length);var a=e.slice(t,e.charAt(i-1)=="\r"?i-1:i),l=a.indexOf("\r");l!=-1?(n.push(a.slice(0,l)),t+=l+1):(n.push(a),t=i+1)}return n}:function(e){return e.split(/\r\n?|\n/)},hr=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch{return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch{}return!t||t.parentElement()!=e?!1:t.compareEndPoints("StartToEnd",t)!=0},ti=function(){var e=_("div");return"oncopy"in e?!0:(e.setAttribute("oncopy","return;"),typeof e.oncopy=="function")}(),$t=null;function to(e){if($t!=null)return $t;var t=V(e,_("span","x")),n=t.getBoundingClientRect(),r=X(t,0,1).getBoundingClientRect();return $t=Math.abs(n.left-r.left)>1}var Wr={},Kt={};function Gt(e,t){arguments.length>2&&(t.dependencies=Array.prototype.slice.call(arguments,2)),Wr[e]=t}function Cr(e,t){Kt[e]=t}function Ur(e){if(typeof e=="string"&&Kt.hasOwnProperty(e))e=Kt[e];else if(e&&typeof e.name=="string"&&Kt.hasOwnProperty(e.name)){var t=Kt[e.name];typeof t=="string"&&(t={name:t}),e=oe(t,e),e.name=t.name}else{if(typeof e=="string"&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return Ur("application/xml");if(typeof e=="string"&&/^[\w\-]+\/[\w\-]+\+json$/.test(e))return Ur("application/json")}return typeof e=="string"?{name:e}:e||{name:"null"}}function $r(e,t){t=Ur(t);var n=Wr[t.name];if(!n)return $r(e,"text/plain");var r=n(e,t);if(gr.hasOwnProperty(t.name)){var i=gr[t.name];for(var a in i)i.hasOwnProperty(a)&&(r.hasOwnProperty(a)&&(r["_"+a]=r[a]),r[a]=i[a])}if(r.name=t.name,t.helperType&&(r.helperType=t.helperType),t.modeProps)for(var l in t.modeProps)r[l]=t.modeProps[l];return r}var gr={};function Kr(e,t){var n=gr.hasOwnProperty(e)?gr[e]:gr[e]={};ge(t,n)}function Vt(e,t){if(t===!0)return t;if(e.copyState)return e.copyState(t);var n={};for(var r in t){var i=t[r];i instanceof Array&&(i=i.concat([])),n[r]=i}return n}function _n(e,t){for(var n;e.innerMode&&(n=e.innerMode(t),!(!n||n.mode==e));)t=n.state,e=n.mode;return n||{mode:e,state:t}}function Gr(e,t,n){return e.startState?e.startState(t,n):!0}var at=function(e,t,n){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=n};at.prototype.eol=function(){return this.pos>=this.string.length},at.prototype.sol=function(){return this.pos==this.lineStart},at.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},at.prototype.next=function(){if(this.post},at.prototype.eatSpace=function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},at.prototype.skipToEnd=function(){this.pos=this.string.length},at.prototype.skipTo=function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},at.prototype.backUp=function(e){this.pos-=e},at.prototype.column=function(){return this.lastColumnPos0?null:(a&&t!==!1&&(this.pos+=a[0].length),a)}},at.prototype.current=function(){return this.string.slice(this.start,this.pos)},at.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},at.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},at.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)};function Ae(e,t){if(t-=e.first,t<0||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var n=e;!n.lines;)for(var r=0;;++r){var i=n.children[r],a=i.chunkSize();if(t=e.first&&tn?ne(n,Ae(e,n).text.length):Sc(t,Ae(e,t.line).text.length)}function Sc(e,t){var n=e.ch;return n==null||n>t?ne(e.line,t):n<0?ne(e.line,0):e}function ca(e,t){for(var n=[],r=0;rthis.maxLookAhead&&(this.maxLookAhead=e),t},Jt.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-e}},Jt.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},Jt.fromSaved=function(e,t,n){return t instanceof ri?new Jt(e,Vt(e.mode,t.state),n,t.lookAhead):new Jt(e,Vt(e.mode,t),n)},Jt.prototype.save=function(e){var t=e!==!1?Vt(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new ri(t,this.maxLookAhead):t};function fa(e,t,n,r){var i=[e.state.modeGen],a={};va(e,t.text,e.doc.mode,n,function(m,A){return i.push(m,A)},a,r);for(var l=n.state,u=function(m){n.baseTokens=i;var A=e.state.overlays[m],P=1,J=0;n.state=!0,va(e,t.text,A.mode,n,function(Y,ie){for(var ue=P;JY&&i.splice(P,1,Y,i[P+1],me),P+=2,J=Math.min(Y,me)}if(ie)if(A.opaque)i.splice(ue,P-ue,Y,"overlay "+ie),P=ue+2;else for(;uee.options.maxHighlightLength&&Vt(e.doc.mode,r.state),a=fa(e,t,r);i&&(r.state=i),t.stateAfter=r.save(!i),t.styles=a.styles,a.classes?t.styleClasses=a.classes:t.styleClasses&&(t.styleClasses=null),n===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))}return t.styles}function wn(e,t,n){var r=e.doc,i=e.display;if(!r.mode.startState)return new Jt(r,!0,t);var a=Tc(e,t,n),l=a>r.first&&Ae(r,a-1).stateAfter,u=l?Jt.fromSaved(r,l,a):new Jt(r,Gr(r.mode),a);return r.iter(a,t,function(f){ro(e,f.text,u);var m=u.line;f.stateAfter=m==t-1||m%5==0||m>=i.viewFrom&&mt.start)return a}throw new Error("Mode "+e.name+" failed to advance stream.")}var ha=function(e,t,n){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=n};function ga(e,t,n,r){var i=e.doc,a=i.mode,l;t=Re(i,t);var u=Ae(i,t.line),f=wn(e,t.line,n),m=new at(u.text,e.options.tabSize,f),A;for(r&&(A=[]);(r||m.pose.options.maxHighlightLength?(u=!1,l&&ro(e,t,r,A.pos),A.pos=t.length,P=null):P=ma(no(n,A,r.state,J),a),J){var Y=J[0].name;Y&&(P="m-"+(P?Y+" "+P:Y))}if(!u||m!=P){for(;fl;--u){if(u<=a.first)return a.first;var f=Ae(a,u-1),m=f.stateAfter;if(m&&(!n||u+(m instanceof ri?m.lookAhead:0)<=a.modeFrontier))return u;var A=Oe(f.text,null,e.options.tabSize);(i==null||r>A)&&(i=u-1,r=A)}return i}function Lc(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontiern;r--){var i=Ae(e,r).stateAfter;if(i&&(!(i instanceof ri)||r+i.lookAhead=t:a.to>t);(r||(r=[])).push(new ni(l,a.from,f?null:a.to))}}return r}function Dc(e,t,n){var r;if(e)for(var i=0;i=t:a.to>t);if(u||a.from==t&&l.type=="bookmark"&&(!n||a.marker.insertLeft)){var f=a.from==null||(l.inclusiveLeft?a.from<=t:a.from0&&u)for(var Ce=0;Ce0)){var A=[f,1],P=ye(m.from,u.from),J=ye(m.to,u.to);(P<0||!l.inclusiveLeft&&!P)&&A.push({from:m.from,to:u.from}),(J>0||!l.inclusiveRight&&!J)&&A.push({from:u.to,to:m.to}),i.splice.apply(i,A),f+=A.length-3}}return i}function xa(e){var t=e.markedSpans;if(t){for(var n=0;nt)&&(!r||oo(r,a.marker)<0)&&(r=a.marker)}return r}function Sa(e,t,n,r,i){var a=Ae(e,t),l=or&&a.markedSpans;if(l)for(var u=0;u=0&&P<=0||A<=0&&P>=0)&&(A<=0&&(f.marker.inclusiveRight&&i.inclusiveLeft?ye(m.to,n)>=0:ye(m.to,n)>0)||A>=0&&(f.marker.inclusiveRight&&i.inclusiveLeft?ye(m.from,r)<=0:ye(m.from,r)<0)))return!0}}}function Zt(e){for(var t;t=wa(e);)e=t.find(-1,!0).line;return e}function Fc(e){for(var t;t=ai(e);)e=t.find(1,!0).line;return e}function Nc(e){for(var t,n;t=ai(e);)e=t.find(1,!0).line,(n||(n=[])).push(e);return n}function ao(e,t){var n=Ae(e,t),r=Zt(n);return n==r?t:k(r)}function Ta(e,t){if(t>e.lastLine())return t;var n=Ae(e,t),r;if(!mr(e,n))return t;for(;r=ai(n);)n=r.find(1,!0).line;return k(n)+1}function mr(e,t){var n=or&&t.markedSpans;if(n){for(var r=void 0,i=0;it.maxLineLength&&(t.maxLineLength=i,t.maxLine=r)})}var Xr=function(e,t,n){this.text=e,_a(this,t),this.height=n?n(this):1};Xr.prototype.lineNo=function(){return k(this)},Wt(Xr);function Oc(e,t,n,r){e.text=t,e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null),e.order!=null&&(e.order=null),xa(e),_a(e,n);var i=r?r(e):1;i!=e.height&&jt(e,i)}function Pc(e){e.parent=null,xa(e)}var jc={},Rc={};function La(e,t){if(!e||/^\s*$/.test(e))return null;var n=t.addModeClass?Rc:jc;return n[e]||(n[e]=e.replace(/\S+/g,"cm-$&"))}function Ca(e,t){var n=K("span",null,null,g?"padding-right: .1px":null),r={pre:K("pre",[n],"CodeMirror-line"),content:n,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:e.getOption("lineWrapping")};t.measure={};for(var i=0;i<=(t.rest?t.rest.length:0);i++){var a=i?t.rest[i-1]:t.line,l=void 0;r.pos=0,r.addToken=Bc,pr(e.display.measure)&&(l=Pe(a,e.doc.direction))&&(r.addToken=Uc(r.addToken,l)),r.map=[];var u=t!=e.display.externalMeasured&&k(a);$c(a,r,da(e,a,u)),a.styleClasses&&(a.styleClasses.bgClass&&(r.bgClass=xe(a.styleClasses.bgClass,r.bgClass||"")),a.styleClasses.textClass&&(r.textClass=xe(a.styleClasses.textClass,r.textClass||""))),r.map.length==0&&r.map.push(0,0,r.content.appendChild(ei(e.display.measure))),i==0?(t.measure.map=r.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(r.map),(t.measure.caches||(t.measure.caches=[])).push({}))}if(g){var f=r.content.lastChild;(/\bcm-tab\b/.test(f.className)||f.querySelector&&f.querySelector(".cm-tab"))&&(r.content.className="cm-tab-wrap-hack")}return it(e,"renderLine",e,t.line,r.pre),r.pre.className&&(r.textClass=xe(r.pre.className,r.textClass||"")),r}function Hc(e){var t=_("span","\u2022","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t.setAttribute("aria-label",t.title),t}function Bc(e,t,n,r,i,a,l){if(t){var u=e.splitSpaces?Wc(t,e.trailingSpace):t,f=e.cm.state.specialChars,m=!1,A;if(!f.test(t))e.col+=t.length,A=document.createTextNode(u),e.map.push(e.pos,e.pos+t.length,A),s&&p<9&&(m=!0),e.pos+=t.length;else{A=document.createDocumentFragment();for(var P=0;;){f.lastIndex=P;var J=f.exec(t),Y=J?J.index-P:t.length-P;if(Y){var ie=document.createTextNode(u.slice(P,P+Y));s&&p<9?A.appendChild(_("span",[ie])):A.appendChild(ie),e.map.push(e.pos,e.pos+Y,ie),e.col+=Y,e.pos+=Y}if(!J)break;P+=Y+1;var ue=void 0;if(J[0]==" "){var me=e.cm.options.tabSize,ve=me-e.col%me;ue=A.appendChild(_("span",G(ve),"cm-tab")),ue.setAttribute("role","presentation"),ue.setAttribute("cm-text"," "),e.col+=ve}else J[0]=="\r"||J[0]==` +`?(ue=A.appendChild(_("span",J[0]=="\r"?"\u240D":"\u2424","cm-invalidchar")),ue.setAttribute("cm-text",J[0]),e.col+=1):(ue=e.cm.options.specialCharPlaceholder(J[0]),ue.setAttribute("cm-text",J[0]),s&&p<9?A.appendChild(_("span",[ue])):A.appendChild(ue),e.col+=1);e.map.push(e.pos,e.pos+1,ue),e.pos++}}if(e.trailingSpace=u.charCodeAt(t.length-1)==32,n||r||i||m||a||l){var _e=n||"";r&&(_e+=r),i&&(_e+=i);var be=_("span",[A],_e,a);if(l)for(var Ce in l)l.hasOwnProperty(Ce)&&Ce!="style"&&Ce!="class"&&be.setAttribute(Ce,l[Ce]);return e.content.appendChild(be)}e.content.appendChild(A)}}function Wc(e,t){if(e.length>1&&!/ /.test(e))return e;for(var n=t,r="",i=0;im&&P.from<=m));J++);if(P.to>=A)return e(n,r,i,a,l,u,f);e(n,r.slice(0,P.to-m),i,a,null,u,f),a=null,r=r.slice(P.to-m),m=P.to}}}function Ea(e,t,n,r){var i=!r&&n.widgetNode;i&&e.map.push(e.pos,e.pos+t,i),!r&&e.cm.display.input.needsContentAttribute&&(i||(i=e.content.appendChild(document.createElement("span"))),i.setAttribute("cm-marker",n.id)),i&&(e.cm.display.input.setUneditable(i),e.content.appendChild(i)),e.pos+=t,e.trailingSpace=!1}function $c(e,t,n){var r=e.markedSpans,i=e.text,a=0;if(!r){for(var l=1;lf||$e.collapsed&&Ie.to==f&&Ie.from==f)){if(Ie.to!=null&&Ie.to!=f&&Y>Ie.to&&(Y=Ie.to,ue=""),$e.className&&(ie+=" "+$e.className),$e.css&&(J=(J?J+";":"")+$e.css),$e.startStyle&&Ie.from==f&&(me+=" "+$e.startStyle),$e.endStyle&&Ie.to==Y&&(Ce||(Ce=[])).push($e.endStyle,Ie.to),$e.title&&((_e||(_e={})).title=$e.title),$e.attributes)for(var Ve in $e.attributes)(_e||(_e={}))[Ve]=$e.attributes[Ve];$e.collapsed&&(!ve||oo(ve.marker,$e)<0)&&(ve=Ie)}else Ie.from>f&&Y>Ie.from&&(Y=Ie.from)}if(Ce)for(var vt=0;vt=u)break;for(var Ot=Math.min(u,Y);;){if(A){var At=f+A.length;if(!ve){var ut=At>Ot?A.slice(0,Ot-f):A;t.addToken(t,ut,P?P+ie:ie,me,f+ut.length==Y?ue:"",J,_e)}if(At>=Ot){A=A.slice(Ot-f),f=Ot;break}f=At,me=""}A=i.slice(a,a=n[m++]),P=La(n[m++],t.cm.options)}}}function za(e,t,n){this.line=t,this.rest=Nc(t),this.size=this.rest?k(ce(this.rest))-n+1:1,this.node=this.text=null,this.hidden=mr(e,t)}function si(e,t,n){for(var r=[],i,a=t;a2&&a.push((f.bottom+m.top)/2-n.top)}}a.push(n.bottom-n.top)}}function Na(e,t,n){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};if(e.rest){for(var r=0;rn)return{map:e.measure.maps[i],cache:e.measure.caches[i],before:!0}}}function rf(e,t){t=Zt(t);var n=k(t),r=e.display.externalMeasured=new za(e.doc,t,n);r.lineN=n;var i=r.built=Ca(e,r);return r.text=i.pre,V(e.display.lineMeasure,i.pre),r}function Oa(e,t,n,r){return tr(e,Qr(e,t),n,r)}function po(e,t){if(t>=e.display.viewFrom&&t=n.lineN&&tt)&&(a=f-u,i=a-1,t>=f&&(l="right")),i!=null){if(r=e[m+2],u==f&&n==(r.insertLeft?"left":"right")&&(l=n),n=="left"&&i==0)for(;m&&e[m-2]==e[m-3]&&e[m-1].insertLeft;)r=e[(m-=3)+2],l="left";if(n=="right"&&i==f-u)for(;m=0&&(n=e[i]).left==n.right;i--);return n}function of(e,t,n,r){var i=ja(t.map,n,r),a=i.node,l=i.start,u=i.end,f=i.collapse,m;if(a.nodeType==3){for(var A=0;A<4;A++){for(;l&&W(t.line.text.charAt(i.coverStart+l));)--l;for(;i.coverStart+u0&&(f=r="right");var P;e.options.lineWrapping&&(P=a.getClientRects()).length>1?m=P[r=="right"?P.length-1:0]:m=a.getBoundingClientRect()}if(s&&p<9&&!l&&(!m||!m.left&&!m.right)){var J=a.parentNode.getClientRects()[0];J?m={left:J.left,right:J.left+Jr(e.display),top:J.top,bottom:J.bottom}:m=Pa}for(var Y=m.top-t.rect.top,ie=m.bottom-t.rect.top,ue=(Y+ie)/2,me=t.view.measure.heights,ve=0;ve=r.text.length?(f=r.text.length,m="before"):f<=0&&(f=0,m="after"),!u)return l(m=="before"?f-1:f,m=="before");function A(ie,ue,me){var ve=u[ue],_e=ve.level==1;return l(me?ie-1:ie,_e!=me)}var P=Pt(u,f,m),J=dt,Y=A(f,P,m=="before");return J!=null&&(Y.other=A(f,J,m!="before")),Y}function $a(e,t){var n=0;t=Re(e.doc,t),e.options.lineWrapping||(n=Jr(e.display)*t.ch);var r=Ae(e.doc,t.line),i=ar(r)+ui(e.display);return{left:n,right:n,top:i,bottom:i+r.height}}function go(e,t,n,r,i){var a=ne(e,t,n);return a.xRel=i,r&&(a.outside=r),a}function mo(e,t,n){var r=e.doc;if(n+=e.display.viewOffset,n<0)return go(r.first,0,null,-1,-1);var i=O(r,n),a=r.first+r.size-1;if(i>a)return go(r.first+r.size-1,Ae(r,a).text.length,null,1,1);t<0&&(t=0);for(var l=Ae(r,i);;){var u=lf(e,l,i,t,n),f=Ic(l,u.ch+(u.xRel>0||u.outside>0?1:0));if(!f)return u;var m=f.find(1);if(m.line==i)return m;l=Ae(r,i=m.line)}}function Ka(e,t,n,r){r-=ho(t);var i=t.text.length,a=De(function(l){return tr(e,n,l-1).bottom<=r},i,0);return i=De(function(l){return tr(e,n,l).top>r},a,i),{begin:a,end:i}}function Ga(e,t,n,r){n||(n=Qr(e,t));var i=ci(e,t,tr(e,n,r),"line").top;return Ka(e,t,n,i)}function vo(e,t,n,r){return e.bottom<=n?!1:e.top>n?!0:(r?e.left:e.right)>t}function lf(e,t,n,r,i){i-=ar(t);var a=Qr(e,t),l=ho(t),u=0,f=t.text.length,m=!0,A=Pe(t,e.doc.direction);if(A){var P=(e.options.lineWrapping?uf:sf)(e,t,n,a,A,r,i);m=P.level!=1,u=m?P.from:P.to-1,f=m?P.to:P.from-1}var J=null,Y=null,ie=De(function(Ne){var Ie=tr(e,a,Ne);return Ie.top+=l,Ie.bottom+=l,vo(Ie,r,i,!1)?(Ie.top<=i&&Ie.left<=r&&(J=Ne,Y=Ie),!0):!1},u,f),ue,me,ve=!1;if(Y){var _e=r-Y.left=Ce.bottom?1:0}return ie=se(t.text,ie,1),go(n,ie,me,ve,r-ue)}function sf(e,t,n,r,i,a,l){var u=De(function(P){var J=i[P],Y=J.level!=1;return vo(Xt(e,ne(n,Y?J.to:J.from,Y?"before":"after"),"line",t,r),a,l,!0)},0,i.length-1),f=i[u];if(u>0){var m=f.level!=1,A=Xt(e,ne(n,m?f.from:f.to,m?"after":"before"),"line",t,r);vo(A,a,l,!0)&&A.top>l&&(f=i[u-1])}return f}function uf(e,t,n,r,i,a,l){var u=Ka(e,t,r,l),f=u.begin,m=u.end;/\s/.test(t.text.charAt(m-1))&&m--;for(var A=null,P=null,J=0;J=m||Y.to<=f)){var ie=Y.level!=1,ue=tr(e,r,ie?Math.min(m,Y.to)-1:Math.max(f,Y.from)).right,me=ueme)&&(A=Y,P=me)}}return A||(A=i[i.length-1]),A.fromm&&(A={from:A.from,to:m,level:A.level}),A}var zr;function Vr(e){if(e.cachedTextHeight!=null)return e.cachedTextHeight;if(zr==null){zr=_("pre",null,"CodeMirror-line-like");for(var t=0;t<49;++t)zr.appendChild(document.createTextNode("x")),zr.appendChild(_("br"));zr.appendChild(document.createTextNode("x"))}V(e.measure,zr);var n=zr.offsetHeight/50;return n>3&&(e.cachedTextHeight=n),j(e.measure),n||1}function Jr(e){if(e.cachedCharWidth!=null)return e.cachedCharWidth;var t=_("span","xxxxxxxxxx"),n=_("pre",[t],"CodeMirror-line-like");V(e.measure,n);var r=t.getBoundingClientRect(),i=(r.right-r.left)/10;return i>2&&(e.cachedCharWidth=i),i||10}function bo(e){for(var t=e.display,n={},r={},i=t.gutters.clientLeft,a=t.gutters.firstChild,l=0;a;a=a.nextSibling,++l){var u=e.display.gutterSpecs[l].className;n[u]=a.offsetLeft+a.clientLeft+i,r[u]=a.clientWidth}return{fixedPos:yo(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:n,gutterWidth:r,wrapperWidth:t.wrapper.clientWidth}}function yo(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function Za(e){var t=Vr(e.display),n=e.options.lineWrapping,r=n&&Math.max(5,e.display.scroller.clientWidth/Jr(e.display)-3);return function(i){if(mr(e.doc,i))return 0;var a=0;if(i.widgets)for(var l=0;l0&&(m=Ae(e.doc,f.line).text).length==f.ch){var A=Oe(m,m.length,e.options.tabSize)-m.length;f=ne(f.line,Math.max(0,Math.round((a-Fa(e.display).left)/Jr(e.display))-A))}return f}function Ar(e,t){if(t>=e.display.viewTo||(t-=e.display.viewFrom,t<0))return null;for(var n=e.display.view,r=0;rt)&&(i.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=i.viewTo)or&&ao(e.doc,t)i.viewFrom?br(e):(i.viewFrom+=r,i.viewTo+=r);else if(t<=i.viewFrom&&n>=i.viewTo)br(e);else if(t<=i.viewFrom){var a=di(e,n,n+r,1);a?(i.view=i.view.slice(a.index),i.viewFrom=a.lineN,i.viewTo+=r):br(e)}else if(n>=i.viewTo){var l=di(e,t,t,-1);l?(i.view=i.view.slice(0,l.index),i.viewTo=l.lineN):br(e)}else{var u=di(e,t,t,-1),f=di(e,n,n+r,1);u&&f?(i.view=i.view.slice(0,u.index).concat(si(e,u.lineN,f.lineN)).concat(i.view.slice(f.index)),i.viewTo+=r):br(e)}var m=i.externalMeasured;m&&(n=i.lineN&&t=r.viewTo)){var a=r.view[Ar(e,t)];if(a.node!=null){var l=a.changes||(a.changes=[]);Se(l,n)==-1&&l.push(n)}}}function br(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function di(e,t,n,r){var i=Ar(e,t),a,l=e.display.view;if(!or||n==e.doc.first+e.doc.size)return{index:i,lineN:n};for(var u=e.display.viewFrom,f=0;f0){if(i==l.length-1)return null;a=u+l[i].size-t,i++}else a=u-t;t+=a,n+=a}for(;ao(e.doc,n)!=n;){if(i==(r<0?0:l.length-1))return null;n+=r*l[i-(r<0?1:0)].size,i+=r}return{index:i,lineN:n}}function cf(e,t,n){var r=e.display,i=r.view;i.length==0||t>=r.viewTo||n<=r.viewFrom?(r.view=si(e,t,n),r.viewFrom=t):(r.viewFrom>t?r.view=si(e,t,r.viewFrom).concat(r.view):r.viewFromn&&(r.view=r.view.slice(0,Ar(e,n)))),r.viewTo=n}function Xa(e){for(var t=e.display.view,n=0,r=0;r=e.display.viewTo||f.to().line0?l:e.defaultCharWidth())+"px"}if(r.other){var u=n.appendChild(_("div","\xA0","CodeMirror-cursor CodeMirror-secondarycursor"));u.style.display="",u.style.left=r.other.left+"px",u.style.top=r.other.top+"px",u.style.height=(r.other.bottom-r.other.top)*.85+"px"}}function pi(e,t){return e.top-t.top||e.left-t.left}function ff(e,t,n){var r=e.display,i=e.doc,a=document.createDocumentFragment(),l=Fa(e.display),u=l.left,f=Math.max(r.sizerWidth,Er(e)-r.sizer.offsetLeft)-l.right,m=i.direction=="ltr";function A(be,Ce,Ne,Ie){Ce<0&&(Ce=0),Ce=Math.round(Ce),Ie=Math.round(Ie),a.appendChild(_("div",null,"CodeMirror-selected","position: absolute; left: "+be+`px; + top: `+Ce+"px; width: "+(Ne??f-be)+`px; + height: `+(Ie-Ce)+"px"))}function P(be,Ce,Ne){var Ie=Ae(i,be),$e=Ie.text.length,Ve,vt;function rt(ut,Dt){return fi(e,ne(be,ut),"div",Ie,Dt)}function Ot(ut,Dt,yt){var ft=Ga(e,Ie,null,ut),ct=Dt=="ltr"==(yt=="after")?"left":"right",lt=yt=="after"?ft.begin:ft.end-(/\s/.test(Ie.text.charAt(ft.end-1))?2:1);return rt(lt,ct)[ct]}var At=Pe(Ie,i.direction);return nt(At,Ce||0,Ne??$e,function(ut,Dt,yt,ft){var ct=yt=="ltr",lt=rt(ut,ct?"left":"right"),qt=rt(Dt-1,ct?"right":"left"),pn=Ce==null&&ut==0,Sr=Ne==null&&Dt==$e,St=ft==0,rr=!At||ft==At.length-1;if(qt.top-lt.top<=3){var bt=(m?pn:Sr)&&St,Zo=(m?Sr:pn)&&rr,cr=bt?u:(ct?lt:qt).left,Nr=Zo?f:(ct?qt:lt).right;A(cr,lt.top,Nr-cr,lt.bottom)}else{var Or,Lt,hn,Xo;ct?(Or=m&&pn&&St?u:lt.left,Lt=m?f:Ot(ut,yt,"before"),hn=m?u:Ot(Dt,yt,"after"),Xo=m&&Sr&&rr?f:qt.right):(Or=m?Ot(ut,yt,"before"):u,Lt=!m&&pn&&St?f:lt.right,hn=!m&&Sr&&rr?u:qt.left,Xo=m?Ot(Dt,yt,"after"):f),A(Or,lt.top,Lt-Or,lt.bottom),lt.bottom0?t.blinker=setInterval(function(){e.hasFocus()||en(e),t.cursorDiv.style.visibility=(n=!n)?"":"hidden"},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}}function Qa(e){e.hasFocus()||(e.display.input.focus(),e.state.focused||So(e))}function wo(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,e.state.focused&&en(e))},100)}function So(e,t){e.state.delayingBlurEvent&&!e.state.draggingText&&(e.state.delayingBlurEvent=!1),e.options.readOnly!="nocursor"&&(e.state.focused||(it(e,"focus",e,t),e.state.focused=!0,le(e.display.wrapper,"CodeMirror-focused"),!e.curOp&&e.display.selForContextMenu!=e.doc.sel&&(e.display.input.reset(),g&&setTimeout(function(){return e.display.input.reset(!0)},20)),e.display.input.receivedFocus()),ko(e))}function en(e,t){e.state.delayingBlurEvent||(e.state.focused&&(it(e,"blur",e,t),e.state.focused=!1,Q(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150))}function hi(e){for(var t=e.display,n=t.lineDiv.offsetTop,r=Math.max(0,t.scroller.getBoundingClientRect().top),i=t.lineDiv.getBoundingClientRect().top,a=0,l=0;l.005||Y<-.005)&&(ie.display.sizerWidth){var ue=Math.ceil(A/Jr(e.display));ue>e.display.maxLineLength&&(e.display.maxLineLength=ue,e.display.maxLine=u.line,e.display.maxLineChanged=!0)}}}Math.abs(a)>2&&(t.scroller.scrollTop+=a)}function Va(e){if(e.widgets)for(var t=0;t=l&&(a=O(t,ar(Ae(t,f))-e.wrapper.clientHeight),l=f)}return{from:a,to:Math.max(l,a+1)}}function df(e,t){if(!ot(e,"scrollCursorIntoView")){var n=e.display,r=n.sizer.getBoundingClientRect(),i=null,a=n.wrapper.ownerDocument;if(t.top+r.top<0?i=!0:t.bottom+r.top>(a.defaultView.innerHeight||a.documentElement.clientHeight)&&(i=!1),i!=null&&!z){var l=_("div","\u200B",null,`position: absolute; + top: `+(t.top-n.viewOffset-ui(e.display))+`px; + height: `+(t.bottom-t.top+er(e)+n.barHeight)+`px; + left: `+t.left+"px; width: "+Math.max(2,t.right-t.left)+"px;");e.display.lineSpace.appendChild(l),l.scrollIntoView(i),e.display.lineSpace.removeChild(l)}}}function pf(e,t,n,r){r==null&&(r=0);var i;!e.options.lineWrapping&&t==n&&(n=t.sticky=="before"?ne(t.line,t.ch+1,"before"):t,t=t.ch?ne(t.line,t.sticky=="before"?t.ch-1:t.ch,"after"):t);for(var a=0;a<5;a++){var l=!1,u=Xt(e,t),f=!n||n==t?u:Xt(e,n);i={left:Math.min(u.left,f.left),top:Math.min(u.top,f.top)-r,right:Math.max(u.left,f.left),bottom:Math.max(u.bottom,f.bottom)+r};var m=To(e,i),A=e.doc.scrollTop,P=e.doc.scrollLeft;if(m.scrollTop!=null&&(An(e,m.scrollTop),Math.abs(e.doc.scrollTop-A)>1&&(l=!0)),m.scrollLeft!=null&&(Dr(e,m.scrollLeft),Math.abs(e.doc.scrollLeft-P)>1&&(l=!0)),!l)break}return i}function hf(e,t){var n=To(e,t);n.scrollTop!=null&&An(e,n.scrollTop),n.scrollLeft!=null&&Dr(e,n.scrollLeft)}function To(e,t){var n=e.display,r=Vr(e.display);t.top<0&&(t.top=0);var i=e.curOp&&e.curOp.scrollTop!=null?e.curOp.scrollTop:n.scroller.scrollTop,a=fo(e),l={};t.bottom-t.top>a&&(t.bottom=t.top+a);var u=e.doc.height+co(n),f=t.topu-r;if(t.topi+a){var A=Math.min(t.top,(m?u:t.bottom)-a);A!=i&&(l.scrollTop=A)}var P=e.options.fixedGutter?0:n.gutters.offsetWidth,J=e.curOp&&e.curOp.scrollLeft!=null?e.curOp.scrollLeft:n.scroller.scrollLeft-P,Y=Er(e)-n.gutters.offsetWidth,ie=t.right-t.left>Y;return ie&&(t.right=t.left+Y),t.left<10?l.scrollLeft=0:t.leftY+J-3&&(l.scrollLeft=t.right+(ie?0:10)-Y),l}function Lo(e,t){t!=null&&(mi(e),e.curOp.scrollTop=(e.curOp.scrollTop==null?e.doc.scrollTop:e.curOp.scrollTop)+t)}function tn(e){mi(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function Mn(e,t,n){(t!=null||n!=null)&&mi(e),t!=null&&(e.curOp.scrollLeft=t),n!=null&&(e.curOp.scrollTop=n)}function gf(e,t){mi(e),e.curOp.scrollToPos=t}function mi(e){var t=e.curOp.scrollToPos;if(t){e.curOp.scrollToPos=null;var n=$a(e,t.from),r=$a(e,t.to);Ja(e,n,r,t.margin)}}function Ja(e,t,n,r){var i=To(e,{left:Math.min(t.left,n.left),top:Math.min(t.top,n.top)-r,right:Math.max(t.right,n.right),bottom:Math.max(t.bottom,n.bottom)+r});Mn(e,i.scrollLeft,i.scrollTop)}function An(e,t){Math.abs(e.doc.scrollTop-t)<2||(v||Eo(e,{top:t}),el(e,t,!0),v&&Eo(e),In(e,100))}function el(e,t,n){t=Math.max(0,Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t)),!(e.display.scroller.scrollTop==t&&!n)&&(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function Dr(e,t,n,r){t=Math.max(0,Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth)),!((n?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)&&!r)&&(e.doc.scrollLeft=t,ol(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function Dn(e){var t=e.display,n=t.gutters.offsetWidth,r=Math.round(e.doc.height+co(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?n:0,docHeight:r,scrollHeight:r+er(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:n}}var qr=function(e,t,n){this.cm=n;var r=this.vert=_("div",[_("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),i=this.horiz=_("div",[_("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");r.tabIndex=i.tabIndex=-1,e(r),e(i),Fe(r,"scroll",function(){r.clientHeight&&t(r.scrollTop,"vertical")}),Fe(i,"scroll",function(){i.clientWidth&&t(i.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,s&&p<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};qr.prototype.update=function(e){var t=e.scrollWidth>e.clientWidth+1,n=e.scrollHeight>e.clientHeight+1,r=e.nativeBarWidth;if(n){this.vert.style.display="block",this.vert.style.bottom=t?r+"px":"0";var i=e.viewHeight-(t?r:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+i)+"px"}else this.vert.scrollTop=0,this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=n?r+"px":"0",this.horiz.style.left=e.barLeft+"px";var a=e.viewWidth-e.barLeft-(n?r:0);this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+a)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&e.clientHeight>0&&(r==0&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:n?r:0,bottom:t?r:0}},qr.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},qr.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},qr.prototype.zeroWidthHack=function(){var e=H&&!E?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.visibility=this.vert.style.visibility="hidden",this.disableHoriz=new qe,this.disableVert=new qe},qr.prototype.enableZeroWidthBar=function(e,t,n){e.style.visibility="";function r(){var i=e.getBoundingClientRect(),a=n=="vert"?document.elementFromPoint(i.right-1,(i.top+i.bottom)/2):document.elementFromPoint((i.right+i.left)/2,i.bottom-1);a!=e?e.style.visibility="hidden":t.set(1e3,r)}t.set(1e3,r)},qr.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};var qn=function(){};qn.prototype.update=function(){return{bottom:0,right:0}},qn.prototype.setScrollLeft=function(){},qn.prototype.setScrollTop=function(){},qn.prototype.clear=function(){};function rn(e,t){t||(t=Dn(e));var n=e.display.barWidth,r=e.display.barHeight;tl(e,t);for(var i=0;i<4&&n!=e.display.barWidth||r!=e.display.barHeight;i++)n!=e.display.barWidth&&e.options.lineWrapping&&hi(e),tl(e,Dn(e)),n=e.display.barWidth,r=e.display.barHeight}function tl(e,t){var n=e.display,r=n.scrollbars.update(t);n.sizer.style.paddingRight=(n.barWidth=r.right)+"px",n.sizer.style.paddingBottom=(n.barHeight=r.bottom)+"px",n.heightForcer.style.borderBottom=r.bottom+"px solid transparent",r.right&&r.bottom?(n.scrollbarFiller.style.display="block",n.scrollbarFiller.style.height=r.bottom+"px",n.scrollbarFiller.style.width=r.right+"px"):n.scrollbarFiller.style.display="",r.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(n.gutterFiller.style.display="block",n.gutterFiller.style.height=r.bottom+"px",n.gutterFiller.style.width=t.gutterWidth+"px"):n.gutterFiller.style.display=""}var rl={native:qr,null:qn};function nl(e){e.display.scrollbars&&(e.display.scrollbars.clear(),e.display.scrollbars.addClass&&Q(e.display.wrapper,e.display.scrollbars.addClass)),e.display.scrollbars=new rl[e.options.scrollbarStyle](function(t){e.display.wrapper.insertBefore(t,e.display.scrollbarFiller),Fe(t,"mousedown",function(){e.state.focused&&setTimeout(function(){return e.display.input.focus()},0)}),t.setAttribute("cm-not-content","true")},function(t,n){n=="horizontal"?Dr(e,t):An(e,t)},e),e.display.scrollbars.addClass&&le(e.display.wrapper,e.display.scrollbars.addClass)}var mf=0;function Ir(e){e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++mf,markArrays:null},Kc(e.curOp)}function Fr(e){var t=e.curOp;t&&Zc(t,function(n){for(var r=0;r=n.viewTo)||n.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new vi(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function yf(e){e.updatedDisplay=e.mustUpdate&&Co(e.cm,e.update)}function xf(e){var t=e.cm,n=t.display;e.updatedDisplay&&hi(t),e.barMeasure=Dn(t),n.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=Oa(t,n.maxLine,n.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(n.scroller.clientWidth,n.sizer.offsetLeft+e.adjustWidthTo+er(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,n.sizer.offsetLeft+e.adjustWidthTo-Er(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=n.input.prepareSelection())}function _f(e){var t=e.cm;e.adjustWidthTo!=null&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft=e.display.viewTo)){var n=+new Date+e.options.workTime,r=wn(e,t.highlightFrontier),i=[];t.iter(r.line,Math.min(t.first+t.size,e.display.viewTo+500),function(a){if(r.line>=e.display.viewFrom){var l=a.styles,u=a.text.length>e.options.maxHighlightLength?Vt(t.mode,r.state):null,f=fa(e,a,r,!0);u&&(r.state=u),a.styles=f.styles;var m=a.styleClasses,A=f.classes;A?a.styleClasses=A:m&&(a.styleClasses=null);for(var P=!l||l.length!=a.styles.length||m!=A&&(!m||!A||m.bgClass!=A.bgClass||m.textClass!=A.textClass),J=0;!P&&Jn)return In(e,e.options.workDelay),!0}),t.highlightFrontier=r.line,t.modeFrontier=Math.max(t.modeFrontier,r.line),i.length&&Nt(e,function(){for(var a=0;a=n.viewFrom&&t.visible.to<=n.viewTo&&(n.updateLineNumbers==null||n.updateLineNumbers>=n.viewTo)&&n.renderedView==n.view&&Xa(e)==0)return!1;al(e)&&(br(e),t.dims=bo(e));var i=r.first+r.size,a=Math.max(t.visible.from-e.options.viewportMargin,r.first),l=Math.min(i,t.visible.to+e.options.viewportMargin);n.viewFroml&&n.viewTo-l<20&&(l=Math.min(i,n.viewTo)),or&&(a=ao(e.doc,a),l=Ta(e.doc,l));var u=a!=n.viewFrom||l!=n.viewTo||n.lastWrapHeight!=t.wrapperHeight||n.lastWrapWidth!=t.wrapperWidth;cf(e,a,l),n.viewOffset=ar(Ae(e.doc,n.viewFrom)),e.display.mover.style.top=n.viewOffset+"px";var f=Xa(e);if(!u&&f==0&&!t.force&&n.renderedView==n.view&&(n.updateLineNumbers==null||n.updateLineNumbers>=n.viewTo))return!1;var m=Tf(e);return f>4&&(n.lineDiv.style.display="none"),Cf(e,n.updateLineNumbers,t.dims),f>4&&(n.lineDiv.style.display=""),n.renderedView=n.view,Lf(m),j(n.cursorDiv),j(n.selectionDiv),n.gutters.style.height=n.sizer.style.minHeight=0,u&&(n.lastWrapHeight=t.wrapperHeight,n.lastWrapWidth=t.wrapperWidth,In(e,400)),n.updateLineNumbers=null,!0}function il(e,t){for(var n=t.viewport,r=!0;;r=!1){if(!r||!e.options.lineWrapping||t.oldDisplayWidth==Er(e)){if(n&&n.top!=null&&(n={top:Math.min(e.doc.height+co(e.display)-fo(e),n.top)}),t.visible=gi(e.display,e.doc,n),t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)break}else r&&(t.visible=gi(e.display,e.doc,n));if(!Co(e,t))break;hi(e);var i=Dn(e);zn(e),rn(e,i),Mo(e,i),t.force=!1}t.signal(e,"update",e),(e.display.viewFrom!=e.display.reportedViewFrom||e.display.viewTo!=e.display.reportedViewTo)&&(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function Eo(e,t){var n=new vi(e,t);if(Co(e,n)){hi(e),il(e,n);var r=Dn(e);zn(e),rn(e,r),Mo(e,r),n.finish()}}function Cf(e,t,n){var r=e.display,i=e.options.lineNumbers,a=r.lineDiv,l=a.firstChild;function u(ie){var ue=ie.nextSibling;return g&&H&&e.display.currentWheelTarget==ie?ie.style.display="none":ie.parentNode.removeChild(ie),ue}for(var f=r.view,m=r.viewFrom,A=0;A-1&&(Y=!1),Ma(e,P,m,n)),Y&&(j(P.lineNumber),P.lineNumber.appendChild(document.createTextNode(he(e.options,m)))),l=P.node.nextSibling}m+=P.size}for(;l;)l=u(l)}function zo(e){var t=e.gutters.offsetWidth;e.sizer.style.marginLeft=t+"px",ht(e,"gutterChanged",e)}function Mo(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+er(e)+"px"}function ol(e){var t=e.display,n=t.view;if(!(!t.alignWidgets&&(!t.gutters.firstChild||!e.options.fixedGutter))){for(var r=yo(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,a=r+"px",l=0;l=105&&(i.wrapper.style.clipPath="inset(0px)"),i.wrapper.setAttribute("translate","no"),s&&p<8&&(i.gutters.style.zIndex=-1,i.scroller.style.paddingRight=0),!g&&!(v&&M)&&(i.scroller.draggable=!0),e&&(e.appendChild?e.appendChild(i.wrapper):e(i.wrapper)),i.viewFrom=i.viewTo=t.first,i.reportedViewFrom=i.reportedViewTo=t.first,i.view=[],i.renderedView=null,i.externalMeasured=null,i.viewOffset=0,i.lastWrapHeight=i.lastWrapWidth=0,i.updateLineNumbers=null,i.nativeBarWidth=i.barHeight=i.barWidth=0,i.scrollbarsClipped=!1,i.lineNumWidth=i.lineNumInnerWidth=i.lineNumChars=null,i.alignWidgets=!1,i.cachedCharWidth=i.cachedTextHeight=i.cachedPaddingH=null,i.maxLine=null,i.maxLineLength=0,i.maxLineChanged=!1,i.wheelDX=i.wheelDY=i.wheelStartX=i.wheelStartY=null,i.shift=!1,i.selForContextMenu=null,i.activeTouch=null,i.gutterSpecs=Ao(r.gutters,r.lineNumbers),ll(i),n.init(i)}var bi=0,sr=null;s?sr=-.53:v?sr=15:x?sr=-.7:w&&(sr=-1/3);function sl(e){var t=e.wheelDeltaX,n=e.wheelDeltaY;return t==null&&e.detail&&e.axis==e.HORIZONTAL_AXIS&&(t=e.detail),n==null&&e.detail&&e.axis==e.VERTICAL_AXIS?n=e.detail:n==null&&(n=e.wheelDelta),{x:t,y:n}}function zf(e){var t=sl(e);return t.x*=sr,t.y*=sr,t}function ul(e,t){x&&c==102&&(e.display.chromeScrollHack==null?e.display.sizer.style.pointerEvents="none":clearTimeout(e.display.chromeScrollHack),e.display.chromeScrollHack=setTimeout(function(){e.display.chromeScrollHack=null,e.display.sizer.style.pointerEvents=""},100));var n=sl(t),r=n.x,i=n.y,a=sr;t.deltaMode===0&&(r=t.deltaX,i=t.deltaY,a=1);var l=e.display,u=l.scroller,f=u.scrollWidth>u.clientWidth,m=u.scrollHeight>u.clientHeight;if(r&&f||i&&m){if(i&&H&&g){e:for(var A=t.target,P=l.view;A!=u;A=A.parentNode)for(var J=0;J=0&&ye(e,r.to())<=0)return n}return-1};var Ye=function(e,t){this.anchor=e,this.head=t};Ye.prototype.from=function(){return Zr(this.anchor,this.head)},Ye.prototype.to=function(){return Et(this.anchor,this.head)},Ye.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch};function Yt(e,t,n){var r=e&&e.options.selectionsMayTouch,i=t[n];t.sort(function(J,Y){return ye(J.from(),Y.from())}),n=Se(t,i);for(var a=1;a0:f>=0){var m=Zr(u.from(),l.from()),A=Et(u.to(),l.to()),P=u.empty()?l.from()==l.head:u.from()==u.head;a<=n&&--n,t.splice(--a,2,new Ye(P?A:m,P?m:A))}}return new Rt(t,n)}function yr(e,t){return new Rt([new Ye(e,t||e)],0)}function xr(e){return e.text?ne(e.from.line+e.text.length-1,ce(e.text).length+(e.text.length==1?e.from.ch:0)):e.to}function cl(e,t){if(ye(e,t.from)<0)return e;if(ye(e,t.to)<=0)return xr(t);var n=e.line+t.text.length-(t.to.line-t.from.line)-1,r=e.ch;return e.line==t.to.line&&(r+=xr(t).ch-t.to.ch),ne(n,r)}function Do(e,t){for(var n=[],r=0;r1&&e.remove(u.line+1,ie-1),e.insert(u.line+1,ve)}ht(e,"change",e,t)}function _r(e,t,n){function r(i,a,l){if(i.linked)for(var u=0;u1&&!e.done[e.done.length-2].ranges)return e.done.pop(),ce(e.done)}function ml(e,t,n,r){var i=e.history;i.undone.length=0;var a=+new Date,l,u;if((i.lastOp==r||i.lastOrigin==t.origin&&t.origin&&(t.origin.charAt(0)=="+"&&i.lastModTime>a-(e.cm?e.cm.options.historyEventDelay:500)||t.origin.charAt(0)=="*"))&&(l=Df(i,i.lastOp==r)))u=ce(l.changes),ye(t.from,t.to)==0&&ye(t.from,u.to)==0?u.to=xr(t):l.changes.push(Fo(e,t));else{var f=ce(i.done);for((!f||!f.ranges)&&xi(e.sel,i.done),l={changes:[Fo(e,t)],generation:i.generation},i.done.push(l);i.done.length>i.undoDepth;)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(n),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=a,i.lastOp=i.lastSelOp=r,i.lastOrigin=i.lastSelOrigin=t.origin,u||it(e,"historyAdded")}function qf(e,t,n,r){var i=t.charAt(0);return i=="*"||i=="+"&&n.ranges.length==r.ranges.length&&n.somethingSelected()==r.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)}function If(e,t,n,r){var i=e.history,a=r&&r.origin;n==i.lastSelOp||a&&i.lastSelOrigin==a&&(i.lastModTime==i.lastSelTime&&i.lastOrigin==a||qf(e,a,ce(i.done),t))?i.done[i.done.length-1]=t:xi(t,i.done),i.lastSelTime=+new Date,i.lastSelOrigin=a,i.lastSelOp=n,r&&r.clearRedo!==!1&&gl(i.undone)}function xi(e,t){var n=ce(t);n&&n.ranges&&n.equals(e)||t.push(e)}function vl(e,t,n,r){var i=t["spans_"+e.id],a=0;e.iter(Math.max(e.first,n),Math.min(e.first+e.size,r),function(l){l.markedSpans&&((i||(i=t["spans_"+e.id]={}))[a]=l.markedSpans),++a})}function Ff(e){if(!e)return null;for(var t,n=0;n-1&&(ce(u)[P]=m[P],delete m[P])}}return r}function No(e,t,n,r){if(r){var i=e.anchor;if(n){var a=ye(t,i)<0;a!=ye(n,i)<0?(i=t,t=n):a!=ye(t,n)<0&&(t=n)}return new Ye(i,t)}else return new Ye(n||t,t)}function _i(e,t,n,r,i){i==null&&(i=e.cm&&(e.cm.display.shift||e.extend)),wt(e,new Rt([No(e.sel.primary(),t,n,i)],0),r)}function yl(e,t,n){for(var r=[],i=e.cm&&(e.cm.display.shift||e.extend),a=0;a=t.ch:u.to>t.ch))){if(i&&(it(f,"beforeCursorEnter"),f.explicitlyCleared))if(a.markedSpans){--l;continue}else break;if(!f.atomic)continue;if(n){var P=f.find(r<0?1:-1),J=void 0;if((r<0?A:m)&&(P=Tl(e,P,-r,P&&P.line==t.line?a:null)),P&&P.line==t.line&&(J=ye(P,n))&&(r<0?J<0:J>0))return on(e,P,t,r,i)}var Y=f.find(r<0?-1:1);return(r<0?m:A)&&(Y=Tl(e,Y,r,Y.line==t.line?a:null)),Y?on(e,Y,t,r,i):null}}return t}function wi(e,t,n,r,i){var a=r||1,l=on(e,t,n,a,i)||!i&&on(e,t,n,a,!0)||on(e,t,n,-a,i)||!i&&on(e,t,n,-a,!0);return l||(e.cantEdit=!0,ne(e.first,0))}function Tl(e,t,n,r){return n<0&&t.ch==0?t.line>e.first?Re(e,ne(t.line-1)):null:n>0&&t.ch==(r||Ae(e,t.line)).text.length?t.line=0;--i)El(e,{from:r[i].from,to:r[i].to,text:i?[""]:t.text,origin:t.origin});else El(e,t)}}function El(e,t){if(!(t.text.length==1&&t.text[0]==""&&ye(t.from,t.to)==0)){var n=Do(e,t);ml(e,t,n,e.cm?e.cm.curOp.id:NaN),On(e,t,n,io(e,t));var r=[];_r(e,function(i,a){!a&&Se(r,i.history)==-1&&(Dl(i.history,t),r.push(i.history)),On(i,t,null,io(i,t))})}}function Si(e,t,n){var r=e.cm&&e.cm.state.suppressEdits;if(!(r&&!n)){for(var i=e.history,a,l=e.sel,u=t=="undo"?i.done:i.undone,f=t=="undo"?i.undone:i.done,m=0;m=0;--Y){var ie=J(Y);if(ie)return ie.v}}}}function zl(e,t){if(t!=0&&(e.first+=t,e.sel=new Rt(Be(e.sel.ranges,function(i){return new Ye(ne(i.anchor.line+t,i.anchor.ch),ne(i.head.line+t,i.head.ch))}),e.sel.primIndex),e.cm)){zt(e.cm,e.first,e.first-t,t);for(var n=e.cm.display,r=n.viewFrom;re.lastLine())){if(t.from.linea&&(t={from:t.from,to:ne(a,Ae(e,a).text.length),text:[t.text[0]],origin:t.origin}),t.removed=ir(e,t.from,t.to),n||(n=Do(e,t)),e.cm?Pf(e.cm,t,r):Io(e,t,r),ki(e,n,ke),e.cantEdit&&wi(e,ne(e.firstLine(),0))&&(e.cantEdit=!1)}}function Pf(e,t,n){var r=e.doc,i=e.display,a=t.from,l=t.to,u=!1,f=a.line;e.options.lineWrapping||(f=k(Zt(Ae(r,a.line))),r.iter(f,l.line+1,function(Y){if(Y==i.maxLine)return u=!0,!0})),r.sel.contains(t.from,t.to)>-1&&Ht(e),Io(r,t,n,Za(e)),e.options.lineWrapping||(r.iter(f,a.line+t.text.length,function(Y){var ie=li(Y);ie>i.maxLineLength&&(i.maxLine=Y,i.maxLineLength=ie,i.maxLineChanged=!0,u=!1)}),u&&(e.curOp.updateMaxLine=!0)),Lc(r,a.line),In(e,400);var m=t.text.length-(l.line-a.line)-1;t.full?zt(e):a.line==l.line&&t.text.length==1&&!dl(e.doc,t)?vr(e,a.line,"text"):zt(e,a.line,l.line+1,m);var A=Ft(e,"changes"),P=Ft(e,"change");if(P||A){var J={from:a,to:l,text:t.text,removed:t.removed,origin:t.origin};P&&ht(e,"change",e,J),A&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(J)}e.display.selForContextMenu=null}function ln(e,t,n,r,i){var a;r||(r=n),ye(r,n)<0&&(a=[r,n],n=a[0],r=a[1]),typeof t=="string"&&(t=e.splitLines(t)),an(e,{from:n,to:r,text:t,origin:i})}function Ml(e,t,n,r){n1||!(this.children[0]instanceof jn))){var u=[];this.collapse(u),this.children=[new jn(u)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t50){for(var l=i.lines.length%25+25,u=l;u10);e.parent.maybeSpill()}},iterN:function(e,t,n){for(var r=0;re.display.maxLineLength&&(e.display.maxLine=m,e.display.maxLineLength=A,e.display.maxLineChanged=!0)}r!=null&&e&&this.collapsed&&zt(e,r,i+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&wl(e.doc)),e&&ht(e,"markerCleared",e,this,r,i),t&&Fr(e),this.parent&&this.parent.clear()}},kr.prototype.find=function(e,t){e==null&&this.type=="bookmark"&&(e=1);for(var n,r,i=0;i0||l==0&&a.clearWhenEmpty!==!1)return a;if(a.replacedWith&&(a.collapsed=!0,a.widgetNode=K("span",[a.replacedWith],"CodeMirror-widget"),r.handleMouseEvents||a.widgetNode.setAttribute("cm-ignore-events","true"),r.insertLeft&&(a.widgetNode.insertLeft=!0)),a.collapsed){if(Sa(e,t.line,t,n,a)||t.line!=n.line&&Sa(e,n.line,t,n,a))throw new Error("Inserting collapsed marker partially overlapping an existing one");Ec()}a.addToHistory&&ml(e,{from:t,to:n,origin:"markText"},e.sel,NaN);var u=t.line,f=e.cm,m;if(e.iter(u,n.line+1,function(P){f&&a.collapsed&&!f.options.lineWrapping&&Zt(P)==f.display.maxLine&&(m=!0),a.collapsed&&u!=t.line&&jt(P,0),Mc(P,new ni(a,u==t.line?t.ch:null,u==n.line?n.ch:null),e.cm&&e.cm.curOp),++u}),a.collapsed&&e.iter(t.line,n.line+1,function(P){mr(e,P)&&jt(P,0)}),a.clearOnEnter&&Fe(a,"beforeCursorEnter",function(){return a.clear()}),a.readOnly&&(Cc(),(e.history.done.length||e.history.undone.length)&&e.clearHistory()),a.collapsed&&(a.id=++Il,a.atomic=!0),f){if(m&&(f.curOp.updateMaxLine=!0),a.collapsed)zt(f,t.line,n.line+1);else if(a.className||a.startStyle||a.endStyle||a.css||a.attributes||a.title)for(var A=t.line;A<=n.line;A++)vr(f,A,"text");a.atomic&&wl(f.doc),ht(f,"markerAdded",f,a)}return a}var Bn=function(e,t){this.markers=e,this.primary=t;for(var n=0;n=0;f--)an(this,r[f]);u?_l(this,u):this.cm&&tn(this.cm)}),undo:mt(function(){Si(this,"undo")}),redo:mt(function(){Si(this,"redo")}),undoSelection:mt(function(){Si(this,"undo",!0)}),redoSelection:mt(function(){Si(this,"redo",!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,n=0,r=0;r=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(e,t,n){e=Re(this,e),t=Re(this,t);var r=[],i=e.line;return this.iter(e.line,t.line+1,function(a){var l=a.markedSpans;if(l)for(var u=0;u=f.to||f.from==null&&i!=e.line||f.from!=null&&i==t.line&&f.from>=t.ch)&&(!n||n(f.marker))&&r.push(f.marker.parent||f.marker)}++i}),r},getAllMarks:function(){var e=[];return this.iter(function(t){var n=t.markedSpans;if(n)for(var r=0;re)return t=e,!0;e-=a,++n}),Re(this,ne(n,t))},indexFromPos:function(e){e=Re(this,e);var t=e.ch;if(e.linet&&(t=e.from),e.to!=null&&e.to-1){t.state.draggingText(e),setTimeout(function(){return t.display.input.focus()},20);return}try{var A=e.dataTransfer.getData("Text");if(A){var P;if(t.state.draggingText&&!t.state.draggingText.copy&&(P=t.listSelections()),ki(t.doc,yr(n,n)),P)for(var J=0;J=0;u--)ln(e.doc,"",r[u].from,r[u].to,"+delete");tn(e)})}function Po(e,t,n){var r=se(e.text,t+n,n);return r<0||r>e.text.length?null:r}function jo(e,t,n){var r=Po(e,t.ch,n);return r==null?null:new ne(t.line,r,n<0?"after":"before")}function Ro(e,t,n,r,i){if(e){t.doc.direction=="rtl"&&(i=-i);var a=Pe(n,t.doc.direction);if(a){var l=i<0?ce(a):a[0],u=i<0==(l.level==1),f=u?"after":"before",m;if(l.level>0||t.doc.direction=="rtl"){var A=Qr(t,n);m=i<0?n.text.length-1:0;var P=tr(t,A,m).top;m=De(function(J){return tr(t,A,J).top==P},i<0==(l.level==1)?l.from:l.to-1,m),f=="before"&&(m=Po(n,m,1))}else m=i<0?l.to:l.from;return new ne(r,m,f)}}return new ne(r,i<0?n.text.length:0,i<0?"before":"after")}function Vf(e,t,n,r){var i=Pe(t,e.doc.direction);if(!i)return jo(t,n,r);n.ch>=t.text.length?(n.ch=t.text.length,n.sticky="before"):n.ch<=0&&(n.ch=0,n.sticky="after");var a=Pt(i,n.ch,n.sticky),l=i[a];if(e.doc.direction=="ltr"&&l.level%2==0&&(r>0?l.to>n.ch:l.from=l.from&&J>=A.begin)){var Y=P?"before":"after";return new ne(n.line,J,Y)}}var ie=function(ve,_e,be){for(var Ce=function(Ve,vt){return vt?new ne(n.line,u(Ve,1),"before"):new ne(n.line,Ve,"after")};ve>=0&&ve0==(Ne.level!=1),$e=Ie?be.begin:u(be.end,-1);if(Ne.from<=$e&&$e0?A.end:u(A.begin,-1);return me!=null&&!(r>0&&me==t.text.length)&&(ue=ie(r>0?0:i.length-1,r,m(me)),ue)?ue:null}var $n={selectAll:Ll,singleSelection:function(e){return e.setSelection(e.getCursor("anchor"),e.getCursor("head"),ke)},killLine:function(e){return cn(e,function(t){if(t.empty()){var n=Ae(e.doc,t.head.line).text.length;return t.head.ch==n&&t.head.line0)i=new ne(i.line,i.ch+1),e.replaceRange(a.charAt(i.ch-1)+a.charAt(i.ch-2),ne(i.line,i.ch-2),i,"+transpose");else if(i.line>e.doc.first){var l=Ae(e.doc,i.line-1).text;l&&(i=new ne(i.line,1),e.replaceRange(a.charAt(0)+e.doc.lineSeparator()+l.charAt(l.length-1),ne(i.line-1,l.length-1),i,"+transpose"))}}n.push(new Ye(i,i))}e.setSelections(n)})},newlineAndIndent:function(e){return Nt(e,function(){for(var t=e.listSelections(),n=t.length-1;n>=0;n--)e.replaceRange(e.doc.lineSeparator(),t[n].anchor,t[n].head,"+input");t=e.listSelections();for(var r=0;re&&ye(t,this.pos)==0&&n==this.button};var Gn,Zn;function od(e,t){var n=+new Date;return Zn&&Zn.compare(n,e,t)?(Gn=Zn=null,"triple"):Gn&&Gn.compare(n,e,t)?(Zn=new Bo(n,e,t),Gn=null,"double"):(Gn=new Bo(n,e,t),Zn=null,"single")}function Yl(e){var t=this,n=t.display;if(!(ot(t,e)||n.activeTouch&&n.input.supportsTouch())){if(n.input.ensurePolled(),n.shift=e.shiftKey,lr(n,e)){g||(n.scroller.draggable=!1,setTimeout(function(){return n.scroller.draggable=!0},100));return}if(!Wo(t,e)){var r=Mr(t,e),i=Ut(e),a=r?od(r,i):"single";pe(t).focus(),i==1&&t.state.selectingText&&t.state.selectingText(e),!(r&&ad(t,i,r,a,e))&&(i==1?r?sd(t,r,a,e):yn(e)==n.scroller&&kt(e):i==2?(r&&_i(t.doc,r),setTimeout(function(){return n.input.focus()},20)):i==3&&(F?t.display.input.onContextMenu(e):wo(t)))}}}function ad(e,t,n,r,i){var a="Click";return r=="double"?a="Double"+a:r=="triple"&&(a="Triple"+a),a=(t==1?"Left":t==2?"Middle":"Right")+a,Kn(e,Hl(a,i),i,function(l){if(typeof l=="string"&&(l=$n[l]),!l)return!1;var u=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),u=l(e,n)!=Ze}finally{e.state.suppressEdits=!1}return u})}function ld(e,t,n){var r=e.getOption("configureMouse"),i=r?r(e,t,n):{};if(i.unit==null){var a=Z?n.shiftKey&&n.metaKey:n.altKey;i.unit=a?"rectangle":t=="single"?"char":t=="double"?"word":"line"}return(i.extend==null||e.doc.extend)&&(i.extend=e.doc.extend||n.shiftKey),i.addNew==null&&(i.addNew=H?n.metaKey:n.ctrlKey),i.moveOnDrag==null&&(i.moveOnDrag=!(H?n.altKey:n.ctrlKey)),i}function sd(e,t,n,r){s?setTimeout(Ee(Qa,e),0):e.curOp.focus=B(de(e));var i=ld(e,n,r),a=e.doc.sel,l;e.options.dragDrop&&eo&&!e.isReadOnly()&&n=="single"&&(l=a.contains(t))>-1&&(ye((l=a.ranges[l]).from(),t)<0||t.xRel>0)&&(ye(l.to(),t)>0||t.xRel<0)?ud(e,r,t,i):cd(e,r,t,i)}function ud(e,t,n,r){var i=e.display,a=!1,l=gt(e,function(m){g&&(i.scroller.draggable=!1),e.state.draggingText=!1,e.state.delayingBlurEvent&&(e.hasFocus()?e.state.delayingBlurEvent=!1:wo(e)),_t(i.wrapper.ownerDocument,"mouseup",l),_t(i.wrapper.ownerDocument,"mousemove",u),_t(i.scroller,"dragstart",f),_t(i.scroller,"drop",l),a||(kt(m),r.addNew||_i(e.doc,n,null,null,r.extend),g&&!w||s&&p==9?setTimeout(function(){i.wrapper.ownerDocument.body.focus({preventScroll:!0}),i.input.focus()},20):i.input.focus())}),u=function(m){a=a||Math.abs(t.clientX-m.clientX)+Math.abs(t.clientY-m.clientY)>=10},f=function(){return a=!0};g&&(i.scroller.draggable=!0),e.state.draggingText=l,l.copy=!r.moveOnDrag,Fe(i.wrapper.ownerDocument,"mouseup",l),Fe(i.wrapper.ownerDocument,"mousemove",u),Fe(i.scroller,"dragstart",f),Fe(i.scroller,"drop",l),e.state.delayingBlurEvent=!0,setTimeout(function(){return i.input.focus()},20),i.scroller.dragDrop&&i.scroller.dragDrop()}function Ql(e,t,n){if(n=="char")return new Ye(t,t);if(n=="word")return e.findWordAt(t);if(n=="line")return new Ye(ne(t.line,0),Re(e.doc,ne(t.line+1,0)));var r=n(e,t);return new Ye(r.from,r.to)}function cd(e,t,n,r){s&&wo(e);var i=e.display,a=e.doc;kt(t);var l,u,f=a.sel,m=f.ranges;if(r.addNew&&!r.extend?(u=a.sel.contains(n),u>-1?l=m[u]:l=new Ye(n,n)):(l=a.sel.primary(),u=a.sel.primIndex),r.unit=="rectangle")r.addNew||(l=new Ye(n,n)),n=Mr(e,t,!0,!0),u=-1;else{var A=Ql(e,n,r.unit);r.extend?l=No(l,A.anchor,A.head,r.extend):l=A}r.addNew?u==-1?(u=m.length,wt(a,Yt(e,m.concat([l]),u),{scroll:!1,origin:"*mouse"})):m.length>1&&m[u].empty()&&r.unit=="char"&&!r.extend?(wt(a,Yt(e,m.slice(0,u).concat(m.slice(u+1)),0),{scroll:!1,origin:"*mouse"}),f=a.sel):Oo(a,u,l,Je):(u=0,wt(a,new Rt([l],0),Je),f=a.sel);var P=n;function J(be){if(ye(P,be)!=0)if(P=be,r.unit=="rectangle"){for(var Ce=[],Ne=e.options.tabSize,Ie=Oe(Ae(a,n.line).text,n.ch,Ne),$e=Oe(Ae(a,be.line).text,be.ch,Ne),Ve=Math.min(Ie,$e),vt=Math.max(Ie,$e),rt=Math.min(n.line,be.line),Ot=Math.min(e.lastLine(),Math.max(n.line,be.line));rt<=Ot;rt++){var At=Ae(a,rt).text,ut=Ge(At,Ve,Ne);Ve==vt?Ce.push(new Ye(ne(rt,ut),ne(rt,ut))):At.length>ut&&Ce.push(new Ye(ne(rt,ut),ne(rt,Ge(At,vt,Ne))))}Ce.length||Ce.push(new Ye(n,n)),wt(a,Yt(e,f.ranges.slice(0,u).concat(Ce),u),{origin:"*mouse",scroll:!1}),e.scrollIntoView(be)}else{var Dt=l,yt=Ql(e,be,r.unit),ft=Dt.anchor,ct;ye(yt.anchor,ft)>0?(ct=yt.head,ft=Zr(Dt.from(),yt.anchor)):(ct=yt.anchor,ft=Et(Dt.to(),yt.head));var lt=f.ranges.slice(0);lt[u]=fd(e,new Ye(Re(a,ft),ct)),wt(a,Yt(e,lt,u),Je)}}var Y=i.wrapper.getBoundingClientRect(),ie=0;function ue(be){var Ce=++ie,Ne=Mr(e,be,!0,r.unit=="rectangle");if(Ne)if(ye(Ne,P)!=0){e.curOp.focus=B(de(e)),J(Ne);var Ie=gi(i,a);(Ne.line>=Ie.to||Ne.lineY.bottom?20:0;$e&&setTimeout(gt(e,function(){ie==Ce&&(i.scroller.scrollTop+=$e,ue(be))}),50)}}function me(be){e.state.selectingText=!1,ie=1/0,be&&(kt(be),i.input.focus()),_t(i.wrapper.ownerDocument,"mousemove",ve),_t(i.wrapper.ownerDocument,"mouseup",_e),a.history.lastSelOrigin=null}var ve=gt(e,function(be){be.buttons===0||!Ut(be)?me(be):ue(be)}),_e=gt(e,me);e.state.selectingText=_e,Fe(i.wrapper.ownerDocument,"mousemove",ve),Fe(i.wrapper.ownerDocument,"mouseup",_e)}function fd(e,t){var n=t.anchor,r=t.head,i=Ae(e.doc,n.line);if(ye(n,r)==0&&n.sticky==r.sticky)return t;var a=Pe(i);if(!a)return t;var l=Pt(a,n.ch,n.sticky),u=a[l];if(u.from!=n.ch&&u.to!=n.ch)return t;var f=l+(u.from==n.ch==(u.level!=1)?0:1);if(f==0||f==a.length)return t;var m;if(r.line!=n.line)m=(r.line-n.line)*(e.doc.direction=="ltr"?1:-1)>0;else{var A=Pt(a,r.ch,r.sticky),P=A-l||(r.ch-n.ch)*(u.level==1?-1:1);A==f-1||A==f?m=P<0:m=P>0}var J=a[f+(m?-1:0)],Y=m==(J.level==1),ie=Y?J.from:J.to,ue=Y?"after":"before";return n.ch==ie&&n.sticky==ue?t:new Ye(new ne(n.line,ie,ue),r)}function Vl(e,t,n,r){var i,a;if(t.touches)i=t.touches[0].clientX,a=t.touches[0].clientY;else try{i=t.clientX,a=t.clientY}catch{return!1}if(i>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;r&&kt(t);var l=e.display,u=l.lineDiv.getBoundingClientRect();if(a>u.bottom||!Ft(e,n))return Ct(t);a-=u.top-l.viewOffset;for(var f=0;f=i){var A=O(e.doc,a),P=e.display.gutterSpecs[f];return it(e,n,e,A,P.className,t),Ct(t)}}}function Wo(e,t){return Vl(e,t,"gutterClick",!0)}function Jl(e,t){lr(e.display,t)||dd(e,t)||ot(e,t,"contextmenu")||F||e.display.input.onContextMenu(t)}function dd(e,t){return Ft(e,"gutterContextMenu")?Vl(e,t,"gutterContextMenu",!1):!1}function es(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),En(e)}var fn={toString:function(){return"CodeMirror.Init"}},ts={},Ei={};function pd(e){var t=e.optionHandlers;function n(r,i,a,l){e.defaults[r]=i,a&&(t[r]=l?function(u,f,m){m!=fn&&a(u,f,m)}:a)}e.defineOption=n,e.Init=fn,n("value","",function(r,i){return r.setValue(i)},!0),n("mode",null,function(r,i){r.doc.modeOption=i,qo(r)},!0),n("indentUnit",2,qo,!0),n("indentWithTabs",!1),n("smartIndent",!0),n("tabSize",4,function(r){Nn(r),En(r),zt(r)},!0),n("lineSeparator",null,function(r,i){if(r.doc.lineSep=i,!!i){var a=[],l=r.doc.first;r.doc.iter(function(f){for(var m=0;;){var A=f.text.indexOf(i,m);if(A==-1)break;m=A+i.length,a.push(ne(l,A))}l++});for(var u=a.length-1;u>=0;u--)ln(r.doc,i,a[u],ne(a[u].line,a[u].ch+i.length))}}),n("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\u202d\u202e\u2066\u2067\u2069\ufeff\ufff9-\ufffc]/g,function(r,i,a){r.state.specialChars=new RegExp(i.source+(i.test(" ")?"":"| "),"g"),a!=fn&&r.refresh()}),n("specialCharPlaceholder",Hc,function(r){return r.refresh()},!0),n("electricChars",!0),n("inputStyle",M?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),n("spellcheck",!1,function(r,i){return r.getInputField().spellcheck=i},!0),n("autocorrect",!1,function(r,i){return r.getInputField().autocorrect=i},!0),n("autocapitalize",!1,function(r,i){return r.getInputField().autocapitalize=i},!0),n("rtlMoveVisually",!ee),n("wholeLineUpdateBefore",!0),n("theme","default",function(r){es(r),Fn(r)},!0),n("keyMap","default",function(r,i,a){var l=Li(i),u=a!=fn&&Li(a);u&&u.detach&&u.detach(r,l),l.attach&&l.attach(r,u||null)}),n("extraKeys",null),n("configureMouse",null),n("lineWrapping",!1,gd,!0),n("gutters",[],function(r,i){r.display.gutterSpecs=Ao(i,r.options.lineNumbers),Fn(r)},!0),n("fixedGutter",!0,function(r,i){r.display.gutters.style.left=i?yo(r.display)+"px":"0",r.refresh()},!0),n("coverGutterNextToScrollbar",!1,function(r){return rn(r)},!0),n("scrollbarStyle","native",function(r){nl(r),rn(r),r.display.scrollbars.setScrollTop(r.doc.scrollTop),r.display.scrollbars.setScrollLeft(r.doc.scrollLeft)},!0),n("lineNumbers",!1,function(r,i){r.display.gutterSpecs=Ao(r.options.gutters,i),Fn(r)},!0),n("firstLineNumber",1,Fn,!0),n("lineNumberFormatter",function(r){return r},Fn,!0),n("showCursorWhenSelecting",!1,zn,!0),n("resetSelectionOnContextMenu",!0),n("lineWiseCopyCut",!0),n("pasteLinesPerSelection",!0),n("selectionsMayTouch",!1),n("readOnly",!1,function(r,i){i=="nocursor"&&(en(r),r.display.input.blur()),r.display.input.readOnlyChanged(i)}),n("screenReaderLabel",null,function(r,i){i=i===""?null:i,r.display.input.screenReaderLabelChanged(i)}),n("disableInput",!1,function(r,i){i||r.display.input.reset()},!0),n("dragDrop",!0,hd),n("allowDropFileTypes",null),n("cursorBlinkRate",530),n("cursorScrollMargin",0),n("cursorHeight",1,zn,!0),n("singleCursorHeightPerLine",!0,zn,!0),n("workTime",100),n("workDelay",100),n("flattenSpans",!0,Nn,!0),n("addModeClass",!1,Nn,!0),n("pollInterval",100),n("undoDepth",200,function(r,i){return r.doc.history.undoDepth=i}),n("historyEventDelay",1250),n("viewportMargin",10,function(r){return r.refresh()},!0),n("maxHighlightLength",1e4,Nn,!0),n("moveInputWithCursor",!0,function(r,i){i||r.display.input.resetPosition()}),n("tabindex",null,function(r,i){return r.display.input.getField().tabIndex=i||""}),n("autofocus",null),n("direction","ltr",function(r,i){return r.doc.setDirection(i)},!0),n("phrases",null)}function hd(e,t,n){var r=n&&n!=fn;if(!t!=!r){var i=e.display.dragFunctions,a=t?Fe:_t;a(e.display.scroller,"dragstart",i.start),a(e.display.scroller,"dragenter",i.enter),a(e.display.scroller,"dragover",i.over),a(e.display.scroller,"dragleave",i.leave),a(e.display.scroller,"drop",i.drop)}}function gd(e){e.options.lineWrapping?(le(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(Q(e.display.wrapper,"CodeMirror-wrap"),so(e)),xo(e),zt(e),En(e),setTimeout(function(){return rn(e)},100)}function tt(e,t){var n=this;if(!(this instanceof tt))return new tt(e,t);this.options=t=t?ge(t):{},ge(ts,t,!1);var r=t.value;typeof r=="string"?r=new Mt(r,t.mode,null,t.lineSeparator,t.direction):t.mode&&(r.modeOption=t.mode),this.doc=r;var i=new tt.inputStyles[t.inputStyle](this),a=this.display=new Ef(e,r,i,t);a.wrapper.CodeMirror=this,es(this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),nl(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new qe,keySeq:null,specialChars:null},t.autofocus&&!M&&a.input.focus(),s&&p<11&&setTimeout(function(){return n.display.input.reset(!0)},20),md(this),Gf(),Ir(this),this.curOp.forceUpdate=!0,pl(this,r),t.autofocus&&!M||this.hasFocus()?setTimeout(function(){n.hasFocus()&&!n.state.focused&&So(n)},20):en(this);for(var l in Ei)Ei.hasOwnProperty(l)&&Ei[l](this,t[l],fn);al(this),t.finishInit&&t.finishInit(this);for(var u=0;u20*20}Fe(t.scroller,"touchstart",function(f){if(!ot(e,f)&&!a(f)&&!Wo(e,f)){t.input.ensurePolled(),clearTimeout(n);var m=+new Date;t.activeTouch={start:m,moved:!1,prev:m-r.end<=300?r:null},f.touches.length==1&&(t.activeTouch.left=f.touches[0].pageX,t.activeTouch.top=f.touches[0].pageY)}}),Fe(t.scroller,"touchmove",function(){t.activeTouch&&(t.activeTouch.moved=!0)}),Fe(t.scroller,"touchend",function(f){var m=t.activeTouch;if(m&&!lr(t,f)&&m.left!=null&&!m.moved&&new Date-m.start<300){var A=e.coordsChar(t.activeTouch,"page"),P;!m.prev||l(m,m.prev)?P=new Ye(A,A):!m.prev.prev||l(m,m.prev.prev)?P=e.findWordAt(A):P=new Ye(ne(A.line,0),Re(e.doc,ne(A.line+1,0))),e.setSelection(P.anchor,P.head),e.focus(),kt(f)}i()}),Fe(t.scroller,"touchcancel",i),Fe(t.scroller,"scroll",function(){t.scroller.clientHeight&&(An(e,t.scroller.scrollTop),Dr(e,t.scroller.scrollLeft,!0),it(e,"scroll",e))}),Fe(t.scroller,"mousewheel",function(f){return ul(e,f)}),Fe(t.scroller,"DOMMouseScroll",function(f){return ul(e,f)}),Fe(t.wrapper,"scroll",function(){return t.wrapper.scrollTop=t.wrapper.scrollLeft=0}),t.dragFunctions={enter:function(f){ot(e,f)||dr(f)},over:function(f){ot(e,f)||(Kf(e,f),dr(f))},start:function(f){return $f(e,f)},drop:gt(e,Uf),leave:function(f){ot(e,f)||Ol(e)}};var u=t.input.getField();Fe(u,"keyup",function(f){return Zl.call(e,f)}),Fe(u,"keydown",gt(e,Gl)),Fe(u,"keypress",gt(e,Xl)),Fe(u,"focus",function(f){return So(e,f)}),Fe(u,"blur",function(f){return en(e,f)})}var Uo=[];tt.defineInitHook=function(e){return Uo.push(e)};function Xn(e,t,n,r){var i=e.doc,a;n==null&&(n="add"),n=="smart"&&(i.mode.indent?a=wn(e,t).state:n="prev");var l=e.options.tabSize,u=Ae(i,t),f=Oe(u.text,null,l);u.stateAfter&&(u.stateAfter=null);var m=u.text.match(/^\s*/)[0],A;if(!r&&!/\S/.test(u.text))A=0,n="not";else if(n=="smart"&&(A=i.mode.indent(a,u.text.slice(m.length),u.text),A==Ze||A>150)){if(!r)return;n="prev"}n=="prev"?t>i.first?A=Oe(Ae(i,t-1).text,null,l):A=0:n=="add"?A=f+e.options.indentUnit:n=="subtract"?A=f-e.options.indentUnit:typeof n=="number"&&(A=f+n),A=Math.max(0,A);var P="",J=0;if(e.options.indentWithTabs)for(var Y=Math.floor(A/l);Y;--Y)J+=l,P+=" ";if(Jl,f=Bt(t),m=null;if(u&&r.ranges.length>1)if(Qt&&Qt.text.join(` +`)==t){if(r.ranges.length%Qt.text.length==0){m=[];for(var A=0;A=0;J--){var Y=r.ranges[J],ie=Y.from(),ue=Y.to();Y.empty()&&(n&&n>0?ie=ne(ie.line,ie.ch-n):e.state.overwrite&&!u?ue=ne(ue.line,Math.min(Ae(a,ue.line).text.length,ue.ch+ce(f).length)):u&&Qt&&Qt.lineWise&&Qt.text.join(` +`)==f.join(` +`)&&(ie=ue=ne(ie.line,0)));var me={from:ie,to:ue,text:m?m[J%m.length]:f,origin:i||(u?"paste":e.state.cutIncoming>l?"cut":"+input")};an(e.doc,me),ht(e,"inputRead",e,me)}t&&!u&&ns(e,t),tn(e),e.curOp.updateInput<2&&(e.curOp.updateInput=P),e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=-1}function rs(e,t){var n=e.clipboardData&&e.clipboardData.getData("Text");if(n)return e.preventDefault(),!t.isReadOnly()&&!t.options.disableInput&&t.hasFocus()&&Nt(t,function(){return $o(t,n,0,null,"paste")}),!0}function ns(e,t){if(!(!e.options.electricChars||!e.options.smartIndent))for(var n=e.doc.sel,r=n.ranges.length-1;r>=0;r--){var i=n.ranges[r];if(!(i.head.ch>100||r&&n.ranges[r-1].head.line==i.head.line)){var a=e.getModeAt(i.head),l=!1;if(a.electricChars){for(var u=0;u-1){l=Xn(e,i.head.line,"smart");break}}else a.electricInput&&a.electricInput.test(Ae(e.doc,i.head.line).text.slice(0,i.head.ch))&&(l=Xn(e,i.head.line,"smart"));l&&ht(e,"electricInput",e,i.head.line)}}}function is(e){for(var t=[],n=[],r=0;ra&&(Xn(this,u.head.line,r,!0),a=u.head.line,l==this.doc.sel.primIndex&&tn(this));else{var f=u.from(),m=u.to(),A=Math.max(a,f.line);a=Math.min(this.lastLine(),m.line-(m.ch?0:1))+1;for(var P=A;P0&&Oo(this.doc,l,new Ye(f,J[l].to()),ke)}}}),getTokenAt:function(r,i){return ga(this,r,i)},getLineTokens:function(r,i){return ga(this,ne(r),i,!0)},getTokenTypeAt:function(r){r=Re(this.doc,r);var i=da(this,Ae(this.doc,r.line)),a=0,l=(i.length-1)/2,u=r.ch,f;if(u==0)f=i[2];else for(;;){var m=a+l>>1;if((m?i[m*2-1]:0)>=u)l=m;else if(i[m*2+1]f&&(r=f,l=!0),u=Ae(this.doc,r)}else u=r;return ci(this,u,{top:0,left:0},i||"page",a||l).top+(l?this.doc.height-ar(u):0)},defaultTextHeight:function(){return Vr(this.display)},defaultCharWidth:function(){return Jr(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(r,i,a,l,u){var f=this.display;r=Xt(this,Re(this.doc,r));var m=r.bottom,A=r.left;if(i.style.position="absolute",i.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(i),f.sizer.appendChild(i),l=="over")m=r.top;else if(l=="above"||l=="near"){var P=Math.max(f.wrapper.clientHeight,this.doc.height),J=Math.max(f.sizer.clientWidth,f.lineSpace.clientWidth);(l=="above"||r.bottom+i.offsetHeight>P)&&r.top>i.offsetHeight?m=r.top-i.offsetHeight:r.bottom+i.offsetHeight<=P&&(m=r.bottom),A+i.offsetWidth>J&&(A=J-i.offsetWidth)}i.style.top=m+"px",i.style.left=i.style.right="",u=="right"?(A=f.sizer.clientWidth-i.offsetWidth,i.style.right="0px"):(u=="left"?A=0:u=="middle"&&(A=(f.sizer.clientWidth-i.offsetWidth)/2),i.style.left=A+"px"),a&&hf(this,{left:A,top:m,right:A+i.offsetWidth,bottom:m+i.offsetHeight})},triggerOnKeyDown:Tt(Gl),triggerOnKeyPress:Tt(Xl),triggerOnKeyUp:Zl,triggerOnMouseDown:Tt(Yl),execCommand:function(r){if($n.hasOwnProperty(r))return $n[r].call(null,this)},triggerElectric:Tt(function(r){ns(this,r)}),findPosH:function(r,i,a,l){var u=1;i<0&&(u=-1,i=-i);for(var f=Re(this.doc,r),m=0;m0&&A(a.charAt(l-1));)--l;for(;u.5||this.options.lineWrapping)&&xo(this),it(this,"refresh",this)}),swapDoc:Tt(function(r){var i=this.doc;return i.cm=null,this.state.selectingText&&this.state.selectingText(),pl(this,r),En(this),this.display.input.reset(),Mn(this,r.scrollLeft,r.scrollTop),this.curOp.forceScroll=!0,ht(this,"swapDoc",this,i),i}),phrase:function(r){var i=this.options.phrases;return i&&Object.prototype.hasOwnProperty.call(i,r)?i[r]:r},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},Wt(e),e.registerHelper=function(r,i,a){n.hasOwnProperty(r)||(n[r]=e[r]={_global:[]}),n[r][i]=a},e.registerGlobalHelper=function(r,i,a,l){e.registerHelper(r,i,l),n[r]._global.push({pred:a,val:l})}}function Go(e,t,n,r,i){var a=t,l=n,u=Ae(e,t.line),f=i&&e.direction=="rtl"?-n:n;function m(){var _e=t.line+f;return _e=e.first+e.size?!1:(t=new ne(_e,t.ch,t.sticky),u=Ae(e,_e))}function A(_e){var be;if(r=="codepoint"){var Ce=u.text.charCodeAt(t.ch+(n>0?0:-1));if(isNaN(Ce))be=null;else{var Ne=n>0?Ce>=55296&&Ce<56320:Ce>=56320&&Ce<57343;be=new ne(t.line,Math.max(0,Math.min(u.text.length,t.ch+n*(Ne?2:1))),-n)}}else i?be=Vf(e.cm,u,t,n):be=jo(u,t,n);if(be==null)if(!_e&&m())t=Ro(i,e.cm,u,t.line,f);else return!1;else t=be;return!0}if(r=="char"||r=="codepoint")A();else if(r=="column")A(!0);else if(r=="word"||r=="group")for(var P=null,J=r=="group",Y=e.cm&&e.cm.getHelper(t,"wordChars"),ie=!0;!(n<0&&!A(!ie));ie=!1){var ue=u.text.charAt(t.ch)||` +`,me=Me(ue,Y)?"w":J&&ue==` +`?"n":!J||/\s/.test(ue)?null:"p";if(J&&!ie&&!me&&(me="s"),P&&P!=me){n<0&&(n=1,A(),t.sticky="after");break}if(me&&(P=me),n>0&&!A(!ie))break}var ve=wi(e,t,a,l,!0);return Xe(a,ve)&&(ve.hitSide=!0),ve}function as(e,t,n,r){var i=e.doc,a=t.left,l;if(r=="page"){var u=Math.min(e.display.wrapper.clientHeight,pe(e).innerHeight||i(e).documentElement.clientHeight),f=Math.max(u-.5*Vr(e.display),3);l=(n>0?t.bottom:t.top)+n*f}else r=="line"&&(l=n>0?t.bottom+3:t.top-3);for(var m;m=mo(e,a,l),!!m.outside;){if(n<0?l<=0:l>=i.height){m.hitSide=!0;break}l+=n*5}return m}var Qe=function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new qe,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};Qe.prototype.init=function(e){var t=this,n=this,r=n.cm,i=n.div=e.lineDiv;i.contentEditable=!0,Ko(i,r.options.spellcheck,r.options.autocorrect,r.options.autocapitalize);function a(u){for(var f=u.target;f;f=f.parentNode){if(f==i)return!0;if(/\bCodeMirror-(?:line)?widget\b/.test(f.className))break}return!1}Fe(i,"paste",function(u){!a(u)||ot(r,u)||rs(u,r)||p<=11&&setTimeout(gt(r,function(){return t.updateFromDOM()}),20)}),Fe(i,"compositionstart",function(u){t.composing={data:u.data,done:!1}}),Fe(i,"compositionupdate",function(u){t.composing||(t.composing={data:u.data,done:!1})}),Fe(i,"compositionend",function(u){t.composing&&(u.data!=t.composing.data&&t.readFromDOMSoon(),t.composing.done=!0)}),Fe(i,"touchstart",function(){return n.forceCompositionEnd()}),Fe(i,"input",function(){t.composing||t.readFromDOMSoon()});function l(u){if(!(!a(u)||ot(r,u))){if(r.somethingSelected())zi({lineWise:!1,text:r.getSelections()}),u.type=="cut"&&r.replaceSelection("",null,"cut");else if(r.options.lineWiseCopyCut){var f=is(r);zi({lineWise:!0,text:f.text}),u.type=="cut"&&r.operation(function(){r.setSelections(f.ranges,0,ke),r.replaceSelection("",null,"cut")})}else return;if(u.clipboardData){u.clipboardData.clearData();var m=Qt.text.join(` +`);if(u.clipboardData.setData("Text",m),u.clipboardData.getData("Text")==m){u.preventDefault();return}}var A=os(),P=A.firstChild;Ko(P),r.display.lineSpace.insertBefore(A,r.display.lineSpace.firstChild),P.value=Qt.text.join(` +`);var J=B(ze(i));q(P),setTimeout(function(){r.display.lineSpace.removeChild(A),J.focus(),J==i&&n.showPrimarySelection()},50)}}Fe(i,"copy",l),Fe(i,"cut",l)},Qe.prototype.screenReaderLabelChanged=function(e){e?this.div.setAttribute("aria-label",e):this.div.removeAttribute("aria-label")},Qe.prototype.prepareSelection=function(){var e=Ya(this.cm,!1);return e.focus=B(ze(this.div))==this.div,e},Qe.prototype.showSelection=function(e,t){!e||!this.cm.display.view.length||((e.focus||t)&&this.showPrimarySelection(),this.showMultipleSelections(e))},Qe.prototype.getSelection=function(){return this.cm.display.wrapper.ownerDocument.getSelection()},Qe.prototype.showPrimarySelection=function(){var e=this.getSelection(),t=this.cm,n=t.doc.sel.primary(),r=n.from(),i=n.to();if(t.display.viewTo==t.display.viewFrom||r.line>=t.display.viewTo||i.line=t.display.viewFrom&&ls(t,r)||{node:u[0].measure.map[2],offset:0},m=i.linee.firstLine()&&(r=ne(r.line-1,Ae(e.doc,r.line-1).length)),i.ch==Ae(e.doc,i.line).text.length&&i.linet.viewTo-1)return!1;var a,l,u;r.line==t.viewFrom||(a=Ar(e,r.line))==0?(l=k(t.view[0].line),u=t.view[0].node):(l=k(t.view[a].line),u=t.view[a-1].node.nextSibling);var f=Ar(e,i.line),m,A;if(f==t.view.length-1?(m=t.viewTo-1,A=t.lineDiv.lastChild):(m=k(t.view[f+1].line)-1,A=t.view[f+1].node.previousSibling),!u)return!1;for(var P=e.doc.splitLines(yd(e,u,A,l,m)),J=ir(e.doc,ne(l,0),ne(m,Ae(e.doc,m).text.length));P.length>1&&J.length>1;)if(ce(P)==ce(J))P.pop(),J.pop(),m--;else if(P[0]==J[0])P.shift(),J.shift(),l++;else break;for(var Y=0,ie=0,ue=P[0],me=J[0],ve=Math.min(ue.length,me.length);Yr.ch&&_e.charCodeAt(_e.length-ie-1)==be.charCodeAt(be.length-ie-1);)Y--,ie++;P[P.length-1]=_e.slice(0,_e.length-ie).replace(/^\u200b+/,""),P[0]=P[0].slice(Y).replace(/\u200b+$/,"");var Ne=ne(l,Y),Ie=ne(m,J.length?ce(J).length-ie:0);if(P.length>1||P[0]||ye(Ne,Ie))return ln(e.doc,P,Ne,Ie,"+input"),!0},Qe.prototype.ensurePolled=function(){this.forceCompositionEnd()},Qe.prototype.reset=function(){this.forceCompositionEnd()},Qe.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Qe.prototype.readFromDOMSoon=function(){var e=this;this.readDOMTimeout==null&&(this.readDOMTimeout=setTimeout(function(){if(e.readDOMTimeout=null,e.composing)if(e.composing.done)e.composing=null;else return;e.updateFromDOM()},80))},Qe.prototype.updateFromDOM=function(){var e=this;(this.cm.isReadOnly()||!this.pollContent())&&Nt(this.cm,function(){return zt(e.cm)})},Qe.prototype.setUneditable=function(e){e.contentEditable="false"},Qe.prototype.onKeyPress=function(e){e.charCode==0||this.composing||(e.preventDefault(),this.cm.isReadOnly()||gt(this.cm,$o)(this.cm,String.fromCharCode(e.charCode==null?e.keyCode:e.charCode),0))},Qe.prototype.readOnlyChanged=function(e){this.div.contentEditable=String(e!="nocursor")},Qe.prototype.onContextMenu=function(){},Qe.prototype.resetPosition=function(){},Qe.prototype.needsContentAttribute=!0;function ls(e,t){var n=po(e,t.line);if(!n||n.hidden)return null;var r=Ae(e.doc,t.line),i=Na(n,r,t.line),a=Pe(r,e.doc.direction),l="left";if(a){var u=Pt(a,t.ch);l=u%2?"right":"left"}var f=ja(i.map,t.ch,l);return f.offset=f.collapse=="right"?f.end:f.start,f}function bd(e){for(var t=e;t;t=t.parentNode)if(/CodeMirror-gutter-wrapper/.test(t.className))return!0;return!1}function dn(e,t){return t&&(e.bad=!0),e}function yd(e,t,n,r,i){var a="",l=!1,u=e.doc.lineSeparator(),f=!1;function m(Y){return function(ie){return ie.id==Y}}function A(){l&&(a+=u,f&&(a+=u),l=f=!1)}function P(Y){Y&&(A(),a+=Y)}function J(Y){if(Y.nodeType==1){var ie=Y.getAttribute("cm-text");if(ie){P(ie);return}var ue=Y.getAttribute("cm-marker"),me;if(ue){var ve=e.findMarks(ne(r,0),ne(i+1,0),m(+ue));ve.length&&(me=ve[0].find(0))&&P(ir(e.doc,me.from,me.to).join(u));return}if(Y.getAttribute("contenteditable")=="false")return;var _e=/^(pre|div|p|li|table|br)$/i.test(Y.nodeName);if(!/^br$/i.test(Y.nodeName)&&Y.textContent.length==0)return;_e&&A();for(var be=0;be=9&&t.hasSelection&&(t.hasSelection=null),n.poll()}),Fe(i,"paste",function(l){ot(r,l)||rs(l,r)||(r.state.pasteIncoming=+new Date,n.fastPoll())});function a(l){if(!ot(r,l)){if(r.somethingSelected())zi({lineWise:!1,text:r.getSelections()});else if(r.options.lineWiseCopyCut){var u=is(r);zi({lineWise:!0,text:u.text}),l.type=="cut"?r.setSelections(u.ranges,null,ke):(n.prevInput="",i.value=u.text.join(` +`),q(i))}else return;l.type=="cut"&&(r.state.cutIncoming=+new Date)}}Fe(i,"cut",a),Fe(i,"copy",a),Fe(e.scroller,"paste",function(l){if(!(lr(e,l)||ot(r,l))){if(!i.dispatchEvent){r.state.pasteIncoming=+new Date,n.focus();return}var u=new Event("paste");u.clipboardData=l.clipboardData,i.dispatchEvent(u)}}),Fe(e.lineSpace,"selectstart",function(l){lr(e,l)||kt(l)}),Fe(i,"compositionstart",function(){var l=r.getCursor("from");n.composing&&n.composing.range.clear(),n.composing={start:l,range:r.markText(l,r.getCursor("to"),{className:"CodeMirror-composing"})}}),Fe(i,"compositionend",function(){n.composing&&(n.poll(),n.composing.range.clear(),n.composing=null)})},st.prototype.createField=function(e){this.wrapper=os(),this.textarea=this.wrapper.firstChild;var t=this.cm.options;Ko(this.textarea,t.spellcheck,t.autocorrect,t.autocapitalize)},st.prototype.screenReaderLabelChanged=function(e){e?this.textarea.setAttribute("aria-label",e):this.textarea.removeAttribute("aria-label")},st.prototype.prepareSelection=function(){var e=this.cm,t=e.display,n=e.doc,r=Ya(e);if(e.options.moveInputWithCursor){var i=Xt(e,n.sel.primary().head,"div"),a=t.wrapper.getBoundingClientRect(),l=t.lineDiv.getBoundingClientRect();r.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,i.top+l.top-a.top)),r.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,i.left+l.left-a.left))}return r},st.prototype.showSelection=function(e){var t=this.cm,n=t.display;V(n.cursorDiv,e.cursors),V(n.selectionDiv,e.selection),e.teTop!=null&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},st.prototype.reset=function(e){if(!(this.contextMenuPending||this.composing&&e)){var t=this.cm;if(this.resetting=!0,t.somethingSelected()){this.prevInput="";var n=t.getSelection();this.textarea.value=n,t.state.focused&&q(this.textarea),s&&p>=9&&(this.hasSelection=n)}else e||(this.prevInput=this.textarea.value="",s&&p>=9&&(this.hasSelection=null));this.resetting=!1}},st.prototype.getField=function(){return this.textarea},st.prototype.supportsTouch=function(){return!1},st.prototype.focus=function(){if(this.cm.options.readOnly!="nocursor"&&(!M||B(ze(this.textarea))!=this.textarea))try{this.textarea.focus()}catch{}},st.prototype.blur=function(){this.textarea.blur()},st.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},st.prototype.receivedFocus=function(){this.slowPoll()},st.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){e.poll(),e.cm.state.focused&&e.slowPoll()})},st.prototype.fastPoll=function(){var e=!1,t=this;t.pollingFast=!0;function n(){var r=t.poll();!r&&!e?(e=!0,t.polling.set(60,n)):(t.pollingFast=!1,t.slowPoll())}t.polling.set(20,n)},st.prototype.poll=function(){var e=this,t=this.cm,n=this.textarea,r=this.prevInput;if(this.contextMenuPending||this.resetting||!t.state.focused||hr(n)&&!r&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var i=n.value;if(i==r&&!t.somethingSelected())return!1;if(s&&p>=9&&this.hasSelection===i||H&&/[\uf700-\uf7ff]/.test(i))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var a=i.charCodeAt(0);if(a==8203&&!r&&(r="\u200B"),a==8666)return this.reset(),this.cm.execCommand("undo")}for(var l=0,u=Math.min(r.length,i.length);l1e3||i.indexOf(` +`)>-1?n.value=e.prevInput="":e.prevInput=i,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},st.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},st.prototype.onKeyPress=function(){s&&p>=9&&(this.hasSelection=null),this.fastPoll()},st.prototype.onContextMenu=function(e){var t=this,n=t.cm,r=n.display,i=t.textarea;t.contextMenuPending&&t.contextMenuPending();var a=Mr(n,e),l=r.scroller.scrollTop;if(!a||d)return;var u=n.options.resetSelectionOnContextMenu;u&&n.doc.sel.contains(a)==-1&>(n,wt)(n.doc,yr(a),ke);var f=i.style.cssText,m=t.wrapper.style.cssText,A=t.wrapper.offsetParent.getBoundingClientRect();t.wrapper.style.cssText="position: static",i.style.cssText=`position: absolute; width: 30px; height: 30px; + top: `+(e.clientY-A.top-5)+"px; left: "+(e.clientX-A.left-5)+`px; + z-index: 1000; background: `+(s?"rgba(255, 255, 255, .05)":"transparent")+`; + outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);`;var P;g&&(P=i.ownerDocument.defaultView.scrollY),r.input.focus(),g&&i.ownerDocument.defaultView.scrollTo(null,P),r.input.reset(),n.somethingSelected()||(i.value=t.prevInput=" "),t.contextMenuPending=Y,r.selForContextMenu=n.doc.sel,clearTimeout(r.detectingSelectAll);function J(){if(i.selectionStart!=null){var ue=n.somethingSelected(),me="\u200B"+(ue?i.value:"");i.value="\u21DA",i.value=me,t.prevInput=ue?"":"\u200B",i.selectionStart=1,i.selectionEnd=me.length,r.selForContextMenu=n.doc.sel}}function Y(){if(t.contextMenuPending==Y&&(t.contextMenuPending=!1,t.wrapper.style.cssText=m,i.style.cssText=f,s&&p<9&&r.scrollbars.setScrollTop(r.scroller.scrollTop=l),i.selectionStart!=null)){(!s||s&&p<9)&&J();var ue=0,me=function(){r.selForContextMenu==n.doc.sel&&i.selectionStart==0&&i.selectionEnd>0&&t.prevInput=="\u200B"?gt(n,Ll)(n):ue++<10?r.detectingSelectAll=setTimeout(me,500):(r.selForContextMenu=null,r.input.reset())};r.detectingSelectAll=setTimeout(me,200)}}if(s&&p>=9&&J(),F){dr(e);var ie=function(){_t(window,"mouseup",ie),setTimeout(Y,20)};Fe(window,"mouseup",ie)}else setTimeout(Y,50)},st.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled=e=="nocursor",this.textarea.readOnly=!!e},st.prototype.setUneditable=function(){},st.prototype.needsContentAttribute=!1;function _d(e,t){if(t=t?ge(t):{},t.value=e.value,!t.tabindex&&e.tabIndex&&(t.tabindex=e.tabIndex),!t.placeholder&&e.placeholder&&(t.placeholder=e.placeholder),t.autofocus==null){var n=B(ze(e));t.autofocus=n==e||e.getAttribute("autofocus")!=null&&n==document.body}function r(){e.value=u.getValue()}var i;if(e.form&&(Fe(e.form,"submit",r),!t.leaveSubmitMethodAlone)){var a=e.form;i=a.submit;try{var l=a.submit=function(){r(),a.submit=i,a.submit(),a.submit=l}}catch{}}t.finishInit=function(f){f.save=r,f.getTextArea=function(){return e},f.toTextArea=function(){f.toTextArea=isNaN,r(),e.parentNode.removeChild(f.getWrapperElement()),e.style.display="",e.form&&(_t(e.form,"submit",r),!t.leaveSubmitMethodAlone&&typeof e.form.submit=="function"&&(e.form.submit=i))}},e.style.display="none";var u=tt(function(f){return e.parentNode.insertBefore(f,e.nextSibling)},t);return u}function kd(e){e.off=_t,e.on=Fe,e.wheelEventPixels=zf,e.Doc=Mt,e.splitLines=Bt,e.countColumn=Oe,e.findColumn=Ge,e.isWordChar=we,e.Pass=Ze,e.signal=it,e.Line=Xr,e.changeEnd=xr,e.scrollbarModel=rl,e.Pos=ne,e.cmpPos=ye,e.modes=Wr,e.mimeModes=Kt,e.resolveMode=Ur,e.getMode=$r,e.modeExtensions=gr,e.extendMode=Kr,e.copyState=Vt,e.startState=Gr,e.innerMode=_n,e.commands=$n,e.keyMap=ur,e.keyName=Bl,e.isModifierKey=Rl,e.lookupKey=un,e.normalizeKeyMap=Qf,e.StringStream=at,e.SharedTextMarker=Bn,e.TextMarker=kr,e.LineWidget=Hn,e.e_preventDefault=kt,e.e_stopPropagation=Hr,e.e_stop=dr,e.addClass=le,e.contains=I,e.rmClass=Q,e.keyNames=wr}pd(tt),vd(tt);var wd="iter insert remove copy getEditor constructor".split(" ");for(var Ai in Mt.prototype)Mt.prototype.hasOwnProperty(Ai)&&Se(wd,Ai)<0&&(tt.prototype[Ai]=function(e){return function(){return e.apply(this.doc,arguments)}}(Mt.prototype[Ai]));return Wt(Mt),tt.inputStyles={textarea:st,contenteditable:Qe},tt.defineMode=function(e){!tt.defaults.mode&&e!="null"&&(tt.defaults.mode=e),Gt.apply(this,arguments)},tt.defineMIME=Cr,tt.defineMode("null",function(){return{token:function(e){return e.skipToEnd()}}}),tt.defineMIME("text/plain","null"),tt.defineExtension=function(e,t){tt.prototype[e]=t},tt.defineDocExtension=function(e,t){Mt.prototype[e]=t},tt.fromTextArea=_d,kd(tt),tt.version="5.65.16",tt})});var Yn=Ke((us,cs)=>{(function(o){typeof us=="object"&&typeof cs=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.overlayMode=function(h,v,C){return{startState:function(){return{base:o.startState(h),overlay:o.startState(v),basePos:0,baseCur:null,overlayPos:0,overlayCur:null,streamSeen:null}},copyState:function(b){return{base:o.copyState(h,b.base),overlay:o.copyState(v,b.overlay),basePos:b.basePos,baseCur:null,overlayPos:b.overlayPos,overlayCur:null}},token:function(b,S){return(b!=S.streamSeen||Math.min(S.basePos,S.overlayPos){(function(o){typeof fs=="object"&&typeof ds=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";var h=/^(\s*)(>[> ]*|[*+-] \[[x ]\]\s|[*+-]\s|(\d+)([.)]))(\s*)/,v=/^(\s*)(>[> ]*|[*+-] \[[x ]\]|[*+-]|(\d+)[.)])(\s*)$/,C=/[*+-]\s/;o.commands.newlineAndIndentContinueMarkdownList=function(S){if(S.getOption("disableInput"))return o.Pass;for(var s=S.listSelections(),p=[],g=0;g\s*$/.test(E),M=!/>\s*$/.test(E);(R||M)&&S.replaceRange("",{line:L.line,ch:0},{line:L.line,ch:L.ch+1}),p[g]=` +`}else{var H=z[1],Z=z[5],ee=!(C.test(z[2])||z[2].indexOf(">")>=0),re=ee?parseInt(z[3],10)+1+z[4]:z[2].replace("x"," ");p[g]=` +`+H+re+Z,ee&&b(S,L)}}S.replaceSelections(p)};function b(S,s){var p=s.line,g=0,L=0,x=h.exec(S.getLine(p)),c=x[1];do{g+=1;var d=p+g,w=S.getLine(d),E=h.exec(w);if(E){var z=E[1],y=parseInt(x[3],10)+g-L,R=parseInt(E[3],10),M=R;if(c===z&&!isNaN(R))y===R&&(M=R+1),y>R&&(M=y+1),S.replaceRange(w.replace(h,z+M+E[4]+E[5]),{line:d,ch:0},{line:d,ch:w.length});else{if(c.length>z.length||c.length{(function(o){typeof hs=="object"&&typeof gs=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){o.defineOption("placeholder","",function(p,g,L){var x=L&&L!=o.Init;if(g&&!x)p.on("blur",b),p.on("change",S),p.on("swapDoc",S),o.on(p.getInputField(),"compositionupdate",p.state.placeholderCompose=function(){C(p)}),S(p);else if(!g&&x){p.off("blur",b),p.off("change",S),p.off("swapDoc",S),o.off(p.getInputField(),"compositionupdate",p.state.placeholderCompose),h(p);var c=p.getWrapperElement();c.className=c.className.replace(" CodeMirror-empty","")}g&&!p.hasFocus()&&b(p)});function h(p){p.state.placeholder&&(p.state.placeholder.parentNode.removeChild(p.state.placeholder),p.state.placeholder=null)}function v(p){h(p);var g=p.state.placeholder=document.createElement("pre");g.style.cssText="height: 0; overflow: visible",g.style.direction=p.getOption("direction"),g.className="CodeMirror-placeholder CodeMirror-line-like";var L=p.getOption("placeholder");typeof L=="string"&&(L=document.createTextNode(L)),g.appendChild(L),p.display.lineSpace.insertBefore(g,p.display.lineSpace.firstChild)}function C(p){setTimeout(function(){var g=!1;if(p.lineCount()==1){var L=p.getInputField();g=L.nodeName=="TEXTAREA"?!p.getLine(0).length:!/[^\u200b]/.test(L.querySelector(".CodeMirror-line").textContent)}g?v(p):h(p)},20)}function b(p){s(p)&&v(p)}function S(p){var g=p.getWrapperElement(),L=s(p);g.className=g.className.replace(" CodeMirror-empty","")+(L?" CodeMirror-empty":""),L?v(p):h(p)}function s(p){return p.lineCount()===1&&p.getLine(0)===""}})});var ys=Ke((vs,bs)=>{(function(o){typeof vs=="object"&&typeof bs=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineOption("styleSelectedText",!1,function(x,c,d){var w=d&&d!=o.Init;c&&!w?(x.state.markedSelection=[],x.state.markedSelectionStyle=typeof c=="string"?c:"CodeMirror-selectedtext",g(x),x.on("cursorActivity",h),x.on("change",v)):!c&&w&&(x.off("cursorActivity",h),x.off("change",v),p(x),x.state.markedSelection=x.state.markedSelectionStyle=null)});function h(x){x.state.markedSelection&&x.operation(function(){L(x)})}function v(x){x.state.markedSelection&&x.state.markedSelection.length&&x.operation(function(){p(x)})}var C=8,b=o.Pos,S=o.cmpPos;function s(x,c,d,w){if(S(c,d)!=0)for(var E=x.state.markedSelection,z=x.state.markedSelectionStyle,y=c.line;;){var R=y==c.line?c:b(y,0),M=y+C,H=M>=d.line,Z=H?d:b(M,0),ee=x.markText(R,Z,{className:z});if(w==null?E.push(ee):E.splice(w++,0,ee),H)break;y=M}}function p(x){for(var c=x.state.markedSelection,d=0;d1)return g(x);var c=x.getCursor("start"),d=x.getCursor("end"),w=x.state.markedSelection;if(!w.length)return s(x,c,d);var E=w[0].find(),z=w[w.length-1].find();if(!E||!z||d.line-c.line<=C||S(c,z.to)>=0||S(d,E.from)<=0)return g(x);for(;S(c,E.from)>0;)w.shift().clear(),E=w[0].find();for(S(c,E.from)<0&&(E.to.line-c.line0&&(d.line-z.from.line{(function(o){typeof xs=="object"&&typeof _s=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";var h=o.Pos;function v(y){var R=y.flags;return R??(y.ignoreCase?"i":"")+(y.global?"g":"")+(y.multiline?"m":"")}function C(y,R){for(var M=v(y),H=M,Z=0;Zre);N++){var F=y.getLine(ee++);H=H==null?F:H+` +`+F}Z=Z*2,R.lastIndex=M.ch;var D=R.exec(H);if(D){var Q=H.slice(0,D.index).split(` +`),j=D[0].split(` +`),V=M.line+Q.length-1,_=Q[Q.length-1].length;return{from:h(V,_),to:h(V+j.length-1,j.length==1?_+j[0].length:j[j.length-1].length),match:D}}}}function p(y,R,M){for(var H,Z=0;Z<=y.length;){R.lastIndex=Z;var ee=R.exec(y);if(!ee)break;var re=ee.index+ee[0].length;if(re>y.length-M)break;(!H||re>H.index+H[0].length)&&(H=ee),Z=ee.index+1}return H}function g(y,R,M){R=C(R,"g");for(var H=M.line,Z=M.ch,ee=y.firstLine();H>=ee;H--,Z=-1){var re=y.getLine(H),N=p(re,R,Z<0?0:re.length-Z);if(N)return{from:h(H,N.index),to:h(H,N.index+N[0].length),match:N}}}function L(y,R,M){if(!b(R))return g(y,R,M);R=C(R,"gm");for(var H,Z=1,ee=y.getLine(M.line).length-M.ch,re=M.line,N=y.firstLine();re>=N;){for(var F=0;F=N;F++){var D=y.getLine(re--);H=H==null?D:D+` +`+H}Z*=2;var Q=p(H,R,ee);if(Q){var j=H.slice(0,Q.index).split(` +`),V=Q[0].split(` +`),_=re+j.length,K=j[j.length-1].length;return{from:h(_,K),to:h(_+V.length-1,V.length==1?K+V[0].length:V[V.length-1].length),match:Q}}}}var x,c;String.prototype.normalize?(x=function(y){return y.normalize("NFD").toLowerCase()},c=function(y){return y.normalize("NFD")}):(x=function(y){return y.toLowerCase()},c=function(y){return y});function d(y,R,M,H){if(y.length==R.length)return M;for(var Z=0,ee=M+Math.max(0,y.length-R.length);;){if(Z==ee)return Z;var re=Z+ee>>1,N=H(y.slice(0,re)).length;if(N==M)return re;N>M?ee=re:Z=re+1}}function w(y,R,M,H){if(!R.length)return null;var Z=H?x:c,ee=Z(R).split(/\r|\n\r?/);e:for(var re=M.line,N=M.ch,F=y.lastLine()+1-ee.length;re<=F;re++,N=0){var D=y.getLine(re).slice(N),Q=Z(D);if(ee.length==1){var j=Q.indexOf(ee[0]);if(j==-1)continue e;var M=d(D,Q,j,Z)+N;return{from:h(re,d(D,Q,j,Z)+N),to:h(re,d(D,Q,j+ee[0].length,Z)+N)}}else{var V=Q.length-ee[0].length;if(Q.slice(V)!=ee[0])continue e;for(var _=1;_=F;re--,N=-1){var D=y.getLine(re);N>-1&&(D=D.slice(0,N));var Q=Z(D);if(ee.length==1){var j=Q.lastIndexOf(ee[0]);if(j==-1)continue e;return{from:h(re,d(D,Q,j,Z)),to:h(re,d(D,Q,j+ee[0].length,Z))}}else{var V=ee[ee.length-1];if(Q.slice(0,V.length)!=V)continue e;for(var _=1,M=re-ee.length+1;_(this.doc.getLine(R.line)||"").length&&(R.ch=0,R.line++)),o.cmpPos(R,this.doc.clipPos(R))!=0))return this.atOccurrence=!1;var M=this.matches(y,R);if(this.afterEmptyMatch=M&&o.cmpPos(M.from,M.to)==0,M)return this.pos=M,this.atOccurrence=!0,this.pos.match||!0;var H=h(y?this.doc.firstLine():this.doc.lastLine()+1,0);return this.pos={from:H,to:H},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(y,R){if(this.atOccurrence){var M=o.splitLines(y);this.doc.replaceRange(M,this.pos.from,this.pos.to,R),this.pos.to=h(this.pos.from.line+M.length-1,M[M.length-1].length+(M.length==1?this.pos.from.ch:0))}}},o.defineExtension("getSearchCursor",function(y,R,M){return new z(this.doc,y,R,M)}),o.defineDocExtension("getSearchCursor",function(y,R,M){return new z(this,y,R,M)}),o.defineExtension("selectMatches",function(y,R){for(var M=[],H=this.getSearchCursor(y,this.getCursor("from"),R);H.findNext()&&!(o.cmpPos(H.to(),this.getCursor("to"))>0);)M.push({anchor:H.from(),head:H.to()});M.length&&this.setSelections(M,0)})})});var Vo=Ke((ws,Ss)=>{(function(o){typeof ws=="object"&&typeof Ss=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";function h(I,B,le,xe,q,T){this.indented=I,this.column=B,this.type=le,this.info=xe,this.align=q,this.prev=T}function v(I,B,le,xe){var q=I.indented;return I.context&&I.context.type=="statement"&&le!="statement"&&(q=I.context.indented),I.context=new h(q,B,le,xe,null,I.context)}function C(I){var B=I.context.type;return(B==")"||B=="]"||B=="}")&&(I.indented=I.context.indented),I.context=I.context.prev}function b(I,B,le){if(B.prevToken=="variable"||B.prevToken=="type"||/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(I.string.slice(0,le))||B.typeAtEndOfLine&&I.column()==I.indentation())return!0}function S(I){for(;;){if(!I||I.type=="top")return!0;if(I.type=="}"&&I.prev.info!="namespace")return!1;I=I.prev}}o.defineMode("clike",function(I,B){var le=I.indentUnit,xe=B.statementIndentUnit||le,q=B.dontAlignCalls,T=B.keywords||{},de=B.types||{},ze=B.builtin||{},pe=B.blockKeywords||{},Ee=B.defKeywords||{},ge=B.atoms||{},Oe=B.hooks||{},qe=B.multiLineStrings,Se=B.indentStatements!==!1,je=B.indentSwitch!==!1,Ze=B.namespaceSeparator,ke=B.isPunctuationChar||/[\[\]{}\(\),;\:\.]/,Je=B.numberStart||/[\d\.]/,He=B.number||/^(?:0x[a-f\d]+|0b[01]+|(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?)(u|ll?|l|f)?/i,Ge=B.isOperatorChar||/[+\-*&%=<>!?|\/]/,U=B.isIdentifierChar||/[\w\$_\xa1-\uffff]/,G=B.isReservedIdentifier||!1,ce,Be;function te(we,Me){var Le=we.next();if(Oe[Le]){var $=Oe[Le](we,Me);if($!==!1)return $}if(Le=='"'||Le=="'")return Me.tokenize=fe(Le),Me.tokenize(we,Me);if(Je.test(Le)){if(we.backUp(1),we.match(He))return"number";we.next()}if(ke.test(Le))return ce=Le,null;if(Le=="/"){if(we.eat("*"))return Me.tokenize=oe,oe(we,Me);if(we.eat("/"))return we.skipToEnd(),"comment"}if(Ge.test(Le)){for(;!we.match(/^\/[\/*]/,!1)&&we.eat(Ge););return"operator"}if(we.eatWhile(U),Ze)for(;we.match(Ze);)we.eatWhile(U);var W=we.current();return p(T,W)?(p(pe,W)&&(ce="newstatement"),p(Ee,W)&&(Be=!0),"keyword"):p(de,W)?"type":p(ze,W)||G&&G(W)?(p(pe,W)&&(ce="newstatement"),"builtin"):p(ge,W)?"atom":"variable"}function fe(we){return function(Me,Le){for(var $=!1,W,se=!1;(W=Me.next())!=null;){if(W==we&&!$){se=!0;break}$=!$&&W=="\\"}return(se||!($||qe))&&(Le.tokenize=null),"string"}}function oe(we,Me){for(var Le=!1,$;$=we.next();){if($=="/"&&Le){Me.tokenize=null;break}Le=$=="*"}return"comment"}function Ue(we,Me){B.typeFirstDefinitions&&we.eol()&&S(Me.context)&&(Me.typeAtEndOfLine=b(we,Me,we.pos))}return{startState:function(we){return{tokenize:null,context:new h((we||0)-le,0,"top",null,!1),indented:0,startOfLine:!0,prevToken:null}},token:function(we,Me){var Le=Me.context;if(we.sol()&&(Le.align==null&&(Le.align=!1),Me.indented=we.indentation(),Me.startOfLine=!0),we.eatSpace())return Ue(we,Me),null;ce=Be=null;var $=(Me.tokenize||te)(we,Me);if($=="comment"||$=="meta")return $;if(Le.align==null&&(Le.align=!0),ce==";"||ce==":"||ce==","&&we.match(/^\s*(?:\/\/.*)?$/,!1))for(;Me.context.type=="statement";)C(Me);else if(ce=="{")v(Me,we.column(),"}");else if(ce=="[")v(Me,we.column(),"]");else if(ce=="(")v(Me,we.column(),")");else if(ce=="}"){for(;Le.type=="statement";)Le=C(Me);for(Le.type=="}"&&(Le=C(Me));Le.type=="statement";)Le=C(Me)}else ce==Le.type?C(Me):Se&&((Le.type=="}"||Le.type=="top")&&ce!=";"||Le.type=="statement"&&ce=="newstatement")&&v(Me,we.column(),"statement",we.current());if($=="variable"&&(Me.prevToken=="def"||B.typeFirstDefinitions&&b(we,Me,we.start)&&S(Me.context)&&we.match(/^\s*\(/,!1))&&($="def"),Oe.token){var W=Oe.token(we,Me,$);W!==void 0&&($=W)}return $=="def"&&B.styleDefs===!1&&($="variable"),Me.startOfLine=!1,Me.prevToken=Be?"def":$||ce,Ue(we,Me),$},indent:function(we,Me){if(we.tokenize!=te&&we.tokenize!=null||we.typeAtEndOfLine&&S(we.context))return o.Pass;var Le=we.context,$=Me&&Me.charAt(0),W=$==Le.type;if(Le.type=="statement"&&$=="}"&&(Le=Le.prev),B.dontIndentStatements)for(;Le.type=="statement"&&B.dontIndentStatements.test(Le.info);)Le=Le.prev;if(Oe.indent){var se=Oe.indent(we,Le,Me,le);if(typeof se=="number")return se}var De=Le.prev&&Le.prev.info=="switch";if(B.allmanIndentation&&/[{(]/.test($)){for(;Le.type!="top"&&Le.type!="}";)Le=Le.prev;return Le.indented}return Le.type=="statement"?Le.indented+($=="{"?0:xe):Le.align&&(!q||Le.type!=")")?Le.column+(W?0:1):Le.type==")"&&!W?Le.indented+xe:Le.indented+(W?0:le)+(!W&&De&&!/^(?:case|default)\b/.test(Me)?le:0)},electricInput:je?/^\s*(?:case .*?:|default:|\{\}?|\})$/:/^\s*[{}]$/,blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:" * ",lineComment:"//",fold:"brace"}});function s(I){for(var B={},le=I.split(" "),xe=0;xe!?|\/#:@]/,hooks:{"@":function(I){return I.eatWhile(/[\w\$_]/),"meta"},'"':function(I,B){return I.match('""')?(B.tokenize=j,B.tokenize(I,B)):!1},"'":function(I){return I.match(/^(\\[^'\s]+|[^\\'])'/)?"string-2":(I.eatWhile(/[\w\$_\xa1-\uffff]/),"atom")},"=":function(I,B){var le=B.context;return le.type=="}"&&le.align&&I.eat(">")?(B.context=new h(le.indented,le.column,le.type,le.info,null,le.prev),"operator"):!1},"/":function(I,B){return I.eat("*")?(B.tokenize=V(1),B.tokenize(I,B)):!1}},modeProps:{closeBrackets:{pairs:'()[]{}""',triples:'"'}}});function _(I){return function(B,le){for(var xe=!1,q,T=!1;!B.eol();){if(!I&&!xe&&B.match('"')){T=!0;break}if(I&&B.match('"""')){T=!0;break}q=B.next(),!xe&&q=="$"&&B.match("{")&&B.skipTo("}"),xe=!xe&&q=="\\"&&!I}return(T||!I)&&(le.tokenize=null),"string"}}Q("text/x-kotlin",{name:"clike",keywords:s("package as typealias class interface this super val operator var fun for is in This throw return annotation break continue object if else while do try when !in !is as? file import where by get set abstract enum open inner override private public internal protected catch finally out final vararg reified dynamic companion constructor init sealed field property receiver param sparam lateinit data inline noinline tailrec external annotation crossinline const operator infix suspend actual expect setparam value"),types:s("Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable Compiler Double Exception Float Integer Long Math Number Object Package Pair Process Runtime Runnable SecurityManager Short StackTraceElement StrictMath String StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void Annotation Any BooleanArray ByteArray Char CharArray DeprecationLevel DoubleArray Enum FloatArray Function Int IntArray Lazy LazyThreadSafetyMode LongArray Nothing ShortArray Unit"),intendSwitch:!1,indentStatements:!1,multiLineStrings:!0,number:/^(?:0x[a-f\d_]+|0b[01_]+|(?:[\d_]+(\.\d+)?|\.\d+)(?:e[-+]?[\d_]+)?)(u|ll?|l|f)?/i,blockKeywords:s("catch class do else finally for if where try while enum"),defKeywords:s("class val var object interface fun"),atoms:s("true false null this"),hooks:{"@":function(I){return I.eatWhile(/[\w\$_]/),"meta"},"*":function(I,B){return B.prevToken=="."?"variable":"operator"},'"':function(I,B){return B.tokenize=_(I.match('""')),B.tokenize(I,B)},"/":function(I,B){return I.eat("*")?(B.tokenize=V(1),B.tokenize(I,B)):!1},indent:function(I,B,le,xe){var q=le&&le.charAt(0);if((I.prevToken=="}"||I.prevToken==")")&&le=="")return I.indented;if(I.prevToken=="operator"&&le!="}"&&I.context.type!="}"||I.prevToken=="variable"&&q=="."||(I.prevToken=="}"||I.prevToken==")")&&q==".")return xe*2+B.indented;if(B.align&&B.type=="}")return B.indented+(I.context.type==(le||"").charAt(0)?0:xe)}},modeProps:{closeBrackets:{triples:'"'}}}),Q(["x-shader/x-vertex","x-shader/x-fragment"],{name:"clike",keywords:s("sampler1D sampler2D sampler3D samplerCube sampler1DShadow sampler2DShadow const attribute uniform varying break continue discard return for while do if else struct in out inout"),types:s("float int bool void vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 mat2 mat3 mat4"),blockKeywords:s("for while do if else struct"),builtin:s("radians degrees sin cos tan asin acos atan pow exp log exp2 sqrt inversesqrt abs sign floor ceil fract mod min max clamp mix step smoothstep length distance dot cross normalize ftransform faceforward reflect refract matrixCompMult lessThan lessThanEqual greaterThan greaterThanEqual equal notEqual any all not texture1D texture1DProj texture1DLod texture1DProjLod texture2D texture2DProj texture2DLod texture2DProjLod texture3D texture3DProj texture3DLod texture3DProjLod textureCube textureCubeLod shadow1D shadow2D shadow1DProj shadow2DProj shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod dFdx dFdy fwidth noise1 noise2 noise3 noise4"),atoms:s("true false gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_FogCoord gl_PointCoord gl_Position gl_PointSize gl_ClipVertex gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor gl_TexCoord gl_FogFragCoord gl_FragCoord gl_FrontFacing gl_FragData gl_FragDepth gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse gl_TextureMatrixTranspose gl_ModelViewMatrixInverseTranspose gl_ProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixInverseTranspose gl_TextureMatrixInverseTranspose gl_NormalScale gl_DepthRange gl_ClipPlane gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel gl_FrontLightModelProduct gl_BackLightModelProduct gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ gl_FogParameters gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits gl_MaxDrawBuffers"),indentSwitch:!1,hooks:{"#":M},modeProps:{fold:["brace","include"]}}),Q("text/x-nesc",{name:"clike",keywords:s(g+" as atomic async call command component components configuration event generic implementation includes interface module new norace nx_struct nx_union post provides signal task uses abstract extends"),types:E,blockKeywords:s(y),atoms:s("null true false"),hooks:{"#":M},modeProps:{fold:["brace","include"]}}),Q("text/x-objectivec",{name:"clike",keywords:s(g+" "+x),types:z,builtin:s(c),blockKeywords:s(y+" @synthesize @try @catch @finally @autoreleasepool @synchronized"),defKeywords:s(R+" @interface @implementation @protocol @class"),dontIndentStatements:/^@.*$/,typeFirstDefinitions:!0,atoms:s("YES NO NULL Nil nil true false nullptr"),isReservedIdentifier:Z,hooks:{"#":M,"*":H},modeProps:{fold:["brace","include"]}}),Q("text/x-objectivec++",{name:"clike",keywords:s(g+" "+x+" "+L),types:z,builtin:s(c),blockKeywords:s(y+" @synthesize @try @catch @finally @autoreleasepool @synchronized class try catch"),defKeywords:s(R+" @interface @implementation @protocol @class class namespace"),dontIndentStatements:/^@.*$|^template$/,typeFirstDefinitions:!0,atoms:s("YES NO NULL Nil nil true false nullptr"),isReservedIdentifier:Z,hooks:{"#":M,"*":H,u:re,U:re,L:re,R:re,0:ee,1:ee,2:ee,3:ee,4:ee,5:ee,6:ee,7:ee,8:ee,9:ee,token:function(I,B,le){if(le=="variable"&&I.peek()=="("&&(B.prevToken==";"||B.prevToken==null||B.prevToken=="}")&&N(I.current()))return"def"}},namespaceSeparator:"::",modeProps:{fold:["brace","include"]}}),Q("text/x-squirrel",{name:"clike",keywords:s("base break clone continue const default delete enum extends function in class foreach local resume return this throw typeof yield constructor instanceof static"),types:E,blockKeywords:s("case catch class else for foreach if switch try while"),defKeywords:s("function local class"),typeFirstDefinitions:!0,atoms:s("true false null"),hooks:{"#":M},modeProps:{fold:["brace","include"]}});var K=null;function X(I){return function(B,le){for(var xe=!1,q,T=!1;!B.eol();){if(!xe&&B.match('"')&&(I=="single"||B.match('""'))){T=!0;break}if(!xe&&B.match("``")){K=X(I),T=!0;break}q=B.next(),xe=I=="single"&&!xe&&q=="\\"}return T&&(le.tokenize=null),"string"}}Q("text/x-ceylon",{name:"clike",keywords:s("abstracts alias assembly assert assign break case catch class continue dynamic else exists extends finally for function given if import in interface is let module new nonempty object of out outer package return satisfies super switch then this throw try value void while"),types:function(I){var B=I.charAt(0);return B===B.toUpperCase()&&B!==B.toLowerCase()},blockKeywords:s("case catch class dynamic else finally for function if interface module new object switch try while"),defKeywords:s("class dynamic function interface module object package value"),builtin:s("abstract actual aliased annotation by default deprecated doc final formal late license native optional sealed see serializable shared suppressWarnings tagged throws variable"),isPunctuationChar:/[\[\]{}\(\),;\:\.`]/,isOperatorChar:/[+\-*&%=<>!?|^~:\/]/,numberStart:/[\d#$]/,number:/^(?:#[\da-fA-F_]+|\$[01_]+|[\d_]+[kMGTPmunpf]?|[\d_]+\.[\d_]+(?:[eE][-+]?\d+|[kMGTPmunpf]|)|)/i,multiLineStrings:!0,typeFirstDefinitions:!0,atoms:s("true false null larger smaller equal empty finished"),indentSwitch:!1,styleDefs:!1,hooks:{"@":function(I){return I.eatWhile(/[\w\$_]/),"meta"},'"':function(I,B){return B.tokenize=X(I.match('""')?"triple":"single"),B.tokenize(I,B)},"`":function(I,B){return!K||!I.match("`")?!1:(B.tokenize=K,K=null,B.tokenize(I,B))},"'":function(I){return I.eatWhile(/[\w\$_\xa1-\uffff]/),"atom"},token:function(I,B,le){if((le=="variable"||le=="type")&&B.prevToken==".")return"variable-2"}},modeProps:{fold:["brace","import"],closeBrackets:{triples:'"'}}})})});var Cs=Ke((Ts,Ls)=>{(function(o){typeof Ts=="object"&&typeof Ls=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("cmake",function(){var h=/({)?[a-zA-Z0-9_]+(})?/;function v(b,S){for(var s,p,g=!1;!b.eol()&&(s=b.next())!=S.pending;){if(s==="$"&&p!="\\"&&S.pending=='"'){g=!0;break}p=s}return g&&b.backUp(1),s==S.pending?S.continueString=!1:S.continueString=!0,"string"}function C(b,S){var s=b.next();return s==="$"?b.match(h)?"variable-2":"variable":S.continueString?(b.backUp(1),v(b,S)):b.match(/(\s+)?\w+\(/)||b.match(/(\s+)?\w+\ \(/)?(b.backUp(1),"def"):s=="#"?(b.skipToEnd(),"comment"):s=="'"||s=='"'?(S.pending=s,v(b,S)):s=="("||s==")"?"bracket":s.match(/[0-9]/)?"number":(b.eatWhile(/[\w-]/),null)}return{startState:function(){var b={};return b.inDefinition=!1,b.inInclude=!1,b.continueString=!1,b.pending=!1,b},token:function(b,S){return b.eatSpace()?null:C(b,S)}}}),o.defineMIME("text/x-cmake","cmake")})});var gn=Ke((Es,zs)=>{(function(o){typeof Es=="object"&&typeof zs=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("css",function(F,D){var Q=D.inline;D.propertyKeywords||(D=o.resolveMode("text/css"));var j=F.indentUnit,V=D.tokenHooks,_=D.documentTypes||{},K=D.mediaTypes||{},X=D.mediaFeatures||{},I=D.mediaValueKeywords||{},B=D.propertyKeywords||{},le=D.nonStandardPropertyKeywords||{},xe=D.fontProperties||{},q=D.counterDescriptors||{},T=D.colorKeywords||{},de=D.valueKeywords||{},ze=D.allowNested,pe=D.lineComment,Ee=D.supportsAtComponent===!0,ge=F.highlightNonStandardPropertyKeywords!==!1,Oe,qe;function Se(te,fe){return Oe=fe,te}function je(te,fe){var oe=te.next();if(V[oe]){var Ue=V[oe](te,fe);if(Ue!==!1)return Ue}if(oe=="@")return te.eatWhile(/[\w\\\-]/),Se("def",te.current());if(oe=="="||(oe=="~"||oe=="|")&&te.eat("="))return Se(null,"compare");if(oe=='"'||oe=="'")return fe.tokenize=Ze(oe),fe.tokenize(te,fe);if(oe=="#")return te.eatWhile(/[\w\\\-]/),Se("atom","hash");if(oe=="!")return te.match(/^\s*\w*/),Se("keyword","important");if(/\d/.test(oe)||oe=="."&&te.eat(/\d/))return te.eatWhile(/[\w.%]/),Se("number","unit");if(oe==="-"){if(/[\d.]/.test(te.peek()))return te.eatWhile(/[\w.%]/),Se("number","unit");if(te.match(/^-[\w\\\-]*/))return te.eatWhile(/[\w\\\-]/),te.match(/^\s*:/,!1)?Se("variable-2","variable-definition"):Se("variable-2","variable");if(te.match(/^\w+-/))return Se("meta","meta")}else return/[,+>*\/]/.test(oe)?Se(null,"select-op"):oe=="."&&te.match(/^-?[_a-z][_a-z0-9-]*/i)?Se("qualifier","qualifier"):/[:;{}\[\]\(\)]/.test(oe)?Se(null,oe):te.match(/^[\w-.]+(?=\()/)?(/^(url(-prefix)?|domain|regexp)$/i.test(te.current())&&(fe.tokenize=ke),Se("variable callee","variable")):/[\w\\\-]/.test(oe)?(te.eatWhile(/[\w\\\-]/),Se("property","word")):Se(null,null)}function Ze(te){return function(fe,oe){for(var Ue=!1,we;(we=fe.next())!=null;){if(we==te&&!Ue){te==")"&&fe.backUp(1);break}Ue=!Ue&&we=="\\"}return(we==te||!Ue&&te!=")")&&(oe.tokenize=null),Se("string","string")}}function ke(te,fe){return te.next(),te.match(/^\s*[\"\')]/,!1)?fe.tokenize=null:fe.tokenize=Ze(")"),Se(null,"(")}function Je(te,fe,oe){this.type=te,this.indent=fe,this.prev=oe}function He(te,fe,oe,Ue){return te.context=new Je(oe,fe.indentation()+(Ue===!1?0:j),te.context),oe}function Ge(te){return te.context.prev&&(te.context=te.context.prev),te.context.type}function U(te,fe,oe){return Be[oe.context.type](te,fe,oe)}function G(te,fe,oe,Ue){for(var we=Ue||1;we>0;we--)oe.context=oe.context.prev;return U(te,fe,oe)}function ce(te){var fe=te.current().toLowerCase();de.hasOwnProperty(fe)?qe="atom":T.hasOwnProperty(fe)?qe="keyword":qe="variable"}var Be={};return Be.top=function(te,fe,oe){if(te=="{")return He(oe,fe,"block");if(te=="}"&&oe.context.prev)return Ge(oe);if(Ee&&/@component/i.test(te))return He(oe,fe,"atComponentBlock");if(/^@(-moz-)?document$/i.test(te))return He(oe,fe,"documentTypes");if(/^@(media|supports|(-moz-)?document|import)$/i.test(te))return He(oe,fe,"atBlock");if(/^@(font-face|counter-style)/i.test(te))return oe.stateArg=te,"restricted_atBlock_before";if(/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(te))return"keyframes";if(te&&te.charAt(0)=="@")return He(oe,fe,"at");if(te=="hash")qe="builtin";else if(te=="word")qe="tag";else{if(te=="variable-definition")return"maybeprop";if(te=="interpolation")return He(oe,fe,"interpolation");if(te==":")return"pseudo";if(ze&&te=="(")return He(oe,fe,"parens")}return oe.context.type},Be.block=function(te,fe,oe){if(te=="word"){var Ue=fe.current().toLowerCase();return B.hasOwnProperty(Ue)?(qe="property","maybeprop"):le.hasOwnProperty(Ue)?(qe=ge?"string-2":"property","maybeprop"):ze?(qe=fe.match(/^\s*:(?:\s|$)/,!1)?"property":"tag","block"):(qe+=" error","maybeprop")}else return te=="meta"?"block":!ze&&(te=="hash"||te=="qualifier")?(qe="error","block"):Be.top(te,fe,oe)},Be.maybeprop=function(te,fe,oe){return te==":"?He(oe,fe,"prop"):U(te,fe,oe)},Be.prop=function(te,fe,oe){if(te==";")return Ge(oe);if(te=="{"&&ze)return He(oe,fe,"propBlock");if(te=="}"||te=="{")return G(te,fe,oe);if(te=="(")return He(oe,fe,"parens");if(te=="hash"&&!/^#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(fe.current()))qe+=" error";else if(te=="word")ce(fe);else if(te=="interpolation")return He(oe,fe,"interpolation");return"prop"},Be.propBlock=function(te,fe,oe){return te=="}"?Ge(oe):te=="word"?(qe="property","maybeprop"):oe.context.type},Be.parens=function(te,fe,oe){return te=="{"||te=="}"?G(te,fe,oe):te==")"?Ge(oe):te=="("?He(oe,fe,"parens"):te=="interpolation"?He(oe,fe,"interpolation"):(te=="word"&&ce(fe),"parens")},Be.pseudo=function(te,fe,oe){return te=="meta"?"pseudo":te=="word"?(qe="variable-3",oe.context.type):U(te,fe,oe)},Be.documentTypes=function(te,fe,oe){return te=="word"&&_.hasOwnProperty(fe.current())?(qe="tag",oe.context.type):Be.atBlock(te,fe,oe)},Be.atBlock=function(te,fe,oe){if(te=="(")return He(oe,fe,"atBlock_parens");if(te=="}"||te==";")return G(te,fe,oe);if(te=="{")return Ge(oe)&&He(oe,fe,ze?"block":"top");if(te=="interpolation")return He(oe,fe,"interpolation");if(te=="word"){var Ue=fe.current().toLowerCase();Ue=="only"||Ue=="not"||Ue=="and"||Ue=="or"?qe="keyword":K.hasOwnProperty(Ue)?qe="attribute":X.hasOwnProperty(Ue)?qe="property":I.hasOwnProperty(Ue)?qe="keyword":B.hasOwnProperty(Ue)?qe="property":le.hasOwnProperty(Ue)?qe=ge?"string-2":"property":de.hasOwnProperty(Ue)?qe="atom":T.hasOwnProperty(Ue)?qe="keyword":qe="error"}return oe.context.type},Be.atComponentBlock=function(te,fe,oe){return te=="}"?G(te,fe,oe):te=="{"?Ge(oe)&&He(oe,fe,ze?"block":"top",!1):(te=="word"&&(qe="error"),oe.context.type)},Be.atBlock_parens=function(te,fe,oe){return te==")"?Ge(oe):te=="{"||te=="}"?G(te,fe,oe,2):Be.atBlock(te,fe,oe)},Be.restricted_atBlock_before=function(te,fe,oe){return te=="{"?He(oe,fe,"restricted_atBlock"):te=="word"&&oe.stateArg=="@counter-style"?(qe="variable","restricted_atBlock_before"):U(te,fe,oe)},Be.restricted_atBlock=function(te,fe,oe){return te=="}"?(oe.stateArg=null,Ge(oe)):te=="word"?(oe.stateArg=="@font-face"&&!xe.hasOwnProperty(fe.current().toLowerCase())||oe.stateArg=="@counter-style"&&!q.hasOwnProperty(fe.current().toLowerCase())?qe="error":qe="property","maybeprop"):"restricted_atBlock"},Be.keyframes=function(te,fe,oe){return te=="word"?(qe="variable","keyframes"):te=="{"?He(oe,fe,"top"):U(te,fe,oe)},Be.at=function(te,fe,oe){return te==";"?Ge(oe):te=="{"||te=="}"?G(te,fe,oe):(te=="word"?qe="tag":te=="hash"&&(qe="builtin"),"at")},Be.interpolation=function(te,fe,oe){return te=="}"?Ge(oe):te=="{"||te==";"?G(te,fe,oe):(te=="word"?qe="variable":te!="variable"&&te!="("&&te!=")"&&(qe="error"),"interpolation")},{startState:function(te){return{tokenize:null,state:Q?"block":"top",stateArg:null,context:new Je(Q?"block":"top",te||0,null)}},token:function(te,fe){if(!fe.tokenize&&te.eatSpace())return null;var oe=(fe.tokenize||je)(te,fe);return oe&&typeof oe=="object"&&(Oe=oe[1],oe=oe[0]),qe=oe,Oe!="comment"&&(fe.state=Be[fe.state](Oe,te,fe)),qe},indent:function(te,fe){var oe=te.context,Ue=fe&&fe.charAt(0),we=oe.indent;return oe.type=="prop"&&(Ue=="}"||Ue==")")&&(oe=oe.prev),oe.prev&&(Ue=="}"&&(oe.type=="block"||oe.type=="top"||oe.type=="interpolation"||oe.type=="restricted_atBlock")?(oe=oe.prev,we=oe.indent):(Ue==")"&&(oe.type=="parens"||oe.type=="atBlock_parens")||Ue=="{"&&(oe.type=="at"||oe.type=="atBlock"))&&(we=Math.max(0,oe.indent-j))),we},electricChars:"}",blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:" * ",lineComment:pe,fold:"brace"}});function h(F){for(var D={},Q=0;Q{(function(o){typeof Ms=="object"&&typeof As=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("diff",function(){var h={"+":"positive","-":"negative","@":"meta"};return{token:function(v){var C=v.string.search(/[\t ]+?$/);if(!v.sol()||C===0)return v.skipToEnd(),("error "+(h[v.string.charAt(0)]||"")).replace(/ $/,"");var b=h[v.peek()]||v.skipToEnd();return C===-1?v.skipToEnd():v.pos=C,b}}}),o.defineMIME("text/x-diff","diff")})});var mn=Ke((qs,Is)=>{(function(o){typeof qs=="object"&&typeof Is=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";var h={autoSelfClosers:{area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed:{dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},contextGrabbers:{dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}},doNotIndent:{pre:!0},allowUnquoted:!0,allowMissing:!0,caseFold:!0},v={autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,allowMissingTagName:!1,caseFold:!1};o.defineMode("xml",function(C,b){var S=C.indentUnit,s={},p=b.htmlMode?h:v;for(var g in p)s[g]=p[g];for(var g in b)s[g]=b[g];var L,x;function c(_,K){function X(le){return K.tokenize=le,le(_,K)}var I=_.next();if(I=="<")return _.eat("!")?_.eat("[")?_.match("CDATA[")?X(E("atom","]]>")):null:_.match("--")?X(E("comment","-->")):_.match("DOCTYPE",!0,!0)?(_.eatWhile(/[\w\._\-]/),X(z(1))):null:_.eat("?")?(_.eatWhile(/[\w\._\-]/),K.tokenize=E("meta","?>"),"meta"):(L=_.eat("/")?"closeTag":"openTag",K.tokenize=d,"tag bracket");if(I=="&"){var B;return _.eat("#")?_.eat("x")?B=_.eatWhile(/[a-fA-F\d]/)&&_.eat(";"):B=_.eatWhile(/[\d]/)&&_.eat(";"):B=_.eatWhile(/[\w\.\-:]/)&&_.eat(";"),B?"atom":"error"}else return _.eatWhile(/[^&<]/),null}c.isInText=!0;function d(_,K){var X=_.next();if(X==">"||X=="/"&&_.eat(">"))return K.tokenize=c,L=X==">"?"endTag":"selfcloseTag","tag bracket";if(X=="=")return L="equals",null;if(X=="<"){K.tokenize=c,K.state=Z,K.tagName=K.tagStart=null;var I=K.tokenize(_,K);return I?I+" tag error":"tag error"}else return/[\'\"]/.test(X)?(K.tokenize=w(X),K.stringStartCol=_.column(),K.tokenize(_,K)):(_.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/),"word")}function w(_){var K=function(X,I){for(;!X.eol();)if(X.next()==_){I.tokenize=d;break}return"string"};return K.isInAttribute=!0,K}function E(_,K){return function(X,I){for(;!X.eol();){if(X.match(K)){I.tokenize=c;break}X.next()}return _}}function z(_){return function(K,X){for(var I;(I=K.next())!=null;){if(I=="<")return X.tokenize=z(_+1),X.tokenize(K,X);if(I==">")if(_==1){X.tokenize=c;break}else return X.tokenize=z(_-1),X.tokenize(K,X)}return"meta"}}function y(_){return _&&_.toLowerCase()}function R(_,K,X){this.prev=_.context,this.tagName=K||"",this.indent=_.indented,this.startOfLine=X,(s.doNotIndent.hasOwnProperty(K)||_.context&&_.context.noIndent)&&(this.noIndent=!0)}function M(_){_.context&&(_.context=_.context.prev)}function H(_,K){for(var X;;){if(!_.context||(X=_.context.tagName,!s.contextGrabbers.hasOwnProperty(y(X))||!s.contextGrabbers[y(X)].hasOwnProperty(y(K))))return;M(_)}}function Z(_,K,X){return _=="openTag"?(X.tagStart=K.column(),ee):_=="closeTag"?re:Z}function ee(_,K,X){return _=="word"?(X.tagName=K.current(),x="tag",D):s.allowMissingTagName&&_=="endTag"?(x="tag bracket",D(_,K,X)):(x="error",ee)}function re(_,K,X){if(_=="word"){var I=K.current();return X.context&&X.context.tagName!=I&&s.implicitlyClosed.hasOwnProperty(y(X.context.tagName))&&M(X),X.context&&X.context.tagName==I||s.matchClosing===!1?(x="tag",N):(x="tag error",F)}else return s.allowMissingTagName&&_=="endTag"?(x="tag bracket",N(_,K,X)):(x="error",F)}function N(_,K,X){return _!="endTag"?(x="error",N):(M(X),Z)}function F(_,K,X){return x="error",N(_,K,X)}function D(_,K,X){if(_=="word")return x="attribute",Q;if(_=="endTag"||_=="selfcloseTag"){var I=X.tagName,B=X.tagStart;return X.tagName=X.tagStart=null,_=="selfcloseTag"||s.autoSelfClosers.hasOwnProperty(y(I))?H(X,I):(H(X,I),X.context=new R(X,I,B==X.indented)),Z}return x="error",D}function Q(_,K,X){return _=="equals"?j:(s.allowMissing||(x="error"),D(_,K,X))}function j(_,K,X){return _=="string"?V:_=="word"&&s.allowUnquoted?(x="string",D):(x="error",D(_,K,X))}function V(_,K,X){return _=="string"?V:D(_,K,X)}return{startState:function(_){var K={tokenize:c,state:Z,indented:_||0,tagName:null,tagStart:null,context:null};return _!=null&&(K.baseIndent=_),K},token:function(_,K){if(!K.tagName&&_.sol()&&(K.indented=_.indentation()),_.eatSpace())return null;L=null;var X=K.tokenize(_,K);return(X||L)&&X!="comment"&&(x=null,K.state=K.state(L||X,_,K),x&&(X=x=="error"?X+" error":x)),X},indent:function(_,K,X){var I=_.context;if(_.tokenize.isInAttribute)return _.tagStart==_.indented?_.stringStartCol+1:_.indented+S;if(I&&I.noIndent)return o.Pass;if(_.tokenize!=d&&_.tokenize!=c)return X?X.match(/^(\s*)/)[0].length:0;if(_.tagName)return s.multilineTagIndentPastTag!==!1?_.tagStart+_.tagName.length+2:_.tagStart+S*(s.multilineTagIndentFactor||1);if(s.alignCDATA&&/$/,blockCommentStart:"",configuration:s.htmlMode?"html":"xml",helperType:s.htmlMode?"html":"xml",skipAttribute:function(_){_.state==j&&(_.state=D)},xmlCurrentTag:function(_){return _.tagName?{name:_.tagName,close:_.type=="closeTag"}:null},xmlCurrentContext:function(_){for(var K=[],X=_.context;X;X=X.prev)K.push(X.tagName);return K.reverse()}}}),o.defineMIME("text/xml","xml"),o.defineMIME("application/xml","xml"),o.mimeModes.hasOwnProperty("text/html")||o.defineMIME("text/html",{name:"xml",htmlMode:!0})})});var vn=Ke((Fs,Ns)=>{(function(o){typeof Fs=="object"&&typeof Ns=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("javascript",function(h,v){var C=h.indentUnit,b=v.statementIndent,S=v.jsonld,s=v.json||S,p=v.trackScope!==!1,g=v.typescript,L=v.wordCharacters||/[\w$\xa1-\uffff]/,x=function(){function k(pt){return{type:pt,style:"keyword"}}var O=k("keyword a"),ae=k("keyword b"),he=k("keyword c"),ne=k("keyword d"),ye=k("operator"),Xe={type:"atom",style:"atom"};return{if:k("if"),while:O,with:O,else:ae,do:ae,try:ae,finally:ae,return:ne,break:ne,continue:ne,new:k("new"),delete:he,void:he,throw:he,debugger:k("debugger"),var:k("var"),const:k("var"),let:k("var"),function:k("function"),catch:k("catch"),for:k("for"),switch:k("switch"),case:k("case"),default:k("default"),in:ye,typeof:ye,instanceof:ye,true:Xe,false:Xe,null:Xe,undefined:Xe,NaN:Xe,Infinity:Xe,this:k("this"),class:k("class"),super:k("atom"),yield:he,export:k("export"),import:k("import"),extends:he,await:he}}(),c=/[+\-*&%=<>!?|~^@]/,d=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function w(k){for(var O=!1,ae,he=!1;(ae=k.next())!=null;){if(!O){if(ae=="/"&&!he)return;ae=="["?he=!0:he&&ae=="]"&&(he=!1)}O=!O&&ae=="\\"}}var E,z;function y(k,O,ae){return E=k,z=ae,O}function R(k,O){var ae=k.next();if(ae=='"'||ae=="'")return O.tokenize=M(ae),O.tokenize(k,O);if(ae=="."&&k.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return y("number","number");if(ae=="."&&k.match(".."))return y("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(ae))return y(ae);if(ae=="="&&k.eat(">"))return y("=>","operator");if(ae=="0"&&k.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return y("number","number");if(/\d/.test(ae))return k.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),y("number","number");if(ae=="/")return k.eat("*")?(O.tokenize=H,H(k,O)):k.eat("/")?(k.skipToEnd(),y("comment","comment")):jt(k,O,1)?(w(k),k.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),y("regexp","string-2")):(k.eat("="),y("operator","operator",k.current()));if(ae=="`")return O.tokenize=Z,Z(k,O);if(ae=="#"&&k.peek()=="!")return k.skipToEnd(),y("meta","meta");if(ae=="#"&&k.eatWhile(L))return y("variable","property");if(ae=="<"&&k.match("!--")||ae=="-"&&k.match("->")&&!/\S/.test(k.string.slice(0,k.start)))return k.skipToEnd(),y("comment","comment");if(c.test(ae))return(ae!=">"||!O.lexical||O.lexical.type!=">")&&(k.eat("=")?(ae=="!"||ae=="=")&&k.eat("="):/[<>*+\-|&?]/.test(ae)&&(k.eat(ae),ae==">"&&k.eat(ae))),ae=="?"&&k.eat(".")?y("."):y("operator","operator",k.current());if(L.test(ae)){k.eatWhile(L);var he=k.current();if(O.lastType!="."){if(x.propertyIsEnumerable(he)){var ne=x[he];return y(ne.type,ne.style,he)}if(he=="async"&&k.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return y("async","keyword",he)}return y("variable","variable",he)}}function M(k){return function(O,ae){var he=!1,ne;if(S&&O.peek()=="@"&&O.match(d))return ae.tokenize=R,y("jsonld-keyword","meta");for(;(ne=O.next())!=null&&!(ne==k&&!he);)he=!he&&ne=="\\";return he||(ae.tokenize=R),y("string","string")}}function H(k,O){for(var ae=!1,he;he=k.next();){if(he=="/"&&ae){O.tokenize=R;break}ae=he=="*"}return y("comment","comment")}function Z(k,O){for(var ae=!1,he;(he=k.next())!=null;){if(!ae&&(he=="`"||he=="$"&&k.eat("{"))){O.tokenize=R;break}ae=!ae&&he=="\\"}return y("quasi","string-2",k.current())}var ee="([{}])";function re(k,O){O.fatArrowAt&&(O.fatArrowAt=null);var ae=k.string.indexOf("=>",k.start);if(!(ae<0)){if(g){var he=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(k.string.slice(k.start,ae));he&&(ae=he.index)}for(var ne=0,ye=!1,Xe=ae-1;Xe>=0;--Xe){var pt=k.string.charAt(Xe),Et=ee.indexOf(pt);if(Et>=0&&Et<3){if(!ne){++Xe;break}if(--ne==0){pt=="("&&(ye=!0);break}}else if(Et>=3&&Et<6)++ne;else if(L.test(pt))ye=!0;else if(/["'\/`]/.test(pt))for(;;--Xe){if(Xe==0)return;var Zr=k.string.charAt(Xe-1);if(Zr==pt&&k.string.charAt(Xe-2)!="\\"){Xe--;break}}else if(ye&&!ne){++Xe;break}}ye&&!ne&&(O.fatArrowAt=Xe)}}var N={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function F(k,O,ae,he,ne,ye){this.indented=k,this.column=O,this.type=ae,this.prev=ne,this.info=ye,he!=null&&(this.align=he)}function D(k,O){if(!p)return!1;for(var ae=k.localVars;ae;ae=ae.next)if(ae.name==O)return!0;for(var he=k.context;he;he=he.prev)for(var ae=he.vars;ae;ae=ae.next)if(ae.name==O)return!0}function Q(k,O,ae,he,ne){var ye=k.cc;for(j.state=k,j.stream=ne,j.marked=null,j.cc=ye,j.style=O,k.lexical.hasOwnProperty("align")||(k.lexical.align=!0);;){var Xe=ye.length?ye.pop():s?Se:Oe;if(Xe(ae,he)){for(;ye.length&&ye[ye.length-1].lex;)ye.pop()();return j.marked?j.marked:ae=="variable"&&D(k,he)?"variable-2":O}}}var j={state:null,column:null,marked:null,cc:null};function V(){for(var k=arguments.length-1;k>=0;k--)j.cc.push(arguments[k])}function _(){return V.apply(null,arguments),!0}function K(k,O){for(var ae=O;ae;ae=ae.next)if(ae.name==k)return!0;return!1}function X(k){var O=j.state;if(j.marked="def",!!p){if(O.context){if(O.lexical.info=="var"&&O.context&&O.context.block){var ae=I(k,O.context);if(ae!=null){O.context=ae;return}}else if(!K(k,O.localVars)){O.localVars=new xe(k,O.localVars);return}}v.globalVars&&!K(k,O.globalVars)&&(O.globalVars=new xe(k,O.globalVars))}}function I(k,O){if(O)if(O.block){var ae=I(k,O.prev);return ae?ae==O.prev?O:new le(ae,O.vars,!0):null}else return K(k,O.vars)?O:new le(O.prev,new xe(k,O.vars),!1);else return null}function B(k){return k=="public"||k=="private"||k=="protected"||k=="abstract"||k=="readonly"}function le(k,O,ae){this.prev=k,this.vars=O,this.block=ae}function xe(k,O){this.name=k,this.next=O}var q=new xe("this",new xe("arguments",null));function T(){j.state.context=new le(j.state.context,j.state.localVars,!1),j.state.localVars=q}function de(){j.state.context=new le(j.state.context,j.state.localVars,!0),j.state.localVars=null}T.lex=de.lex=!0;function ze(){j.state.localVars=j.state.context.vars,j.state.context=j.state.context.prev}ze.lex=!0;function pe(k,O){var ae=function(){var he=j.state,ne=he.indented;if(he.lexical.type=="stat")ne=he.lexical.indented;else for(var ye=he.lexical;ye&&ye.type==")"&&ye.align;ye=ye.prev)ne=ye.indented;he.lexical=new F(ne,j.stream.column(),k,null,he.lexical,O)};return ae.lex=!0,ae}function Ee(){var k=j.state;k.lexical.prev&&(k.lexical.type==")"&&(k.indented=k.lexical.indented),k.lexical=k.lexical.prev)}Ee.lex=!0;function ge(k){function O(ae){return ae==k?_():k==";"||ae=="}"||ae==")"||ae=="]"?V():_(O)}return O}function Oe(k,O){return k=="var"?_(pe("vardef",O),Hr,ge(";"),Ee):k=="keyword a"?_(pe("form"),Ze,Oe,Ee):k=="keyword b"?_(pe("form"),Oe,Ee):k=="keyword d"?j.stream.match(/^\s*$/,!1)?_():_(pe("stat"),Je,ge(";"),Ee):k=="debugger"?_(ge(";")):k=="{"?_(pe("}"),de,De,Ee,ze):k==";"?_():k=="if"?(j.state.lexical.info=="else"&&j.state.cc[j.state.cc.length-1]==Ee&&j.state.cc.pop()(),_(pe("form"),Ze,Oe,Ee,Br)):k=="function"?_(Bt):k=="for"?_(pe("form"),de,ei,Oe,ze,Ee):k=="class"||g&&O=="interface"?(j.marked="keyword",_(pe("form",k=="class"?k:O),Wr,Ee)):k=="variable"?g&&O=="declare"?(j.marked="keyword",_(Oe)):g&&(O=="module"||O=="enum"||O=="type")&&j.stream.match(/^\s*\w/,!1)?(j.marked="keyword",O=="enum"?_(Ae):O=="type"?_(ti,ge("operator"),Pe,ge(";")):_(pe("form"),Ct,ge("{"),pe("}"),De,Ee,Ee)):g&&O=="namespace"?(j.marked="keyword",_(pe("form"),Se,Oe,Ee)):g&&O=="abstract"?(j.marked="keyword",_(Oe)):_(pe("stat"),Ue):k=="switch"?_(pe("form"),Ze,ge("{"),pe("}","switch"),de,De,Ee,Ee,ze):k=="case"?_(Se,ge(":")):k=="default"?_(ge(":")):k=="catch"?_(pe("form"),T,qe,Oe,Ee,ze):k=="export"?_(pe("stat"),Ur,Ee):k=="import"?_(pe("stat"),gr,Ee):k=="async"?_(Oe):O=="@"?_(Se,Oe):V(pe("stat"),Se,ge(";"),Ee)}function qe(k){if(k=="(")return _($t,ge(")"))}function Se(k,O){return ke(k,O,!1)}function je(k,O){return ke(k,O,!0)}function Ze(k){return k!="("?V():_(pe(")"),Je,ge(")"),Ee)}function ke(k,O,ae){if(j.state.fatArrowAt==j.stream.start){var he=ae?Be:ce;if(k=="(")return _(T,pe(")"),W($t,")"),Ee,ge("=>"),he,ze);if(k=="variable")return V(T,Ct,ge("=>"),he,ze)}var ne=ae?Ge:He;return N.hasOwnProperty(k)?_(ne):k=="function"?_(Bt,ne):k=="class"||g&&O=="interface"?(j.marked="keyword",_(pe("form"),to,Ee)):k=="keyword c"||k=="async"?_(ae?je:Se):k=="("?_(pe(")"),Je,ge(")"),Ee,ne):k=="operator"||k=="spread"?_(ae?je:Se):k=="["?_(pe("]"),at,Ee,ne):k=="{"?se(Me,"}",null,ne):k=="quasi"?V(U,ne):k=="new"?_(te(ae)):_()}function Je(k){return k.match(/[;\}\)\],]/)?V():V(Se)}function He(k,O){return k==","?_(Je):Ge(k,O,!1)}function Ge(k,O,ae){var he=ae==!1?He:Ge,ne=ae==!1?Se:je;if(k=="=>")return _(T,ae?Be:ce,ze);if(k=="operator")return/\+\+|--/.test(O)||g&&O=="!"?_(he):g&&O=="<"&&j.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?_(pe(">"),W(Pe,">"),Ee,he):O=="?"?_(Se,ge(":"),ne):_(ne);if(k=="quasi")return V(U,he);if(k!=";"){if(k=="(")return se(je,")","call",he);if(k==".")return _(we,he);if(k=="[")return _(pe("]"),Je,ge("]"),Ee,he);if(g&&O=="as")return j.marked="keyword",_(Pe,he);if(k=="regexp")return j.state.lastType=j.marked="operator",j.stream.backUp(j.stream.pos-j.stream.start-1),_(ne)}}function U(k,O){return k!="quasi"?V():O.slice(O.length-2)!="${"?_(U):_(Je,G)}function G(k){if(k=="}")return j.marked="string-2",j.state.tokenize=Z,_(U)}function ce(k){return re(j.stream,j.state),V(k=="{"?Oe:Se)}function Be(k){return re(j.stream,j.state),V(k=="{"?Oe:je)}function te(k){return function(O){return O=="."?_(k?oe:fe):O=="variable"&&g?_(Ft,k?Ge:He):V(k?je:Se)}}function fe(k,O){if(O=="target")return j.marked="keyword",_(He)}function oe(k,O){if(O=="target")return j.marked="keyword",_(Ge)}function Ue(k){return k==":"?_(Ee,Oe):V(He,ge(";"),Ee)}function we(k){if(k=="variable")return j.marked="property",_()}function Me(k,O){if(k=="async")return j.marked="property",_(Me);if(k=="variable"||j.style=="keyword"){if(j.marked="property",O=="get"||O=="set")return _(Le);var ae;return g&&j.state.fatArrowAt==j.stream.start&&(ae=j.stream.match(/^\s*:\s*/,!1))&&(j.state.fatArrowAt=j.stream.pos+ae[0].length),_($)}else{if(k=="number"||k=="string")return j.marked=S?"property":j.style+" property",_($);if(k=="jsonld-keyword")return _($);if(g&&B(O))return j.marked="keyword",_(Me);if(k=="[")return _(Se,nt,ge("]"),$);if(k=="spread")return _(je,$);if(O=="*")return j.marked="keyword",_(Me);if(k==":")return V($)}}function Le(k){return k!="variable"?V($):(j.marked="property",_(Bt))}function $(k){if(k==":")return _(je);if(k=="(")return V(Bt)}function W(k,O,ae){function he(ne,ye){if(ae?ae.indexOf(ne)>-1:ne==","){var Xe=j.state.lexical;return Xe.info=="call"&&(Xe.pos=(Xe.pos||0)+1),_(function(pt,Et){return pt==O||Et==O?V():V(k)},he)}return ne==O||ye==O?_():ae&&ae.indexOf(";")>-1?V(k):_(ge(O))}return function(ne,ye){return ne==O||ye==O?_():V(k,he)}}function se(k,O,ae){for(var he=3;he"),Pe);if(k=="quasi")return V(_t,Ht)}function xt(k){if(k=="=>")return _(Pe)}function Fe(k){return k.match(/[\}\)\]]/)?_():k==","||k==";"?_(Fe):V(nr,Fe)}function nr(k,O){if(k=="variable"||j.style=="keyword")return j.marked="property",_(nr);if(O=="?"||k=="number"||k=="string")return _(nr);if(k==":")return _(Pe);if(k=="[")return _(ge("variable"),dt,ge("]"),nr);if(k=="(")return V(hr,nr);if(!k.match(/[;\}\)\],]/))return _()}function _t(k,O){return k!="quasi"?V():O.slice(O.length-2)!="${"?_(_t):_(Pe,it)}function it(k){if(k=="}")return j.marked="string-2",j.state.tokenize=Z,_(_t)}function ot(k,O){return k=="variable"&&j.stream.match(/^\s*[?:]/,!1)||O=="?"?_(ot):k==":"?_(Pe):k=="spread"?_(ot):V(Pe)}function Ht(k,O){if(O=="<")return _(pe(">"),W(Pe,">"),Ee,Ht);if(O=="|"||k=="."||O=="&")return _(Pe);if(k=="[")return _(Pe,ge("]"),Ht);if(O=="extends"||O=="implements")return j.marked="keyword",_(Pe);if(O=="?")return _(Pe,ge(":"),Pe)}function Ft(k,O){if(O=="<")return _(pe(">"),W(Pe,">"),Ee,Ht)}function Wt(){return V(Pe,kt)}function kt(k,O){if(O=="=")return _(Pe)}function Hr(k,O){return O=="enum"?(j.marked="keyword",_(Ae)):V(Ct,nt,Ut,eo)}function Ct(k,O){if(g&&B(O))return j.marked="keyword",_(Ct);if(k=="variable")return X(O),_();if(k=="spread")return _(Ct);if(k=="[")return se(yn,"]");if(k=="{")return se(dr,"}")}function dr(k,O){return k=="variable"&&!j.stream.match(/^\s*:/,!1)?(X(O),_(Ut)):(k=="variable"&&(j.marked="property"),k=="spread"?_(Ct):k=="}"?V():k=="["?_(Se,ge("]"),ge(":"),dr):_(ge(":"),Ct,Ut))}function yn(){return V(Ct,Ut)}function Ut(k,O){if(O=="=")return _(je)}function eo(k){if(k==",")return _(Hr)}function Br(k,O){if(k=="keyword b"&&O=="else")return _(pe("form","else"),Oe,Ee)}function ei(k,O){if(O=="await")return _(ei);if(k=="(")return _(pe(")"),xn,Ee)}function xn(k){return k=="var"?_(Hr,pr):k=="variable"?_(pr):V(pr)}function pr(k,O){return k==")"?_():k==";"?_(pr):O=="in"||O=="of"?(j.marked="keyword",_(Se,pr)):V(Se,pr)}function Bt(k,O){if(O=="*")return j.marked="keyword",_(Bt);if(k=="variable")return X(O),_(Bt);if(k=="(")return _(T,pe(")"),W($t,")"),Ee,Pt,Oe,ze);if(g&&O=="<")return _(pe(">"),W(Wt,">"),Ee,Bt)}function hr(k,O){if(O=="*")return j.marked="keyword",_(hr);if(k=="variable")return X(O),_(hr);if(k=="(")return _(T,pe(")"),W($t,")"),Ee,Pt,ze);if(g&&O=="<")return _(pe(">"),W(Wt,">"),Ee,hr)}function ti(k,O){if(k=="keyword"||k=="variable")return j.marked="type",_(ti);if(O=="<")return _(pe(">"),W(Wt,">"),Ee)}function $t(k,O){return O=="@"&&_(Se,$t),k=="spread"?_($t):g&&B(O)?(j.marked="keyword",_($t)):g&&k=="this"?_(nt,Ut):V(Ct,nt,Ut)}function to(k,O){return k=="variable"?Wr(k,O):Kt(k,O)}function Wr(k,O){if(k=="variable")return X(O),_(Kt)}function Kt(k,O){if(O=="<")return _(pe(">"),W(Wt,">"),Ee,Kt);if(O=="extends"||O=="implements"||g&&k==",")return O=="implements"&&(j.marked="keyword"),_(g?Pe:Se,Kt);if(k=="{")return _(pe("}"),Gt,Ee)}function Gt(k,O){if(k=="async"||k=="variable"&&(O=="static"||O=="get"||O=="set"||g&&B(O))&&j.stream.match(/^\s+#?[\w$\xa1-\uffff]/,!1))return j.marked="keyword",_(Gt);if(k=="variable"||j.style=="keyword")return j.marked="property",_(Cr,Gt);if(k=="number"||k=="string")return _(Cr,Gt);if(k=="[")return _(Se,nt,ge("]"),Cr,Gt);if(O=="*")return j.marked="keyword",_(Gt);if(g&&k=="(")return V(hr,Gt);if(k==";"||k==",")return _(Gt);if(k=="}")return _();if(O=="@")return _(Se,Gt)}function Cr(k,O){if(O=="!"||O=="?")return _(Cr);if(k==":")return _(Pe,Ut);if(O=="=")return _(je);var ae=j.state.lexical.prev,he=ae&&ae.info=="interface";return V(he?hr:Bt)}function Ur(k,O){return O=="*"?(j.marked="keyword",_(Gr,ge(";"))):O=="default"?(j.marked="keyword",_(Se,ge(";"))):k=="{"?_(W($r,"}"),Gr,ge(";")):V(Oe)}function $r(k,O){if(O=="as")return j.marked="keyword",_(ge("variable"));if(k=="variable")return V(je,$r)}function gr(k){return k=="string"?_():k=="("?V(Se):k=="."?V(He):V(Kr,Vt,Gr)}function Kr(k,O){return k=="{"?se(Kr,"}"):(k=="variable"&&X(O),O=="*"&&(j.marked="keyword"),_(_n))}function Vt(k){if(k==",")return _(Kr,Vt)}function _n(k,O){if(O=="as")return j.marked="keyword",_(Kr)}function Gr(k,O){if(O=="from")return j.marked="keyword",_(Se)}function at(k){return k=="]"?_():V(W(je,"]"))}function Ae(){return V(pe("form"),Ct,ge("{"),pe("}"),W(ir,"}"),Ee,Ee)}function ir(){return V(Ct,Ut)}function kn(k,O){return k.lastType=="operator"||k.lastType==","||c.test(O.charAt(0))||/[,.]/.test(O.charAt(0))}function jt(k,O,ae){return O.tokenize==R&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(O.lastType)||O.lastType=="quasi"&&/\{\s*$/.test(k.string.slice(0,k.pos-(ae||0)))}return{startState:function(k){var O={tokenize:R,lastType:"sof",cc:[],lexical:new F((k||0)-C,0,"block",!1),localVars:v.localVars,context:v.localVars&&new le(null,null,!1),indented:k||0};return v.globalVars&&typeof v.globalVars=="object"&&(O.globalVars=v.globalVars),O},token:function(k,O){if(k.sol()&&(O.lexical.hasOwnProperty("align")||(O.lexical.align=!1),O.indented=k.indentation(),re(k,O)),O.tokenize!=H&&k.eatSpace())return null;var ae=O.tokenize(k,O);return E=="comment"?ae:(O.lastType=E=="operator"&&(z=="++"||z=="--")?"incdec":E,Q(O,ae,E,z,k))},indent:function(k,O){if(k.tokenize==H||k.tokenize==Z)return o.Pass;if(k.tokenize!=R)return 0;var ae=O&&O.charAt(0),he=k.lexical,ne;if(!/^\s*else\b/.test(O))for(var ye=k.cc.length-1;ye>=0;--ye){var Xe=k.cc[ye];if(Xe==Ee)he=he.prev;else if(Xe!=Br&&Xe!=ze)break}for(;(he.type=="stat"||he.type=="form")&&(ae=="}"||(ne=k.cc[k.cc.length-1])&&(ne==He||ne==Ge)&&!/^[,\.=+\-*:?[\(]/.test(O));)he=he.prev;b&&he.type==")"&&he.prev.type=="stat"&&(he=he.prev);var pt=he.type,Et=ae==pt;return pt=="vardef"?he.indented+(k.lastType=="operator"||k.lastType==","?he.info.length+1:0):pt=="form"&&ae=="{"?he.indented:pt=="form"?he.indented+C:pt=="stat"?he.indented+(kn(k,O)?b||C:0):he.info=="switch"&&!Et&&v.doubleIndentSwitch!=!1?he.indented+(/^(?:case|default)\b/.test(O)?C:2*C):he.align?he.column+(Et?0:1):he.indented+(Et?0:C)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:s?null:"/*",blockCommentEnd:s?null:"*/",blockCommentContinue:s?null:" * ",lineComment:s?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:s?"json":"javascript",jsonldMode:S,jsonMode:s,expressionAllowed:jt,skipExpression:function(k){Q(k,"atom","atom","true",new o.StringStream("",2,null))}}}),o.registerHelper("wordChars","javascript",/[\w$]/),o.defineMIME("text/javascript","javascript"),o.defineMIME("text/ecmascript","javascript"),o.defineMIME("application/javascript","javascript"),o.defineMIME("application/x-javascript","javascript"),o.defineMIME("application/ecmascript","javascript"),o.defineMIME("application/json",{name:"javascript",json:!0}),o.defineMIME("application/x-json",{name:"javascript",json:!0}),o.defineMIME("application/manifest+json",{name:"javascript",json:!0}),o.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),o.defineMIME("text/typescript",{name:"javascript",typescript:!0}),o.defineMIME("application/typescript",{name:"javascript",typescript:!0})})});var Qn=Ke((Os,Ps)=>{(function(o){typeof Os=="object"&&typeof Ps=="object"?o(We(),mn(),vn(),gn()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../xml/xml","../javascript/javascript","../css/css"],o):o(CodeMirror)})(function(o){"use strict";var h={script:[["lang",/(javascript|babel)/i,"javascript"],["type",/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i,"javascript"],["type",/./,"text/plain"],[null,null,"javascript"]],style:[["lang",/^css$/i,"css"],["type",/^(text\/)?(x-)?(stylesheet|css)$/i,"css"],["type",/./,"text/plain"],[null,null,"css"]]};function v(L,x,c){var d=L.current(),w=d.search(x);return w>-1?L.backUp(d.length-w):d.match(/<\/?$/)&&(L.backUp(d.length),L.match(x,!1)||L.match(d)),c}var C={};function b(L){var x=C[L];return x||(C[L]=new RegExp("\\s+"+L+`\\s*=\\s*('|")?([^'"]+)('|")?\\s*`))}function S(L,x){var c=L.match(b(x));return c?/^\s*(.*?)\s*$/.exec(c[2])[1]:""}function s(L,x){return new RegExp((x?"^":"")+"","i")}function p(L,x){for(var c in L)for(var d=x[c]||(x[c]=[]),w=L[c],E=w.length-1;E>=0;E--)d.unshift(w[E])}function g(L,x){for(var c=0;c=0;z--)d.script.unshift(["type",E[z].matches,E[z].mode]);function y(R,M){var H=c.token(R,M.htmlState),Z=/\btag\b/.test(H),ee;if(Z&&!/[<>\s\/]/.test(R.current())&&(ee=M.htmlState.tagName&&M.htmlState.tagName.toLowerCase())&&d.hasOwnProperty(ee))M.inTag=ee+" ";else if(M.inTag&&Z&&/>$/.test(R.current())){var re=/^([\S]+) (.*)/.exec(M.inTag);M.inTag=null;var N=R.current()==">"&&g(d[re[1]],re[2]),F=o.getMode(L,N),D=s(re[1],!0),Q=s(re[1],!1);M.token=function(j,V){return j.match(D,!1)?(V.token=y,V.localState=V.localMode=null,null):v(j,Q,V.localMode.token(j,V.localState))},M.localMode=F,M.localState=o.startState(F,c.indent(M.htmlState,"",""))}else M.inTag&&(M.inTag+=R.current(),R.eol()&&(M.inTag+=" "));return H}return{startState:function(){var R=o.startState(c);return{token:y,inTag:null,localMode:null,localState:null,htmlState:R}},copyState:function(R){var M;return R.localState&&(M=o.copyState(R.localMode,R.localState)),{token:R.token,inTag:R.inTag,localMode:R.localMode,localState:M,htmlState:o.copyState(c,R.htmlState)}},token:function(R,M){return M.token(R,M)},indent:function(R,M,H){return!R.localMode||/^\s*<\//.test(M)?c.indent(R.htmlState,M,H):R.localMode.indent?R.localMode.indent(R.localState,M,H):o.Pass},innerMode:function(R){return{state:R.localState||R.htmlState,mode:R.localMode||c}}}},"xml","javascript","css"),o.defineMIME("text/html","htmlmixed")})});var Hs=Ke((js,Rs)=>{(function(o){typeof js=="object"&&typeof Rs=="object"?o(We(),Qn(),Yn()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../htmlmixed/htmlmixed","../../addon/mode/overlay"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("django:inner",function(){var h=["block","endblock","for","endfor","true","false","filter","endfilter","loop","none","self","super","if","elif","endif","as","else","import","with","endwith","without","context","ifequal","endifequal","ifnotequal","endifnotequal","extends","include","load","comment","endcomment","empty","url","static","trans","blocktrans","endblocktrans","now","regroup","lorem","ifchanged","endifchanged","firstof","debug","cycle","csrf_token","autoescape","endautoescape","spaceless","endspaceless","ssi","templatetag","verbatim","endverbatim","widthratio"],v=["add","addslashes","capfirst","center","cut","date","default","default_if_none","dictsort","dictsortreversed","divisibleby","escape","escapejs","filesizeformat","first","floatformat","force_escape","get_digit","iriencode","join","last","length","length_is","linebreaks","linebreaksbr","linenumbers","ljust","lower","make_list","phone2numeric","pluralize","pprint","random","removetags","rjust","safe","safeseq","slice","slugify","stringformat","striptags","time","timesince","timeuntil","title","truncatechars","truncatechars_html","truncatewords","truncatewords_html","unordered_list","upper","urlencode","urlize","urlizetrunc","wordcount","wordwrap","yesno"],C=["==","!=","<",">","<=",">="],b=["in","not","or","and"];h=new RegExp("^\\b("+h.join("|")+")\\b"),v=new RegExp("^\\b("+v.join("|")+")\\b"),C=new RegExp("^\\b("+C.join("|")+")\\b"),b=new RegExp("^\\b("+b.join("|")+")\\b");function S(c,d){if(c.match("{{"))return d.tokenize=p,"tag";if(c.match("{%"))return d.tokenize=g,"tag";if(c.match("{#"))return d.tokenize=L,"comment";for(;c.next()!=null&&!c.match(/\{[{%#]/,!1););return null}function s(c,d){return function(w,E){if(!E.escapeNext&&w.eat(c))E.tokenize=d;else{E.escapeNext&&(E.escapeNext=!1);var z=w.next();z=="\\"&&(E.escapeNext=!0)}return"string"}}function p(c,d){if(d.waitDot){if(d.waitDot=!1,c.peek()!=".")return"null";if(c.match(/\.\W+/))return"error";if(c.eat("."))return d.waitProperty=!0,"null";throw Error("Unexpected error while waiting for property.")}if(d.waitPipe){if(d.waitPipe=!1,c.peek()!="|")return"null";if(c.match(/\.\W+/))return"error";if(c.eat("|"))return d.waitFilter=!0,"null";throw Error("Unexpected error while waiting for filter.")}return d.waitProperty&&(d.waitProperty=!1,c.match(/\b(\w+)\b/))?(d.waitDot=!0,d.waitPipe=!0,"property"):d.waitFilter&&(d.waitFilter=!1,c.match(v))?"variable-2":c.eatSpace()?(d.waitProperty=!1,"null"):c.match(/\b\d+(\.\d+)?\b/)?"number":c.match("'")?(d.tokenize=s("'",d.tokenize),"string"):c.match('"')?(d.tokenize=s('"',d.tokenize),"string"):c.match(/\b(\w+)\b/)&&!d.foundVariable?(d.waitDot=!0,d.waitPipe=!0,"variable"):c.match("}}")?(d.waitProperty=null,d.waitFilter=null,d.waitDot=null,d.waitPipe=null,d.tokenize=S,"tag"):(c.next(),"null")}function g(c,d){if(d.waitDot){if(d.waitDot=!1,c.peek()!=".")return"null";if(c.match(/\.\W+/))return"error";if(c.eat("."))return d.waitProperty=!0,"null";throw Error("Unexpected error while waiting for property.")}if(d.waitPipe){if(d.waitPipe=!1,c.peek()!="|")return"null";if(c.match(/\.\W+/))return"error";if(c.eat("|"))return d.waitFilter=!0,"null";throw Error("Unexpected error while waiting for filter.")}if(d.waitProperty&&(d.waitProperty=!1,c.match(/\b(\w+)\b/)))return d.waitDot=!0,d.waitPipe=!0,"property";if(d.waitFilter&&(d.waitFilter=!1,c.match(v)))return"variable-2";if(c.eatSpace())return d.waitProperty=!1,"null";if(c.match(/\b\d+(\.\d+)?\b/))return"number";if(c.match("'"))return d.tokenize=s("'",d.tokenize),"string";if(c.match('"'))return d.tokenize=s('"',d.tokenize),"string";if(c.match(C))return"operator";if(c.match(b))return"keyword";var w=c.match(h);return w?(w[0]=="comment"&&(d.blockCommentTag=!0),"keyword"):c.match(/\b(\w+)\b/)?(d.waitDot=!0,d.waitPipe=!0,"variable"):c.match("%}")?(d.waitProperty=null,d.waitFilter=null,d.waitDot=null,d.waitPipe=null,d.blockCommentTag?(d.blockCommentTag=!1,d.tokenize=x):d.tokenize=S,"tag"):(c.next(),"null")}function L(c,d){return c.match(/^.*?#\}/)?d.tokenize=S:c.skipToEnd(),"comment"}function x(c,d){return c.match(/\{%\s*endcomment\s*%\}/,!1)?(d.tokenize=g,c.match("{%"),"tag"):(c.next(),"comment")}return{startState:function(){return{tokenize:S}},token:function(c,d){return d.tokenize(c,d)},blockCommentStart:"{% comment %}",blockCommentEnd:"{% endcomment %}"}}),o.defineMode("django",function(h){var v=o.getMode(h,"text/html"),C=o.getMode(h,"django:inner");return o.overlayMode(v,C)}),o.defineMIME("text/x-django","django")})});var Di=Ke((Bs,Ws)=>{(function(o){typeof Bs=="object"&&typeof Ws=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineSimpleMode=function(x,c){o.defineMode(x,function(d){return o.simpleMode(d,c)})},o.simpleMode=function(x,c){h(c,"start");var d={},w=c.meta||{},E=!1;for(var z in c)if(z!=w&&c.hasOwnProperty(z))for(var y=d[z]=[],R=c[z],M=0;M2&&H.token&&typeof H.token!="string"){for(var re=2;re-1)return o.Pass;var z=d.indent.length-1,y=x[d.state];e:for(;;){for(var R=0;R{(function(o){typeof Us=="object"&&typeof $s=="object"?o(We(),Di()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../../addon/mode/simple"],o):o(CodeMirror)})(function(o){"use strict";var h="from",v=new RegExp("^(\\s*)\\b("+h+")\\b","i"),C=["run","cmd","entrypoint","shell"],b=new RegExp("^(\\s*)("+C.join("|")+")(\\s+\\[)","i"),S="expose",s=new RegExp("^(\\s*)("+S+")(\\s+)","i"),p=["arg","from","maintainer","label","env","add","copy","volume","user","workdir","onbuild","stopsignal","healthcheck","shell"],g=[h,S].concat(C).concat(p),L="("+g.join("|")+")",x=new RegExp("^(\\s*)"+L+"(\\s*)(#.*)?$","i"),c=new RegExp("^(\\s*)"+L+"(\\s+)","i");o.defineSimpleMode("dockerfile",{start:[{regex:/^\s*#.*$/,sol:!0,token:"comment"},{regex:v,token:[null,"keyword"],sol:!0,next:"from"},{regex:x,token:[null,"keyword",null,"error"],sol:!0},{regex:b,token:[null,"keyword",null],sol:!0,next:"array"},{regex:s,token:[null,"keyword",null],sol:!0,next:"expose"},{regex:c,token:[null,"keyword",null],sol:!0,next:"arguments"},{regex:/./,token:null}],from:[{regex:/\s*$/,token:null,next:"start"},{regex:/(\s*)(#.*)$/,token:[null,"error"],next:"start"},{regex:/(\s*\S+\s+)(as)/i,token:[null,"keyword"],next:"start"},{token:null,next:"start"}],single:[{regex:/(?:[^\\']|\\.)/,token:"string"},{regex:/'/,token:"string",pop:!0}],double:[{regex:/(?:[^\\"]|\\.)/,token:"string"},{regex:/"/,token:"string",pop:!0}],array:[{regex:/\]/,token:null,next:"start"},{regex:/"(?:[^\\"]|\\.)*"?/,token:"string"}],expose:[{regex:/\d+$/,token:"number",next:"start"},{regex:/[^\d]+$/,token:null,next:"start"},{regex:/\d+/,token:"number"},{regex:/[^\d]+/,token:null},{token:null,next:"start"}],arguments:[{regex:/^\s*#.*$/,sol:!0,token:"comment"},{regex:/"(?:[^\\"]|\\.)*"?$/,token:"string",next:"start"},{regex:/"/,token:"string",push:"double"},{regex:/'(?:[^\\']|\\.)*'?$/,token:"string",next:"start"},{regex:/'/,token:"string",push:"single"},{regex:/[^#"']+[\\`]$/,token:null},{regex:/[^#"']+$/,token:null,next:"start"},{regex:/[^#"']+/,token:null},{token:null,next:"start"}],meta:{lineComment:"#"}}),o.defineMIME("text/x-dockerfile","dockerfile")})});var Xs=Ke((Gs,Zs)=>{(function(o){typeof Gs=="object"&&typeof Zs=="object"?o(We()):typeof define=="function"&&define.amd?define(["../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.modeInfo=[{name:"APL",mime:"text/apl",mode:"apl",ext:["dyalog","apl"]},{name:"PGP",mimes:["application/pgp","application/pgp-encrypted","application/pgp-keys","application/pgp-signature"],mode:"asciiarmor",ext:["asc","pgp","sig"]},{name:"ASN.1",mime:"text/x-ttcn-asn",mode:"asn.1",ext:["asn","asn1"]},{name:"Asterisk",mime:"text/x-asterisk",mode:"asterisk",file:/^extensions\.conf$/i},{name:"Brainfuck",mime:"text/x-brainfuck",mode:"brainfuck",ext:["b","bf"]},{name:"C",mime:"text/x-csrc",mode:"clike",ext:["c","h","ino"]},{name:"C++",mime:"text/x-c++src",mode:"clike",ext:["cpp","c++","cc","cxx","hpp","h++","hh","hxx"],alias:["cpp"]},{name:"Cobol",mime:"text/x-cobol",mode:"cobol",ext:["cob","cpy","cbl"]},{name:"C#",mime:"text/x-csharp",mode:"clike",ext:["cs"],alias:["csharp","cs"]},{name:"Clojure",mime:"text/x-clojure",mode:"clojure",ext:["clj","cljc","cljx"]},{name:"ClojureScript",mime:"text/x-clojurescript",mode:"clojure",ext:["cljs"]},{name:"Closure Stylesheets (GSS)",mime:"text/x-gss",mode:"css",ext:["gss"]},{name:"CMake",mime:"text/x-cmake",mode:"cmake",ext:["cmake","cmake.in"],file:/^CMakeLists\.txt$/},{name:"CoffeeScript",mimes:["application/vnd.coffeescript","text/coffeescript","text/x-coffeescript"],mode:"coffeescript",ext:["coffee"],alias:["coffee","coffee-script"]},{name:"Common Lisp",mime:"text/x-common-lisp",mode:"commonlisp",ext:["cl","lisp","el"],alias:["lisp"]},{name:"Cypher",mime:"application/x-cypher-query",mode:"cypher",ext:["cyp","cypher"]},{name:"Cython",mime:"text/x-cython",mode:"python",ext:["pyx","pxd","pxi"]},{name:"Crystal",mime:"text/x-crystal",mode:"crystal",ext:["cr"]},{name:"CSS",mime:"text/css",mode:"css",ext:["css"]},{name:"CQL",mime:"text/x-cassandra",mode:"sql",ext:["cql"]},{name:"D",mime:"text/x-d",mode:"d",ext:["d"]},{name:"Dart",mimes:["application/dart","text/x-dart"],mode:"dart",ext:["dart"]},{name:"diff",mime:"text/x-diff",mode:"diff",ext:["diff","patch"]},{name:"Django",mime:"text/x-django",mode:"django"},{name:"Dockerfile",mime:"text/x-dockerfile",mode:"dockerfile",file:/^Dockerfile$/},{name:"DTD",mime:"application/xml-dtd",mode:"dtd",ext:["dtd"]},{name:"Dylan",mime:"text/x-dylan",mode:"dylan",ext:["dylan","dyl","intr"]},{name:"EBNF",mime:"text/x-ebnf",mode:"ebnf"},{name:"ECL",mime:"text/x-ecl",mode:"ecl",ext:["ecl"]},{name:"edn",mime:"application/edn",mode:"clojure",ext:["edn"]},{name:"Eiffel",mime:"text/x-eiffel",mode:"eiffel",ext:["e"]},{name:"Elm",mime:"text/x-elm",mode:"elm",ext:["elm"]},{name:"Embedded JavaScript",mime:"application/x-ejs",mode:"htmlembedded",ext:["ejs"]},{name:"Embedded Ruby",mime:"application/x-erb",mode:"htmlembedded",ext:["erb"]},{name:"Erlang",mime:"text/x-erlang",mode:"erlang",ext:["erl"]},{name:"Esper",mime:"text/x-esper",mode:"sql"},{name:"Factor",mime:"text/x-factor",mode:"factor",ext:["factor"]},{name:"FCL",mime:"text/x-fcl",mode:"fcl"},{name:"Forth",mime:"text/x-forth",mode:"forth",ext:["forth","fth","4th"]},{name:"Fortran",mime:"text/x-fortran",mode:"fortran",ext:["f","for","f77","f90","f95"]},{name:"F#",mime:"text/x-fsharp",mode:"mllike",ext:["fs"],alias:["fsharp"]},{name:"Gas",mime:"text/x-gas",mode:"gas",ext:["s"]},{name:"Gherkin",mime:"text/x-feature",mode:"gherkin",ext:["feature"]},{name:"GitHub Flavored Markdown",mime:"text/x-gfm",mode:"gfm",file:/^(readme|contributing|history)\.md$/i},{name:"Go",mime:"text/x-go",mode:"go",ext:["go"]},{name:"Groovy",mime:"text/x-groovy",mode:"groovy",ext:["groovy","gradle"],file:/^Jenkinsfile$/},{name:"HAML",mime:"text/x-haml",mode:"haml",ext:["haml"]},{name:"Haskell",mime:"text/x-haskell",mode:"haskell",ext:["hs"]},{name:"Haskell (Literate)",mime:"text/x-literate-haskell",mode:"haskell-literate",ext:["lhs"]},{name:"Haxe",mime:"text/x-haxe",mode:"haxe",ext:["hx"]},{name:"HXML",mime:"text/x-hxml",mode:"haxe",ext:["hxml"]},{name:"ASP.NET",mime:"application/x-aspx",mode:"htmlembedded",ext:["aspx"],alias:["asp","aspx"]},{name:"HTML",mime:"text/html",mode:"htmlmixed",ext:["html","htm","handlebars","hbs"],alias:["xhtml"]},{name:"HTTP",mime:"message/http",mode:"http"},{name:"IDL",mime:"text/x-idl",mode:"idl",ext:["pro"]},{name:"Pug",mime:"text/x-pug",mode:"pug",ext:["jade","pug"],alias:["jade"]},{name:"Java",mime:"text/x-java",mode:"clike",ext:["java"]},{name:"Java Server Pages",mime:"application/x-jsp",mode:"htmlembedded",ext:["jsp"],alias:["jsp"]},{name:"JavaScript",mimes:["text/javascript","text/ecmascript","application/javascript","application/x-javascript","application/ecmascript"],mode:"javascript",ext:["js"],alias:["ecmascript","js","node"]},{name:"JSON",mimes:["application/json","application/x-json"],mode:"javascript",ext:["json","map"],alias:["json5"]},{name:"JSON-LD",mime:"application/ld+json",mode:"javascript",ext:["jsonld"],alias:["jsonld"]},{name:"JSX",mime:"text/jsx",mode:"jsx",ext:["jsx"]},{name:"Jinja2",mime:"text/jinja2",mode:"jinja2",ext:["j2","jinja","jinja2"]},{name:"Julia",mime:"text/x-julia",mode:"julia",ext:["jl"],alias:["jl"]},{name:"Kotlin",mime:"text/x-kotlin",mode:"clike",ext:["kt"]},{name:"LESS",mime:"text/x-less",mode:"css",ext:["less"]},{name:"LiveScript",mime:"text/x-livescript",mode:"livescript",ext:["ls"],alias:["ls"]},{name:"Lua",mime:"text/x-lua",mode:"lua",ext:["lua"]},{name:"Markdown",mime:"text/x-markdown",mode:"markdown",ext:["markdown","md","mkd"]},{name:"mIRC",mime:"text/mirc",mode:"mirc"},{name:"MariaDB SQL",mime:"text/x-mariadb",mode:"sql"},{name:"Mathematica",mime:"text/x-mathematica",mode:"mathematica",ext:["m","nb","wl","wls"]},{name:"Modelica",mime:"text/x-modelica",mode:"modelica",ext:["mo"]},{name:"MUMPS",mime:"text/x-mumps",mode:"mumps",ext:["mps"]},{name:"MS SQL",mime:"text/x-mssql",mode:"sql"},{name:"mbox",mime:"application/mbox",mode:"mbox",ext:["mbox"]},{name:"MySQL",mime:"text/x-mysql",mode:"sql"},{name:"Nginx",mime:"text/x-nginx-conf",mode:"nginx",file:/nginx.*\.conf$/i},{name:"NSIS",mime:"text/x-nsis",mode:"nsis",ext:["nsh","nsi"]},{name:"NTriples",mimes:["application/n-triples","application/n-quads","text/n-triples"],mode:"ntriples",ext:["nt","nq"]},{name:"Objective-C",mime:"text/x-objectivec",mode:"clike",ext:["m"],alias:["objective-c","objc"]},{name:"Objective-C++",mime:"text/x-objectivec++",mode:"clike",ext:["mm"],alias:["objective-c++","objc++"]},{name:"OCaml",mime:"text/x-ocaml",mode:"mllike",ext:["ml","mli","mll","mly"]},{name:"Octave",mime:"text/x-octave",mode:"octave",ext:["m"]},{name:"Oz",mime:"text/x-oz",mode:"oz",ext:["oz"]},{name:"Pascal",mime:"text/x-pascal",mode:"pascal",ext:["p","pas"]},{name:"PEG.js",mime:"null",mode:"pegjs",ext:["jsonld"]},{name:"Perl",mime:"text/x-perl",mode:"perl",ext:["pl","pm"]},{name:"PHP",mimes:["text/x-php","application/x-httpd-php","application/x-httpd-php-open"],mode:"php",ext:["php","php3","php4","php5","php7","phtml"]},{name:"Pig",mime:"text/x-pig",mode:"pig",ext:["pig"]},{name:"Plain Text",mime:"text/plain",mode:"null",ext:["txt","text","conf","def","list","log"]},{name:"PLSQL",mime:"text/x-plsql",mode:"sql",ext:["pls"]},{name:"PostgreSQL",mime:"text/x-pgsql",mode:"sql"},{name:"PowerShell",mime:"application/x-powershell",mode:"powershell",ext:["ps1","psd1","psm1"]},{name:"Properties files",mime:"text/x-properties",mode:"properties",ext:["properties","ini","in"],alias:["ini","properties"]},{name:"ProtoBuf",mime:"text/x-protobuf",mode:"protobuf",ext:["proto"]},{name:"Python",mime:"text/x-python",mode:"python",ext:["BUILD","bzl","py","pyw"],file:/^(BUCK|BUILD)$/},{name:"Puppet",mime:"text/x-puppet",mode:"puppet",ext:["pp"]},{name:"Q",mime:"text/x-q",mode:"q",ext:["q"]},{name:"R",mime:"text/x-rsrc",mode:"r",ext:["r","R"],alias:["rscript"]},{name:"reStructuredText",mime:"text/x-rst",mode:"rst",ext:["rst"],alias:["rst"]},{name:"RPM Changes",mime:"text/x-rpm-changes",mode:"rpm"},{name:"RPM Spec",mime:"text/x-rpm-spec",mode:"rpm",ext:["spec"]},{name:"Ruby",mime:"text/x-ruby",mode:"ruby",ext:["rb"],alias:["jruby","macruby","rake","rb","rbx"]},{name:"Rust",mime:"text/x-rustsrc",mode:"rust",ext:["rs"]},{name:"SAS",mime:"text/x-sas",mode:"sas",ext:["sas"]},{name:"Sass",mime:"text/x-sass",mode:"sass",ext:["sass"]},{name:"Scala",mime:"text/x-scala",mode:"clike",ext:["scala"]},{name:"Scheme",mime:"text/x-scheme",mode:"scheme",ext:["scm","ss"]},{name:"SCSS",mime:"text/x-scss",mode:"css",ext:["scss"]},{name:"Shell",mimes:["text/x-sh","application/x-sh"],mode:"shell",ext:["sh","ksh","bash"],alias:["bash","sh","zsh"],file:/^PKGBUILD$/},{name:"Sieve",mime:"application/sieve",mode:"sieve",ext:["siv","sieve"]},{name:"Slim",mimes:["text/x-slim","application/x-slim"],mode:"slim",ext:["slim"]},{name:"Smalltalk",mime:"text/x-stsrc",mode:"smalltalk",ext:["st"]},{name:"Smarty",mime:"text/x-smarty",mode:"smarty",ext:["tpl"]},{name:"Solr",mime:"text/x-solr",mode:"solr"},{name:"SML",mime:"text/x-sml",mode:"mllike",ext:["sml","sig","fun","smackspec"]},{name:"Soy",mime:"text/x-soy",mode:"soy",ext:["soy"],alias:["closure template"]},{name:"SPARQL",mime:"application/sparql-query",mode:"sparql",ext:["rq","sparql"],alias:["sparul"]},{name:"Spreadsheet",mime:"text/x-spreadsheet",mode:"spreadsheet",alias:["excel","formula"]},{name:"SQL",mime:"text/x-sql",mode:"sql",ext:["sql"]},{name:"SQLite",mime:"text/x-sqlite",mode:"sql"},{name:"Squirrel",mime:"text/x-squirrel",mode:"clike",ext:["nut"]},{name:"Stylus",mime:"text/x-styl",mode:"stylus",ext:["styl"]},{name:"Swift",mime:"text/x-swift",mode:"swift",ext:["swift"]},{name:"sTeX",mime:"text/x-stex",mode:"stex"},{name:"LaTeX",mime:"text/x-latex",mode:"stex",ext:["text","ltx","tex"],alias:["tex"]},{name:"SystemVerilog",mime:"text/x-systemverilog",mode:"verilog",ext:["v","sv","svh"]},{name:"Tcl",mime:"text/x-tcl",mode:"tcl",ext:["tcl"]},{name:"Textile",mime:"text/x-textile",mode:"textile",ext:["textile"]},{name:"TiddlyWiki",mime:"text/x-tiddlywiki",mode:"tiddlywiki"},{name:"Tiki wiki",mime:"text/tiki",mode:"tiki"},{name:"TOML",mime:"text/x-toml",mode:"toml",ext:["toml"]},{name:"Tornado",mime:"text/x-tornado",mode:"tornado"},{name:"troff",mime:"text/troff",mode:"troff",ext:["1","2","3","4","5","6","7","8","9"]},{name:"TTCN",mime:"text/x-ttcn",mode:"ttcn",ext:["ttcn","ttcn3","ttcnpp"]},{name:"TTCN_CFG",mime:"text/x-ttcn-cfg",mode:"ttcn-cfg",ext:["cfg"]},{name:"Turtle",mime:"text/turtle",mode:"turtle",ext:["ttl"]},{name:"TypeScript",mime:"application/typescript",mode:"javascript",ext:["ts"],alias:["ts"]},{name:"TypeScript-JSX",mime:"text/typescript-jsx",mode:"jsx",ext:["tsx"],alias:["tsx"]},{name:"Twig",mime:"text/x-twig",mode:"twig"},{name:"Web IDL",mime:"text/x-webidl",mode:"webidl",ext:["webidl"]},{name:"VB.NET",mime:"text/x-vb",mode:"vb",ext:["vb"]},{name:"VBScript",mime:"text/vbscript",mode:"vbscript",ext:["vbs"]},{name:"Velocity",mime:"text/velocity",mode:"velocity",ext:["vtl"]},{name:"Verilog",mime:"text/x-verilog",mode:"verilog",ext:["v"]},{name:"VHDL",mime:"text/x-vhdl",mode:"vhdl",ext:["vhd","vhdl"]},{name:"Vue.js Component",mimes:["script/x-vue","text/x-vue"],mode:"vue",ext:["vue"]},{name:"XML",mimes:["application/xml","text/xml"],mode:"xml",ext:["xml","xsl","xsd","svg"],alias:["rss","wsdl","xsd"]},{name:"XQuery",mime:"application/xquery",mode:"xquery",ext:["xy","xquery"]},{name:"Yacas",mime:"text/x-yacas",mode:"yacas",ext:["ys"]},{name:"YAML",mimes:["text/x-yaml","text/yaml"],mode:"yaml",ext:["yaml","yml"],alias:["yml"]},{name:"Z80",mime:"text/x-z80",mode:"z80",ext:["z80"]},{name:"mscgen",mime:"text/x-mscgen",mode:"mscgen",ext:["mscgen","mscin","msc"]},{name:"xu",mime:"text/x-xu",mode:"mscgen",ext:["xu"]},{name:"msgenny",mime:"text/x-msgenny",mode:"mscgen",ext:["msgenny"]},{name:"WebAssembly",mime:"text/webassembly",mode:"wast",ext:["wat","wast"]}];for(var h=0;h-1&&C.substring(s+1,C.length);if(p)return o.findModeByExtension(p)},o.findModeByName=function(C){C=C.toLowerCase();for(var b=0;b{(function(o){typeof Ys=="object"&&typeof Qs=="object"?o(We(),mn(),Xs()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../xml/xml","../meta"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("markdown",function(h,v){var C=o.getMode(h,"text/html"),b=C.name=="null";function S(q){if(o.findModeByName){var T=o.findModeByName(q);T&&(q=T.mime||T.mimes[0])}var de=o.getMode(h,q);return de.name=="null"?null:de}v.highlightFormatting===void 0&&(v.highlightFormatting=!1),v.maxBlockquoteDepth===void 0&&(v.maxBlockquoteDepth=0),v.taskLists===void 0&&(v.taskLists=!1),v.strikethrough===void 0&&(v.strikethrough=!1),v.emoji===void 0&&(v.emoji=!1),v.fencedCodeBlockHighlighting===void 0&&(v.fencedCodeBlockHighlighting=!0),v.fencedCodeBlockDefaultMode===void 0&&(v.fencedCodeBlockDefaultMode="text/plain"),v.xml===void 0&&(v.xml=!0),v.tokenTypeOverrides===void 0&&(v.tokenTypeOverrides={});var s={header:"header",code:"comment",quote:"quote",list1:"variable-2",list2:"variable-3",list3:"keyword",hr:"hr",image:"image",imageAltText:"image-alt-text",imageMarker:"image-marker",formatting:"formatting",linkInline:"link",linkEmail:"link",linkText:"link",linkHref:"string",em:"em",strong:"strong",strikethrough:"strikethrough",emoji:"builtin"};for(var p in s)s.hasOwnProperty(p)&&v.tokenTypeOverrides[p]&&(s[p]=v.tokenTypeOverrides[p]);var g=/^([*\-_])(?:\s*\1){2,}\s*$/,L=/^(?:[*\-+]|^[0-9]+([.)]))\s+/,x=/^\[(x| )\](?=\s)/i,c=v.allowAtxHeaderWithoutSpace?/^(#+)/:/^(#+)(?: |$)/,d=/^ {0,3}(?:\={1,}|-{2,})\s*$/,w=/^[^#!\[\]*_\\<>` "'(~:]+/,E=/^(~~~+|```+)[ \t]*([\w\/+#-]*)[^\n`]*$/,z=/^\s*\[[^\]]+?\]:.*$/,y=/[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDF3C-\uDF3E]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]/,R=" ";function M(q,T,de){return T.f=T.inline=de,de(q,T)}function H(q,T,de){return T.f=T.block=de,de(q,T)}function Z(q){return!q||!/\S/.test(q.string)}function ee(q){if(q.linkTitle=!1,q.linkHref=!1,q.linkText=!1,q.em=!1,q.strong=!1,q.strikethrough=!1,q.quote=0,q.indentedCode=!1,q.f==N){var T=b;if(!T){var de=o.innerMode(C,q.htmlState);T=de.mode.name=="xml"&&de.state.tagStart===null&&!de.state.context&&de.state.tokenize.isInText}T&&(q.f=j,q.block=re,q.htmlState=null)}return q.trailingSpace=0,q.trailingSpaceNewLine=!1,q.prevLine=q.thisLine,q.thisLine={stream:null},null}function re(q,T){var de=q.column()===T.indentation,ze=Z(T.prevLine.stream),pe=T.indentedCode,Ee=T.prevLine.hr,ge=T.list!==!1,Oe=(T.listStack[T.listStack.length-1]||0)+3;T.indentedCode=!1;var qe=T.indentation;if(T.indentationDiff===null&&(T.indentationDiff=T.indentation,ge)){for(T.list=null;qe=4&&(pe||T.prevLine.fencedCodeEnd||T.prevLine.header||ze))return q.skipToEnd(),T.indentedCode=!0,s.code;if(q.eatSpace())return null;if(de&&T.indentation<=Oe&&(Ze=q.match(c))&&Ze[1].length<=6)return T.quote=0,T.header=Ze[1].length,T.thisLine.header=!0,v.highlightFormatting&&(T.formatting="header"),T.f=T.inline,D(T);if(T.indentation<=Oe&&q.eat(">"))return T.quote=de?1:T.quote+1,v.highlightFormatting&&(T.formatting="quote"),q.eatSpace(),D(T);if(!je&&!T.setext&&de&&T.indentation<=Oe&&(Ze=q.match(L))){var ke=Ze[1]?"ol":"ul";return T.indentation=qe+q.current().length,T.list=!0,T.quote=0,T.listStack.push(T.indentation),T.em=!1,T.strong=!1,T.code=!1,T.strikethrough=!1,v.taskLists&&q.match(x,!1)&&(T.taskList=!0),T.f=T.inline,v.highlightFormatting&&(T.formatting=["list","list-"+ke]),D(T)}else{if(de&&T.indentation<=Oe&&(Ze=q.match(E,!0)))return T.quote=0,T.fencedEndRE=new RegExp(Ze[1]+"+ *$"),T.localMode=v.fencedCodeBlockHighlighting&&S(Ze[2]||v.fencedCodeBlockDefaultMode),T.localMode&&(T.localState=o.startState(T.localMode)),T.f=T.block=F,v.highlightFormatting&&(T.formatting="code-block"),T.code=-1,D(T);if(T.setext||(!Se||!ge)&&!T.quote&&T.list===!1&&!T.code&&!je&&!z.test(q.string)&&(Ze=q.lookAhead(1))&&(Ze=Ze.match(d)))return T.setext?(T.header=T.setext,T.setext=0,q.skipToEnd(),v.highlightFormatting&&(T.formatting="header")):(T.header=Ze[0].charAt(0)=="="?1:2,T.setext=T.header),T.thisLine.header=!0,T.f=T.inline,D(T);if(je)return q.skipToEnd(),T.hr=!0,T.thisLine.hr=!0,s.hr;if(q.peek()==="[")return M(q,T,I)}return M(q,T,T.inline)}function N(q,T){var de=C.token(q,T.htmlState);if(!b){var ze=o.innerMode(C,T.htmlState);(ze.mode.name=="xml"&&ze.state.tagStart===null&&!ze.state.context&&ze.state.tokenize.isInText||T.md_inside&&q.current().indexOf(">")>-1)&&(T.f=j,T.block=re,T.htmlState=null)}return de}function F(q,T){var de=T.listStack[T.listStack.length-1]||0,ze=T.indentation=q.quote?T.push(s.formatting+"-"+q.formatting[de]+"-"+q.quote):T.push("error"))}if(q.taskOpen)return T.push("meta"),T.length?T.join(" "):null;if(q.taskClosed)return T.push("property"),T.length?T.join(" "):null;if(q.linkHref?T.push(s.linkHref,"url"):(q.strong&&T.push(s.strong),q.em&&T.push(s.em),q.strikethrough&&T.push(s.strikethrough),q.emoji&&T.push(s.emoji),q.linkText&&T.push(s.linkText),q.code&&T.push(s.code),q.image&&T.push(s.image),q.imageAltText&&T.push(s.imageAltText,"link"),q.imageMarker&&T.push(s.imageMarker)),q.header&&T.push(s.header,s.header+"-"+q.header),q.quote&&(T.push(s.quote),!v.maxBlockquoteDepth||v.maxBlockquoteDepth>=q.quote?T.push(s.quote+"-"+q.quote):T.push(s.quote+"-"+v.maxBlockquoteDepth)),q.list!==!1){var ze=(q.listStack.length-1)%3;ze?ze===1?T.push(s.list2):T.push(s.list3):T.push(s.list1)}return q.trailingSpaceNewLine?T.push("trailing-space-new-line"):q.trailingSpace&&T.push("trailing-space-"+(q.trailingSpace%2?"a":"b")),T.length?T.join(" "):null}function Q(q,T){if(q.match(w,!0))return D(T)}function j(q,T){var de=T.text(q,T);if(typeof de<"u")return de;if(T.list)return T.list=null,D(T);if(T.taskList){var ze=q.match(x,!0)[1]===" ";return ze?T.taskOpen=!0:T.taskClosed=!0,v.highlightFormatting&&(T.formatting="task"),T.taskList=!1,D(T)}if(T.taskOpen=!1,T.taskClosed=!1,T.header&&q.match(/^#+$/,!0))return v.highlightFormatting&&(T.formatting="header"),D(T);var pe=q.next();if(T.linkTitle){T.linkTitle=!1;var Ee=pe;pe==="("&&(Ee=")"),Ee=(Ee+"").replace(/([.?*+^\[\]\\(){}|-])/g,"\\$1");var ge="^\\s*(?:[^"+Ee+"\\\\]+|\\\\\\\\|\\\\.)"+Ee;if(q.match(new RegExp(ge),!0))return s.linkHref}if(pe==="`"){var Oe=T.formatting;v.highlightFormatting&&(T.formatting="code"),q.eatWhile("`");var qe=q.current().length;if(T.code==0&&(!T.quote||qe==1))return T.code=qe,D(T);if(qe==T.code){var Se=D(T);return T.code=0,Se}else return T.formatting=Oe,D(T)}else if(T.code)return D(T);if(pe==="\\"&&(q.next(),v.highlightFormatting)){var je=D(T),Ze=s.formatting+"-escape";return je?je+" "+Ze:Ze}if(pe==="!"&&q.match(/\[[^\]]*\] ?(?:\(|\[)/,!1))return T.imageMarker=!0,T.image=!0,v.highlightFormatting&&(T.formatting="image"),D(T);if(pe==="["&&T.imageMarker&&q.match(/[^\]]*\](\(.*?\)| ?\[.*?\])/,!1))return T.imageMarker=!1,T.imageAltText=!0,v.highlightFormatting&&(T.formatting="image"),D(T);if(pe==="]"&&T.imageAltText){v.highlightFormatting&&(T.formatting="image");var je=D(T);return T.imageAltText=!1,T.image=!1,T.inline=T.f=_,je}if(pe==="["&&!T.image)return T.linkText&&q.match(/^.*?\]/)||(T.linkText=!0,v.highlightFormatting&&(T.formatting="link")),D(T);if(pe==="]"&&T.linkText){v.highlightFormatting&&(T.formatting="link");var je=D(T);return T.linkText=!1,T.inline=T.f=q.match(/\(.*?\)| ?\[.*?\]/,!1)?_:j,je}if(pe==="<"&&q.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/,!1)){T.f=T.inline=V,v.highlightFormatting&&(T.formatting="link");var je=D(T);return je?je+=" ":je="",je+s.linkInline}if(pe==="<"&&q.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/,!1)){T.f=T.inline=V,v.highlightFormatting&&(T.formatting="link");var je=D(T);return je?je+=" ":je="",je+s.linkEmail}if(v.xml&&pe==="<"&&q.match(/^(!--|\?|!\[CDATA\[|[a-z][a-z0-9-]*(?:\s+[a-z_:.\-]+(?:\s*=\s*[^>]+)?)*\s*(?:>|$))/i,!1)){var ke=q.string.indexOf(">",q.pos);if(ke!=-1){var Je=q.string.substring(q.start,ke);/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(Je)&&(T.md_inside=!0)}return q.backUp(1),T.htmlState=o.startState(C),H(q,T,N)}if(v.xml&&pe==="<"&&q.match(/^\/\w*?>/))return T.md_inside=!1,"tag";if(pe==="*"||pe==="_"){for(var He=1,Ge=q.pos==1?" ":q.string.charAt(q.pos-2);He<3&&q.eat(pe);)He++;var U=q.peek()||" ",G=!/\s/.test(U)&&(!y.test(U)||/\s/.test(Ge)||y.test(Ge)),ce=!/\s/.test(Ge)&&(!y.test(Ge)||/\s/.test(U)||y.test(U)),Be=null,te=null;if(He%2&&(!T.em&&G&&(pe==="*"||!ce||y.test(Ge))?Be=!0:T.em==pe&&ce&&(pe==="*"||!G||y.test(U))&&(Be=!1)),He>1&&(!T.strong&&G&&(pe==="*"||!ce||y.test(Ge))?te=!0:T.strong==pe&&ce&&(pe==="*"||!G||y.test(U))&&(te=!1)),te!=null||Be!=null){v.highlightFormatting&&(T.formatting=Be==null?"strong":te==null?"em":"strong em"),Be===!0&&(T.em=pe),te===!0&&(T.strong=pe);var Se=D(T);return Be===!1&&(T.em=!1),te===!1&&(T.strong=!1),Se}}else if(pe===" "&&(q.eat("*")||q.eat("_"))){if(q.peek()===" ")return D(T);q.backUp(1)}if(v.strikethrough){if(pe==="~"&&q.eatWhile(pe)){if(T.strikethrough){v.highlightFormatting&&(T.formatting="strikethrough");var Se=D(T);return T.strikethrough=!1,Se}else if(q.match(/^[^\s]/,!1))return T.strikethrough=!0,v.highlightFormatting&&(T.formatting="strikethrough"),D(T)}else if(pe===" "&&q.match("~~",!0)){if(q.peek()===" ")return D(T);q.backUp(2)}}if(v.emoji&&pe===":"&&q.match(/^(?:[a-z_\d+][a-z_\d+-]*|\-[a-z_\d+][a-z_\d+-]*):/)){T.emoji=!0,v.highlightFormatting&&(T.formatting="emoji");var fe=D(T);return T.emoji=!1,fe}return pe===" "&&(q.match(/^ +$/,!1)?T.trailingSpace++:T.trailingSpace&&(T.trailingSpaceNewLine=!0)),D(T)}function V(q,T){var de=q.next();if(de===">"){T.f=T.inline=j,v.highlightFormatting&&(T.formatting="link");var ze=D(T);return ze?ze+=" ":ze="",ze+s.linkInline}return q.match(/^[^>]+/,!0),s.linkInline}function _(q,T){if(q.eatSpace())return null;var de=q.next();return de==="("||de==="["?(T.f=T.inline=X(de==="("?")":"]"),v.highlightFormatting&&(T.formatting="link-string"),T.linkHref=!0,D(T)):"error"}var K={")":/^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/,"]":/^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\]]|\\.)*\])*?(?=\])/};function X(q){return function(T,de){var ze=T.next();if(ze===q){de.f=de.inline=j,v.highlightFormatting&&(de.formatting="link-string");var pe=D(de);return de.linkHref=!1,pe}return T.match(K[q]),de.linkHref=!0,D(de)}}function I(q,T){return q.match(/^([^\]\\]|\\.)*\]:/,!1)?(T.f=B,q.next(),v.highlightFormatting&&(T.formatting="link"),T.linkText=!0,D(T)):M(q,T,j)}function B(q,T){if(q.match("]:",!0)){T.f=T.inline=le,v.highlightFormatting&&(T.formatting="link");var de=D(T);return T.linkText=!1,de}return q.match(/^([^\]\\]|\\.)+/,!0),s.linkText}function le(q,T){return q.eatSpace()?null:(q.match(/^[^\s]+/,!0),q.peek()===void 0?T.linkTitle=!0:q.match(/^(?:\s+(?:"(?:[^"\\]|\\.)+"|'(?:[^'\\]|\\.)+'|\((?:[^)\\]|\\.)+\)))?/,!0),T.f=T.inline=j,s.linkHref+" url")}var xe={startState:function(){return{f:re,prevLine:{stream:null},thisLine:{stream:null},block:re,htmlState:null,indentation:0,inline:j,text:Q,formatting:!1,linkText:!1,linkHref:!1,linkTitle:!1,code:0,em:!1,strong:!1,header:0,setext:0,hr:!1,taskList:!1,list:!1,listStack:[],quote:0,trailingSpace:0,trailingSpaceNewLine:!1,strikethrough:!1,emoji:!1,fencedEndRE:null}},copyState:function(q){return{f:q.f,prevLine:q.prevLine,thisLine:q.thisLine,block:q.block,htmlState:q.htmlState&&o.copyState(C,q.htmlState),indentation:q.indentation,localMode:q.localMode,localState:q.localMode?o.copyState(q.localMode,q.localState):null,inline:q.inline,text:q.text,formatting:!1,linkText:q.linkText,linkTitle:q.linkTitle,linkHref:q.linkHref,code:q.code,em:q.em,strong:q.strong,strikethrough:q.strikethrough,emoji:q.emoji,header:q.header,setext:q.setext,hr:q.hr,taskList:q.taskList,list:q.list,listStack:q.listStack.slice(0),quote:q.quote,indentedCode:q.indentedCode,trailingSpace:q.trailingSpace,trailingSpaceNewLine:q.trailingSpaceNewLine,md_inside:q.md_inside,fencedEndRE:q.fencedEndRE}},token:function(q,T){if(T.formatting=!1,q!=T.thisLine.stream){if(T.header=0,T.hr=!1,q.match(/^\s*$/,!0))return ee(T),null;if(T.prevLine=T.thisLine,T.thisLine={stream:q},T.taskList=!1,T.trailingSpace=0,T.trailingSpaceNewLine=!1,!T.localState&&(T.f=T.block,T.f!=N)){var de=q.match(/^\s*/,!0)[0].replace(/\t/g,R).length;if(T.indentation=de,T.indentationDiff=null,de>0)return null}}return T.f(q,T)},innerMode:function(q){return q.block==N?{state:q.htmlState,mode:C}:q.localState?{state:q.localState,mode:q.localMode}:{state:q,mode:xe}},indent:function(q,T,de){return q.block==N&&C.indent?C.indent(q.htmlState,T,de):q.localState&&q.localMode.indent?q.localMode.indent(q.localState,T,de):o.Pass},blankLine:ee,getType:D,blockCommentStart:"",closeBrackets:"()[]{}''\"\"``",fold:"markdown"};return xe},"xml"),o.defineMIME("text/markdown","markdown"),o.defineMIME("text/x-markdown","markdown")})});var eu=Ke((Vs,Js)=>{(function(o){typeof Vs=="object"&&typeof Js=="object"?o(We(),Jo(),Yn()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../markdown/markdown","../../addon/mode/overlay"],o):o(CodeMirror)})(function(o){"use strict";var h=/^((?:(?:aaas?|about|acap|adiumxtra|af[ps]|aim|apt|attachment|aw|beshare|bitcoin|bolo|callto|cap|chrome(?:-extension)?|cid|coap|com-eventbrite-attendee|content|crid|cvs|data|dav|dict|dlna-(?:playcontainer|playsingle)|dns|doi|dtn|dvb|ed2k|facetime|feed|file|finger|fish|ftp|geo|gg|git|gizmoproject|go|gopher|gtalk|h323|hcp|https?|iax|icap|icon|im|imap|info|ipn|ipp|irc[6s]?|iris(?:\.beep|\.lwz|\.xpc|\.xpcs)?|itms|jar|javascript|jms|keyparc|lastfm|ldaps?|magnet|mailto|maps|market|message|mid|mms|ms-help|msnim|msrps?|mtqp|mumble|mupdate|mvn|news|nfs|nih?|nntp|notes|oid|opaquelocktoken|palm|paparazzi|platform|pop|pres|proxy|psyc|query|res(?:ource)?|rmi|rsync|rtmp|rtsp|secondlife|service|session|sftp|sgn|shttp|sieve|sips?|skype|sm[bs]|snmp|soap\.beeps?|soldat|spotify|ssh|steam|svn|tag|teamspeak|tel(?:net)?|tftp|things|thismessage|tip|tn3270|tv|udp|unreal|urn|ut2004|vemmi|ventrilo|view-source|webcal|wss?|wtai|wyciwyg|xcon(?:-userid)?|xfire|xmlrpc\.beeps?|xmpp|xri|ymsgr|z39\.50[rs]?):(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]|\([^\s()<>]*\))+(?:\([^\s()<>]*\)|[^\s`*!()\[\]{};:'".,<>?«»“”‘’]))/i;o.defineMode("gfm",function(v,C){var b=0;function S(L){return L.code=!1,null}var s={startState:function(){return{code:!1,codeBlock:!1,ateSpace:!1}},copyState:function(L){return{code:L.code,codeBlock:L.codeBlock,ateSpace:L.ateSpace}},token:function(L,x){if(x.combineTokens=null,x.codeBlock)return L.match(/^```+/)?(x.codeBlock=!1,null):(L.skipToEnd(),null);if(L.sol()&&(x.code=!1),L.sol()&&L.match(/^```+/))return L.skipToEnd(),x.codeBlock=!0,null;if(L.peek()==="`"){L.next();var c=L.pos;L.eatWhile("`");var d=1+L.pos-c;return x.code?d===b&&(x.code=!1):(b=d,x.code=!0),null}else if(x.code)return L.next(),null;if(L.eatSpace())return x.ateSpace=!0,null;if((L.sol()||x.ateSpace)&&(x.ateSpace=!1,C.gitHubSpice!==!1)){if(L.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+@)?(?=.{0,6}\d)(?:[a-f0-9]{7,40}\b)/))return x.combineTokens=!0,"link";if(L.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+)?#[0-9]+\b/))return x.combineTokens=!0,"link"}return L.match(h)&&L.string.slice(L.start-2,L.start)!="]("&&(L.start==0||/\W/.test(L.string.charAt(L.start-1)))?(x.combineTokens=!0,"link"):(L.next(),null)},blankLine:S},p={taskLists:!0,strikethrough:!0,emoji:!0};for(var g in C)p[g]=C[g];return p.name="markdown",o.overlayMode(o.getMode(v,p),s)},"markdown"),o.defineMIME("text/x-gfm","gfm")})});var nu=Ke((tu,ru)=>{(function(o){typeof tu=="object"&&typeof ru=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("go",function(h){var v=h.indentUnit,C={break:!0,case:!0,chan:!0,const:!0,continue:!0,default:!0,defer:!0,else:!0,fallthrough:!0,for:!0,func:!0,go:!0,goto:!0,if:!0,import:!0,interface:!0,map:!0,package:!0,range:!0,return:!0,select:!0,struct:!0,switch:!0,type:!0,var:!0,bool:!0,byte:!0,complex64:!0,complex128:!0,float32:!0,float64:!0,int8:!0,int16:!0,int32:!0,int64:!0,string:!0,uint8:!0,uint16:!0,uint32:!0,uint64:!0,int:!0,uint:!0,uintptr:!0,error:!0,rune:!0,any:!0,comparable:!0},b={true:!0,false:!0,iota:!0,nil:!0,append:!0,cap:!0,close:!0,complex:!0,copy:!0,delete:!0,imag:!0,len:!0,make:!0,new:!0,panic:!0,print:!0,println:!0,real:!0,recover:!0},S=/[+\-*&^%:=<>!|\/]/,s;function p(w,E){var z=w.next();if(z=='"'||z=="'"||z=="`")return E.tokenize=g(z),E.tokenize(w,E);if(/[\d\.]/.test(z))return z=="."?w.match(/^[0-9_]+([eE][\-+]?[0-9_]+)?/):z=="0"?w.match(/^[xX][0-9a-fA-F_]+/)||w.match(/^[0-7_]+/):w.match(/^[0-9_]*\.?[0-9_]*([eE][\-+]?[0-9_]+)?/),"number";if(/[\[\]{}\(\),;\:\.]/.test(z))return s=z,null;if(z=="/"){if(w.eat("*"))return E.tokenize=L,L(w,E);if(w.eat("/"))return w.skipToEnd(),"comment"}if(S.test(z))return w.eatWhile(S),"operator";w.eatWhile(/[\w\$_\xa1-\uffff]/);var y=w.current();return C.propertyIsEnumerable(y)?((y=="case"||y=="default")&&(s="case"),"keyword"):b.propertyIsEnumerable(y)?"atom":"variable"}function g(w){return function(E,z){for(var y=!1,R,M=!1;(R=E.next())!=null;){if(R==w&&!y){M=!0;break}y=!y&&w!="`"&&R=="\\"}return(M||!(y||w=="`"))&&(z.tokenize=p),"string"}}function L(w,E){for(var z=!1,y;y=w.next();){if(y=="/"&&z){E.tokenize=p;break}z=y=="*"}return"comment"}function x(w,E,z,y,R){this.indented=w,this.column=E,this.type=z,this.align=y,this.prev=R}function c(w,E,z){return w.context=new x(w.indented,E,z,null,w.context)}function d(w){if(w.context.prev){var E=w.context.type;return(E==")"||E=="]"||E=="}")&&(w.indented=w.context.indented),w.context=w.context.prev}}return{startState:function(w){return{tokenize:null,context:new x((w||0)-v,0,"top",!1),indented:0,startOfLine:!0}},token:function(w,E){var z=E.context;if(w.sol()&&(z.align==null&&(z.align=!1),E.indented=w.indentation(),E.startOfLine=!0,z.type=="case"&&(z.type="}")),w.eatSpace())return null;s=null;var y=(E.tokenize||p)(w,E);return y=="comment"||(z.align==null&&(z.align=!0),s=="{"?c(E,w.column(),"}"):s=="["?c(E,w.column(),"]"):s=="("?c(E,w.column(),")"):s=="case"?z.type="case":(s=="}"&&z.type=="}"||s==z.type)&&d(E),E.startOfLine=!1),y},indent:function(w,E){if(w.tokenize!=p&&w.tokenize!=null)return o.Pass;var z=w.context,y=E&&E.charAt(0);if(z.type=="case"&&/^(?:case|default)\b/.test(E))return w.context.type="}",z.indented;var R=y==z.type;return z.align?z.column+(R?0:1):z.indented+(R?0:v)},electricChars:"{}):",closeBrackets:"()[]{}''\"\"``",fold:"brace",blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//"}}),o.defineMIME("text/x-go","go")})});var au=Ke((iu,ou)=>{(function(o){typeof iu=="object"&&typeof ou=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("http",function(){function h(L,x){return L.skipToEnd(),x.cur=p,"error"}function v(L,x){return L.match(/^HTTP\/\d\.\d/)?(x.cur=C,"keyword"):L.match(/^[A-Z]+/)&&/[ \t]/.test(L.peek())?(x.cur=S,"keyword"):h(L,x)}function C(L,x){var c=L.match(/^\d+/);if(!c)return h(L,x);x.cur=b;var d=Number(c[0]);return d>=100&&d<200?"positive informational":d>=200&&d<300?"positive success":d>=300&&d<400?"positive redirect":d>=400&&d<500?"negative client-error":d>=500&&d<600?"negative server-error":"error"}function b(L,x){return L.skipToEnd(),x.cur=p,null}function S(L,x){return L.eatWhile(/\S/),x.cur=s,"string-2"}function s(L,x){return L.match(/^HTTP\/\d\.\d$/)?(x.cur=p,"keyword"):h(L,x)}function p(L){return L.sol()&&!L.eat(/[ \t]/)?L.match(/^.*?:/)?"atom":(L.skipToEnd(),"error"):(L.skipToEnd(),"string")}function g(L){return L.skipToEnd(),null}return{token:function(L,x){var c=x.cur;return c!=p&&c!=g&&L.eatSpace()?null:c(L,x)},blankLine:function(L){L.cur=g},startState:function(){return{cur:v}}}}),o.defineMIME("message/http","http")})});var uu=Ke((lu,su)=>{(function(o){typeof lu=="object"&&typeof su=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("jinja2",function(){var h=["and","as","block","endblock","by","cycle","debug","else","elif","extends","filter","endfilter","firstof","do","for","endfor","if","endif","ifchanged","endifchanged","ifequal","endifequal","ifnotequal","set","raw","endraw","endifnotequal","in","include","load","not","now","or","parsed","regroup","reversed","spaceless","call","endcall","macro","endmacro","endspaceless","ssi","templatetag","openblock","closeblock","openvariable","closevariable","without","context","openbrace","closebrace","opencomment","closecomment","widthratio","url","with","endwith","get_current_language","trans","endtrans","noop","blocktrans","endblocktrans","get_available_languages","get_current_language_bidi","pluralize","autoescape","endautoescape"],v=/^[+\-*&%=<>!?|~^]/,C=/^[:\[\(\{]/,b=["true","false"],S=/^(\d[+\-\*\/])?\d+(\.\d+)?/;h=new RegExp("(("+h.join(")|(")+"))\\b"),b=new RegExp("(("+b.join(")|(")+"))\\b");function s(p,g){var L=p.peek();if(g.incomment)return p.skipTo("#}")?(p.eatWhile(/\#|}/),g.incomment=!1):p.skipToEnd(),"comment";if(g.intag){if(g.operator){if(g.operator=!1,p.match(b))return"atom";if(p.match(S))return"number"}if(g.sign){if(g.sign=!1,p.match(b))return"atom";if(p.match(S))return"number"}if(g.instring)return L==g.instring&&(g.instring=!1),p.next(),"string";if(L=="'"||L=='"')return g.instring=L,p.next(),"string";if(g.inbraces>0&&L==")")p.next(),g.inbraces--;else if(L=="(")p.next(),g.inbraces++;else if(g.inbrackets>0&&L=="]")p.next(),g.inbrackets--;else if(L=="[")p.next(),g.inbrackets++;else{if(!g.lineTag&&(p.match(g.intag+"}")||p.eat("-")&&p.match(g.intag+"}")))return g.intag=!1,"tag";if(p.match(v))return g.operator=!0,"operator";if(p.match(C))g.sign=!0;else{if(p.column()==1&&g.lineTag&&p.match(h))return"keyword";if(p.eat(" ")||p.sol()){if(p.match(h))return"keyword";if(p.match(b))return"atom";if(p.match(S))return"number";p.sol()&&p.next()}else p.next()}}return"variable"}else if(p.eat("{")){if(p.eat("#"))return g.incomment=!0,p.skipTo("#}")?(p.eatWhile(/\#|}/),g.incomment=!1):p.skipToEnd(),"comment";if(L=p.eat(/\{|%/))return g.intag=L,g.inbraces=0,g.inbrackets=0,L=="{"&&(g.intag="}"),p.eat("-"),"tag"}else if(p.eat("#")){if(p.peek()=="#")return p.skipToEnd(),"comment";if(!p.eol())return g.intag=!0,g.lineTag=!0,g.inbraces=0,g.inbrackets=0,"tag"}p.next()}return{startState:function(){return{tokenize:s,inbrackets:0,inbraces:0}},token:function(p,g){var L=g.tokenize(p,g);return p.eol()&&g.lineTag&&!g.instring&&g.inbraces==0&&g.inbrackets==0&&(g.intag=!1,g.lineTag=!1),L},blockCommentStart:"{#",blockCommentEnd:"#}",lineComment:"##"}}),o.defineMIME("text/jinja2","jinja2")})});var du=Ke((cu,fu)=>{(function(o){typeof cu=="object"&&typeof fu=="object"?o(We(),mn(),vn()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../xml/xml","../javascript/javascript"],o):o(CodeMirror)})(function(o){"use strict";function h(C,b,S,s){this.state=C,this.mode=b,this.depth=S,this.prev=s}function v(C){return new h(o.copyState(C.mode,C.state),C.mode,C.depth,C.prev&&v(C.prev))}o.defineMode("jsx",function(C,b){var S=o.getMode(C,{name:"xml",allowMissing:!0,multilineTagIndentPastTag:!1,allowMissingTagName:!0}),s=o.getMode(C,b&&b.base||"javascript");function p(c){var d=c.tagName;c.tagName=null;var w=S.indent(c,"","");return c.tagName=d,w}function g(c,d){return d.context.mode==S?L(c,d,d.context):x(c,d,d.context)}function L(c,d,w){if(w.depth==2)return c.match(/^.*?\*\//)?w.depth=1:c.skipToEnd(),"comment";if(c.peek()=="{"){S.skipAttribute(w.state);var E=p(w.state),z=w.state.context;if(z&&c.match(/^[^>]*>\s*$/,!1)){for(;z.prev&&!z.startOfLine;)z=z.prev;z.startOfLine?E-=C.indentUnit:w.prev.state.lexical&&(E=w.prev.state.lexical.indented)}else w.depth==1&&(E+=C.indentUnit);return d.context=new h(o.startState(s,E),s,0,d.context),null}if(w.depth==1){if(c.peek()=="<")return S.skipAttribute(w.state),d.context=new h(o.startState(S,p(w.state)),S,0,d.context),null;if(c.match("//"))return c.skipToEnd(),"comment";if(c.match("/*"))return w.depth=2,g(c,d)}var y=S.token(c,w.state),R=c.current(),M;return/\btag\b/.test(y)?/>$/.test(R)?w.state.context?w.depth=0:d.context=d.context.prev:/^-1&&c.backUp(R.length-M),y}function x(c,d,w){if(c.peek()=="<"&&!c.match(/^<([^<>]|<[^>]*>)+,\s*>/,!1)&&s.expressionAllowed(c,w.state))return d.context=new h(o.startState(S,s.indent(w.state,"","")),S,0,d.context),s.skipExpression(w.state),null;var E=s.token(c,w.state);if(!E&&w.depth!=null){var z=c.current();z=="{"?w.depth++:z=="}"&&--w.depth==0&&(d.context=d.context.prev)}return E}return{startState:function(){return{context:new h(o.startState(s),s)}},copyState:function(c){return{context:v(c.context)}},token:g,indent:function(c,d,w){return c.context.mode.indent(c.context.state,d,w)},innerMode:function(c){return c.context}}},"xml","javascript"),o.defineMIME("text/jsx","jsx"),o.defineMIME("text/typescript-jsx",{name:"jsx",base:{name:"javascript",typescript:!0}})})});var gu=Ke((pu,hu)=>{(function(o){typeof pu=="object"&&typeof hu=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("nginx",function(h){function v(w){for(var E={},z=w.split(" "),y=0;y*\/]/.test(y)?g(null,"select-op"):/[;{}:\[\]]/.test(y)?g(null,y):(w.eatWhile(/[\w\\\-]/),g("variable","variable"))}function x(w,E){for(var z=!1,y;(y=w.next())!=null;){if(z&&y=="/"){E.tokenize=L;break}z=y=="*"}return g("comment","comment")}function c(w,E){for(var z=0,y;(y=w.next())!=null;){if(z>=2&&y==">"){E.tokenize=L;break}z=y=="-"?z+1:0}return g("comment","comment")}function d(w){return function(E,z){for(var y=!1,R;(R=E.next())!=null&&!(R==w&&!y);)y=!y&&R=="\\";return y||(z.tokenize=L),g("string","string")}}return{startState:function(w){return{tokenize:L,baseIndent:w||0,stack:[]}},token:function(w,E){if(w.eatSpace())return null;p=null;var z=E.tokenize(w,E),y=E.stack[E.stack.length-1];return p=="hash"&&y=="rule"?z="atom":z=="variable"&&(y=="rule"?z="number":(!y||y=="@media{")&&(z="tag")),y=="rule"&&/^[\{\};]$/.test(p)&&E.stack.pop(),p=="{"?y=="@media"?E.stack[E.stack.length-1]="@media{":E.stack.push("{"):p=="}"?E.stack.pop():p=="@media"?E.stack.push("@media"):y=="{"&&p!="comment"&&E.stack.push("rule"),z},indent:function(w,E){var z=w.stack.length;return/^\}/.test(E)&&(z-=w.stack[w.stack.length-1]=="rule"?2:1),w.baseIndent+z*s},electricChars:"}"}}),o.defineMIME("text/x-nginx-conf","nginx")})});var bu=Ke((mu,vu)=>{(function(o){typeof mu=="object"&&typeof vu=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("pascal",function(){function h(L){for(var x={},c=L.split(" "),d=0;d!?|\/]/;function S(L,x){var c=L.next();if(c=="#"&&x.startOfLine)return L.skipToEnd(),"meta";if(c=='"'||c=="'")return x.tokenize=s(c),x.tokenize(L,x);if(c=="("&&L.eat("*"))return x.tokenize=p,p(L,x);if(c=="{")return x.tokenize=g,g(L,x);if(/[\[\]\(\),;\:\.]/.test(c))return null;if(/\d/.test(c))return L.eatWhile(/[\w\.]/),"number";if(c=="/"&&L.eat("/"))return L.skipToEnd(),"comment";if(b.test(c))return L.eatWhile(b),"operator";L.eatWhile(/[\w\$_]/);var d=L.current();return v.propertyIsEnumerable(d)?"keyword":C.propertyIsEnumerable(d)?"atom":"variable"}function s(L){return function(x,c){for(var d=!1,w,E=!1;(w=x.next())!=null;){if(w==L&&!d){E=!0;break}d=!d&&w=="\\"}return(E||!d)&&(c.tokenize=null),"string"}}function p(L,x){for(var c=!1,d;d=L.next();){if(d==")"&&c){x.tokenize=null;break}c=d=="*"}return"comment"}function g(L,x){for(var c;c=L.next();)if(c=="}"){x.tokenize=null;break}return"comment"}return{startState:function(){return{tokenize:null}},token:function(L,x){if(L.eatSpace())return null;var c=(x.tokenize||S)(L,x);return c=="comment"||c=="meta",c},electricChars:"{}"}}),o.defineMIME("text/x-pascal","pascal")})});var _u=Ke((yu,xu)=>{(function(o){typeof yu=="object"&&typeof xu=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("perl",function(){var S={"->":4,"++":4,"--":4,"**":4,"=~":4,"!~":4,"*":4,"/":4,"%":4,x:4,"+":4,"-":4,".":4,"<<":4,">>":4,"<":4,">":4,"<=":4,">=":4,lt:4,gt:4,le:4,ge:4,"==":4,"!=":4,"<=>":4,eq:4,ne:4,cmp:4,"~~":4,"&":4,"|":4,"^":4,"&&":4,"||":4,"//":4,"..":4,"...":4,"?":4,":":4,"=":4,"+=":4,"-=":4,"*=":4,",":4,"=>":4,"::":4,not:4,and:4,or:4,xor:4,BEGIN:[5,1],END:[5,1],PRINT:[5,1],PRINTF:[5,1],GETC:[5,1],READ:[5,1],READLINE:[5,1],DESTROY:[5,1],TIE:[5,1],TIEHANDLE:[5,1],UNTIE:[5,1],STDIN:5,STDIN_TOP:5,STDOUT:5,STDOUT_TOP:5,STDERR:5,STDERR_TOP:5,$ARG:5,$_:5,"@ARG":5,"@_":5,$LIST_SEPARATOR:5,'$"':5,$PROCESS_ID:5,$PID:5,$$:5,$REAL_GROUP_ID:5,$GID:5,"$(":5,$EFFECTIVE_GROUP_ID:5,$EGID:5,"$)":5,$PROGRAM_NAME:5,$0:5,$SUBSCRIPT_SEPARATOR:5,$SUBSEP:5,"$;":5,$REAL_USER_ID:5,$UID:5,"$<":5,$EFFECTIVE_USER_ID:5,$EUID:5,"$>":5,$a:5,$b:5,$COMPILING:5,"$^C":5,$DEBUGGING:5,"$^D":5,"${^ENCODING}":5,$ENV:5,"%ENV":5,$SYSTEM_FD_MAX:5,"$^F":5,"@F":5,"${^GLOBAL_PHASE}":5,"$^H":5,"%^H":5,"@INC":5,"%INC":5,$INPLACE_EDIT:5,"$^I":5,"$^M":5,$OSNAME:5,"$^O":5,"${^OPEN}":5,$PERLDB:5,"$^P":5,$SIG:5,"%SIG":5,$BASETIME:5,"$^T":5,"${^TAINT}":5,"${^UNICODE}":5,"${^UTF8CACHE}":5,"${^UTF8LOCALE}":5,$PERL_VERSION:5,"$^V":5,"${^WIN32_SLOPPY_STAT}":5,$EXECUTABLE_NAME:5,"$^X":5,$1:5,$MATCH:5,"$&":5,"${^MATCH}":5,$PREMATCH:5,"$`":5,"${^PREMATCH}":5,$POSTMATCH:5,"$'":5,"${^POSTMATCH}":5,$LAST_PAREN_MATCH:5,"$+":5,$LAST_SUBMATCH_RESULT:5,"$^N":5,"@LAST_MATCH_END":5,"@+":5,"%LAST_PAREN_MATCH":5,"%+":5,"@LAST_MATCH_START":5,"@-":5,"%LAST_MATCH_START":5,"%-":5,$LAST_REGEXP_CODE_RESULT:5,"$^R":5,"${^RE_DEBUG_FLAGS}":5,"${^RE_TRIE_MAXBUF}":5,$ARGV:5,"@ARGV":5,ARGV:5,ARGVOUT:5,$OUTPUT_FIELD_SEPARATOR:5,$OFS:5,"$,":5,$INPUT_LINE_NUMBER:5,$NR:5,"$.":5,$INPUT_RECORD_SEPARATOR:5,$RS:5,"$/":5,$OUTPUT_RECORD_SEPARATOR:5,$ORS:5,"$\\":5,$OUTPUT_AUTOFLUSH:5,"$|":5,$ACCUMULATOR:5,"$^A":5,$FORMAT_FORMFEED:5,"$^L":5,$FORMAT_PAGE_NUMBER:5,"$%":5,$FORMAT_LINES_LEFT:5,"$-":5,$FORMAT_LINE_BREAK_CHARACTERS:5,"$:":5,$FORMAT_LINES_PER_PAGE:5,"$=":5,$FORMAT_TOP_NAME:5,"$^":5,$FORMAT_NAME:5,"$~":5,"${^CHILD_ERROR_NATIVE}":5,$EXTENDED_OS_ERROR:5,"$^E":5,$EXCEPTIONS_BEING_CAUGHT:5,"$^S":5,$WARNING:5,"$^W":5,"${^WARNING_BITS}":5,$OS_ERROR:5,$ERRNO:5,"$!":5,"%OS_ERROR":5,"%ERRNO":5,"%!":5,$CHILD_ERROR:5,"$?":5,$EVAL_ERROR:5,"$@":5,$OFMT:5,"$#":5,"$*":5,$ARRAY_BASE:5,"$[":5,$OLD_PERL_VERSION:5,"$]":5,if:[1,1],elsif:[1,1],else:[1,1],while:[1,1],unless:[1,1],for:[1,1],foreach:[1,1],abs:1,accept:1,alarm:1,atan2:1,bind:1,binmode:1,bless:1,bootstrap:1,break:1,caller:1,chdir:1,chmod:1,chomp:1,chop:1,chown:1,chr:1,chroot:1,close:1,closedir:1,connect:1,continue:[1,1],cos:1,crypt:1,dbmclose:1,dbmopen:1,default:1,defined:1,delete:1,die:1,do:1,dump:1,each:1,endgrent:1,endhostent:1,endnetent:1,endprotoent:1,endpwent:1,endservent:1,eof:1,eval:1,exec:1,exists:1,exit:1,exp:1,fcntl:1,fileno:1,flock:1,fork:1,format:1,formline:1,getc:1,getgrent:1,getgrgid:1,getgrnam:1,gethostbyaddr:1,gethostbyname:1,gethostent:1,getlogin:1,getnetbyaddr:1,getnetbyname:1,getnetent:1,getpeername:1,getpgrp:1,getppid:1,getpriority:1,getprotobyname:1,getprotobynumber:1,getprotoent:1,getpwent:1,getpwnam:1,getpwuid:1,getservbyname:1,getservbyport:1,getservent:1,getsockname:1,getsockopt:1,given:1,glob:1,gmtime:1,goto:1,grep:1,hex:1,import:1,index:1,int:1,ioctl:1,join:1,keys:1,kill:1,last:1,lc:1,lcfirst:1,length:1,link:1,listen:1,local:2,localtime:1,lock:1,log:1,lstat:1,m:null,map:1,mkdir:1,msgctl:1,msgget:1,msgrcv:1,msgsnd:1,my:2,new:1,next:1,no:1,oct:1,open:1,opendir:1,ord:1,our:2,pack:1,package:1,pipe:1,pop:1,pos:1,print:1,printf:1,prototype:1,push:1,q:null,qq:null,qr:null,quotemeta:null,qw:null,qx:null,rand:1,read:1,readdir:1,readline:1,readlink:1,readpipe:1,recv:1,redo:1,ref:1,rename:1,require:1,reset:1,return:1,reverse:1,rewinddir:1,rindex:1,rmdir:1,s:null,say:1,scalar:1,seek:1,seekdir:1,select:1,semctl:1,semget:1,semop:1,send:1,setgrent:1,sethostent:1,setnetent:1,setpgrp:1,setpriority:1,setprotoent:1,setpwent:1,setservent:1,setsockopt:1,shift:1,shmctl:1,shmget:1,shmread:1,shmwrite:1,shutdown:1,sin:1,sleep:1,socket:1,socketpair:1,sort:1,splice:1,split:1,sprintf:1,sqrt:1,srand:1,stat:1,state:1,study:1,sub:1,substr:1,symlink:1,syscall:1,sysopen:1,sysread:1,sysseek:1,system:1,syswrite:1,tell:1,telldir:1,tie:1,tied:1,time:1,times:1,tr:null,truncate:1,uc:1,ucfirst:1,umask:1,undef:1,unlink:1,unpack:1,unshift:1,untie:1,use:1,utime:1,values:1,vec:1,wait:1,waitpid:1,wantarray:1,warn:1,when:1,write:1,y:null},s="string-2",p=/[goseximacplud]/;function g(c,d,w,E,z){return d.chain=null,d.style=null,d.tail=null,d.tokenize=function(y,R){for(var M=!1,H,Z=0;H=y.next();){if(H===w[Z]&&!M)return w[++Z]!==void 0?(R.chain=w[Z],R.style=E,R.tail=z):z&&y.eatWhile(z),R.tokenize=x,E;M=!M&&H=="\\"}return E},d.tokenize(c,d)}function L(c,d,w){return d.tokenize=function(E,z){return E.string==w&&(z.tokenize=x),E.skipToEnd(),"string"},d.tokenize(c,d)}function x(c,d){if(c.eatSpace())return null;if(d.chain)return g(c,d,d.chain,d.style,d.tail);if(c.match(/^(\-?((\d[\d_]*)?\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F_]+|0b[01_]+|\d[\d_]*(e[+-]?\d+)?)/))return"number";if(c.match(/^<<(?=[_a-zA-Z])/))return c.eatWhile(/\w/),L(c,d,c.current().substr(2));if(c.sol()&&c.match(/^\=item(?!\w)/))return L(c,d,"=cut");var w=c.next();if(w=='"'||w=="'"){if(v(c,3)=="<<"+w){var E=c.pos;c.eatWhile(/\w/);var z=c.current().substr(1);if(z&&c.eat(w))return L(c,d,z);c.pos=E}return g(c,d,[w],"string")}if(w=="q"){var y=h(c,-2);if(!(y&&/\w/.test(y))){if(y=h(c,0),y=="x"){if(y=h(c,1),y=="(")return b(c,2),g(c,d,[")"],s,p);if(y=="[")return b(c,2),g(c,d,["]"],s,p);if(y=="{")return b(c,2),g(c,d,["}"],s,p);if(y=="<")return b(c,2),g(c,d,[">"],s,p);if(/[\^'"!~\/]/.test(y))return b(c,1),g(c,d,[c.eat(y)],s,p)}else if(y=="q"){if(y=h(c,1),y=="(")return b(c,2),g(c,d,[")"],"string");if(y=="[")return b(c,2),g(c,d,["]"],"string");if(y=="{")return b(c,2),g(c,d,["}"],"string");if(y=="<")return b(c,2),g(c,d,[">"],"string");if(/[\^'"!~\/]/.test(y))return b(c,1),g(c,d,[c.eat(y)],"string")}else if(y=="w"){if(y=h(c,1),y=="(")return b(c,2),g(c,d,[")"],"bracket");if(y=="[")return b(c,2),g(c,d,["]"],"bracket");if(y=="{")return b(c,2),g(c,d,["}"],"bracket");if(y=="<")return b(c,2),g(c,d,[">"],"bracket");if(/[\^'"!~\/]/.test(y))return b(c,1),g(c,d,[c.eat(y)],"bracket")}else if(y=="r"){if(y=h(c,1),y=="(")return b(c,2),g(c,d,[")"],s,p);if(y=="[")return b(c,2),g(c,d,["]"],s,p);if(y=="{")return b(c,2),g(c,d,["}"],s,p);if(y=="<")return b(c,2),g(c,d,[">"],s,p);if(/[\^'"!~\/]/.test(y))return b(c,1),g(c,d,[c.eat(y)],s,p)}else if(/[\^'"!~\/(\[{<]/.test(y)){if(y=="(")return b(c,1),g(c,d,[")"],"string");if(y=="[")return b(c,1),g(c,d,["]"],"string");if(y=="{")return b(c,1),g(c,d,["}"],"string");if(y=="<")return b(c,1),g(c,d,[">"],"string");if(/[\^'"!~\/]/.test(y))return g(c,d,[c.eat(y)],"string")}}}if(w=="m"){var y=h(c,-2);if(!(y&&/\w/.test(y))&&(y=c.eat(/[(\[{<\^'"!~\/]/),y)){if(/[\^'"!~\/]/.test(y))return g(c,d,[y],s,p);if(y=="(")return g(c,d,[")"],s,p);if(y=="[")return g(c,d,["]"],s,p);if(y=="{")return g(c,d,["}"],s,p);if(y=="<")return g(c,d,[">"],s,p)}}if(w=="s"){var y=/[\/>\]})\w]/.test(h(c,-2));if(!y&&(y=c.eat(/[(\[{<\^'"!~\/]/),y))return y=="["?g(c,d,["]","]"],s,p):y=="{"?g(c,d,["}","}"],s,p):y=="<"?g(c,d,[">",">"],s,p):y=="("?g(c,d,[")",")"],s,p):g(c,d,[y,y],s,p)}if(w=="y"){var y=/[\/>\]})\w]/.test(h(c,-2));if(!y&&(y=c.eat(/[(\[{<\^'"!~\/]/),y))return y=="["?g(c,d,["]","]"],s,p):y=="{"?g(c,d,["}","}"],s,p):y=="<"?g(c,d,[">",">"],s,p):y=="("?g(c,d,[")",")"],s,p):g(c,d,[y,y],s,p)}if(w=="t"){var y=/[\/>\]})\w]/.test(h(c,-2));if(!y&&(y=c.eat("r"),y&&(y=c.eat(/[(\[{<\^'"!~\/]/),y)))return y=="["?g(c,d,["]","]"],s,p):y=="{"?g(c,d,["}","}"],s,p):y=="<"?g(c,d,[">",">"],s,p):y=="("?g(c,d,[")",")"],s,p):g(c,d,[y,y],s,p)}if(w=="`")return g(c,d,[w],"variable-2");if(w=="/")return/~\s*$/.test(v(c))?g(c,d,[w],s,p):"operator";if(w=="$"){var E=c.pos;if(c.eatWhile(/\d/)||c.eat("{")&&c.eatWhile(/\d/)&&c.eat("}"))return"variable-2";c.pos=E}if(/[$@%]/.test(w)){var E=c.pos;if(c.eat("^")&&c.eat(/[A-Z]/)||!/[@$%&]/.test(h(c,-2))&&c.eat(/[=|\\\-#?@;:&`~\^!\[\]*'"$+.,\/<>()]/)){var y=c.current();if(S[y])return"variable-2"}c.pos=E}if(/[$@%&]/.test(w)&&(c.eatWhile(/[\w$]/)||c.eat("{")&&c.eatWhile(/[\w$]/)&&c.eat("}"))){var y=c.current();return S[y]?"variable-2":"variable"}if(w=="#"&&h(c,-2)!="$")return c.skipToEnd(),"comment";if(/[:+\-\^*$&%@=<>!?|\/~\.]/.test(w)){var E=c.pos;if(c.eatWhile(/[:+\-\^*$&%@=<>!?|\/~\.]/),S[c.current()])return"operator";c.pos=E}if(w=="_"&&c.pos==1){if(C(c,6)=="_END__")return g(c,d,["\0"],"comment");if(C(c,7)=="_DATA__")return g(c,d,["\0"],"variable-2");if(C(c,7)=="_C__")return g(c,d,["\0"],"string")}if(/\w/.test(w)){var E=c.pos;if(h(c,-2)=="{"&&(h(c,0)=="}"||c.eatWhile(/\w/)&&h(c,0)=="}"))return"string";c.pos=E}if(/[A-Z]/.test(w)){var R=h(c,-2),E=c.pos;if(c.eatWhile(/[A-Z_]/),/[\da-z]/.test(h(c,0)))c.pos=E;else{var y=S[c.current()];return y?(y[1]&&(y=y[0]),R!=":"?y==1?"keyword":y==2?"def":y==3?"atom":y==4?"operator":y==5?"variable-2":"meta":"meta"):"meta"}}if(/[a-zA-Z_]/.test(w)){var R=h(c,-2);c.eatWhile(/\w/);var y=S[c.current()];return y?(y[1]&&(y=y[0]),R!=":"?y==1?"keyword":y==2?"def":y==3?"atom":y==4?"operator":y==5?"variable-2":"meta":"meta"):"meta"}return null}return{startState:function(){return{tokenize:x,chain:null,style:null,tail:null}},token:function(c,d){return(d.tokenize||x)(c,d)},lineComment:"#"}}),o.registerHelper("wordChars","perl",/[\w$]/),o.defineMIME("text/x-perl","perl");function h(S,s){return S.string.charAt(S.pos+(s||0))}function v(S,s){if(s){var p=S.pos-s;return S.string.substr(p>=0?p:0,s)}else return S.string.substr(0,S.pos-1)}function C(S,s){var p=S.string.length,g=p-S.pos+1;return S.string.substr(S.pos,s&&s=(g=S.string.length-1)?S.pos=g:S.pos=p}})});var Su=Ke((ku,wu)=>{(function(o){typeof ku=="object"&&typeof wu=="object"?o(We(),Qn(),Vo()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../htmlmixed/htmlmixed","../clike/clike"],o):o(CodeMirror)})(function(o){"use strict";function h(L){for(var x={},c=L.split(" "),d=0;d\w/,!1)&&(x.tokenize=v([[["->",null]],[[/[\w]+/,"variable"]]],c,d)),"variable-2";for(var w=!1;!L.eol()&&(w||d===!1||!L.match("{$",!1)&&!L.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*|\$\{)/,!1));){if(!w&&L.match(c)){x.tokenize=null,x.tokStack.pop(),x.tokStack.pop();break}w=L.next()=="\\"&&!w}return"string"}var S="abstract and array as break case catch class clone const continue declare default do else elseif enddeclare endfor endforeach endif endswitch endwhile enum extends final for foreach function global goto if implements interface instanceof namespace new or private protected public static switch throw trait try use var while xor die echo empty exit eval include include_once isset list require require_once return print unset __halt_compiler self static parent yield insteadof finally readonly match",s="true false null TRUE FALSE NULL __CLASS__ __DIR__ __FILE__ __LINE__ __METHOD__ __FUNCTION__ __NAMESPACE__ __TRAIT__",p="func_num_args func_get_arg func_get_args strlen strcmp strncmp strcasecmp strncasecmp each error_reporting define defined trigger_error user_error set_error_handler restore_error_handler get_declared_classes get_loaded_extensions extension_loaded get_extension_funcs debug_backtrace constant bin2hex hex2bin sleep usleep time mktime gmmktime strftime gmstrftime strtotime date gmdate getdate localtime checkdate flush wordwrap htmlspecialchars htmlentities html_entity_decode md5 md5_file crc32 getimagesize image_type_to_mime_type phpinfo phpversion phpcredits strnatcmp strnatcasecmp substr_count strspn strcspn strtok strtoupper strtolower strpos strrpos strrev hebrev hebrevc nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr strrchr str_shuffle str_word_count strcoll substr substr_replace quotemeta ucfirst ucwords strtr addslashes addcslashes rtrim str_replace str_repeat count_chars chunk_split trim ltrim strip_tags similar_text explode implode setlocale localeconv parse_str str_pad chop strchr sprintf printf vprintf vsprintf sscanf fscanf parse_url urlencode urldecode rawurlencode rawurldecode readlink linkinfo link unlink exec system escapeshellcmd escapeshellarg passthru shell_exec proc_open proc_close rand srand getrandmax mt_rand mt_srand mt_getrandmax base64_decode base64_encode abs ceil floor round is_finite is_nan is_infinite bindec hexdec octdec decbin decoct dechex base_convert number_format fmod ip2long long2ip getenv putenv getopt microtime gettimeofday getrusage uniqid quoted_printable_decode set_time_limit get_cfg_var magic_quotes_runtime set_magic_quotes_runtime get_magic_quotes_gpc get_magic_quotes_runtime import_request_variables error_log serialize unserialize memory_get_usage memory_get_peak_usage var_dump var_export debug_zval_dump print_r highlight_file show_source highlight_string ini_get ini_get_all ini_set ini_alter ini_restore get_include_path set_include_path restore_include_path setcookie header headers_sent connection_aborted connection_status ignore_user_abort parse_ini_file is_uploaded_file move_uploaded_file intval floatval doubleval strval gettype settype is_null is_resource is_bool is_long is_float is_int is_integer is_double is_real is_numeric is_string is_array is_object is_scalar ereg ereg_replace eregi eregi_replace split spliti join sql_regcase dl pclose popen readfile rewind rmdir umask fclose feof fgetc fgets fgetss fread fopen fpassthru ftruncate fstat fseek ftell fflush fwrite fputs mkdir rename copy tempnam tmpfile file file_get_contents file_put_contents stream_select stream_context_create stream_context_set_params stream_context_set_option stream_context_get_options stream_filter_prepend stream_filter_append fgetcsv flock get_meta_tags stream_set_write_buffer set_file_buffer set_socket_blocking stream_set_blocking socket_set_blocking stream_get_meta_data stream_register_wrapper stream_wrapper_register stream_set_timeout socket_set_timeout socket_get_status realpath fnmatch fsockopen pfsockopen pack unpack get_browser crypt opendir closedir chdir getcwd rewinddir readdir dir glob fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype file_exists is_writable is_writeable is_readable is_executable is_file is_dir is_link stat lstat chown touch clearstatcache mail ob_start ob_flush ob_clean ob_end_flush ob_end_clean ob_get_flush ob_get_clean ob_get_length ob_get_level ob_get_status ob_get_contents ob_implicit_flush ob_list_handlers ksort krsort natsort natcasesort asort arsort sort rsort usort uasort uksort shuffle array_walk count end prev next reset current key min max in_array array_search extract compact array_fill range array_multisort array_push array_pop array_shift array_unshift array_splice array_slice array_merge array_merge_recursive array_keys array_values array_count_values array_reverse array_reduce array_pad array_flip array_change_key_case array_rand array_unique array_intersect array_intersect_assoc array_diff array_diff_assoc array_sum array_filter array_map array_chunk array_key_exists array_intersect_key array_combine array_column pos sizeof key_exists assert assert_options version_compare ftok str_rot13 aggregate session_name session_module_name session_save_path session_id session_regenerate_id session_decode session_register session_unregister session_is_registered session_encode session_start session_destroy session_unset session_set_save_handler session_cache_limiter session_cache_expire session_set_cookie_params session_get_cookie_params session_write_close preg_match preg_match_all preg_replace preg_replace_callback preg_split preg_quote preg_grep overload ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_lower ctype_graph ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit virtual apache_request_headers apache_note apache_lookup_uri apache_child_terminate apache_setenv apache_response_headers apache_get_version getallheaders mysql_connect mysql_pconnect mysql_close mysql_select_db mysql_create_db mysql_drop_db mysql_query mysql_unbuffered_query mysql_db_query mysql_list_dbs mysql_list_tables mysql_list_fields mysql_list_processes mysql_error mysql_errno mysql_affected_rows mysql_insert_id mysql_result mysql_num_rows mysql_num_fields mysql_fetch_row mysql_fetch_array mysql_fetch_assoc mysql_fetch_object mysql_data_seek mysql_fetch_lengths mysql_fetch_field mysql_field_seek mysql_free_result mysql_field_name mysql_field_table mysql_field_len mysql_field_type mysql_field_flags mysql_escape_string mysql_real_escape_string mysql_stat mysql_thread_id mysql_client_encoding mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql mysql_fieldname mysql_fieldtable mysql_fieldlen mysql_fieldtype mysql_fieldflags mysql_selectdb mysql_createdb mysql_dropdb mysql_freeresult mysql_numfields mysql_numrows mysql_listdbs mysql_listtables mysql_listfields mysql_db_name mysql_dbname mysql_tablename mysql_table_name pg_connect pg_pconnect pg_close pg_connection_status pg_connection_busy pg_connection_reset pg_host pg_dbname pg_port pg_tty pg_options pg_ping pg_query pg_send_query pg_cancel_query pg_fetch_result pg_fetch_row pg_fetch_assoc pg_fetch_array pg_fetch_object pg_fetch_all pg_affected_rows pg_get_result pg_result_seek pg_result_status pg_free_result pg_last_oid pg_num_rows pg_num_fields pg_field_name pg_field_num pg_field_size pg_field_type pg_field_prtlen pg_field_is_null pg_get_notify pg_get_pid pg_result_error pg_last_error pg_last_notice pg_put_line pg_end_copy pg_copy_to pg_copy_from pg_trace pg_untrace pg_lo_create pg_lo_unlink pg_lo_open pg_lo_close pg_lo_read pg_lo_write pg_lo_read_all pg_lo_import pg_lo_export pg_lo_seek pg_lo_tell pg_escape_string pg_escape_bytea pg_unescape_bytea pg_client_encoding pg_set_client_encoding pg_meta_data pg_convert pg_insert pg_update pg_delete pg_select pg_exec pg_getlastoid pg_cmdtuples pg_errormessage pg_numrows pg_numfields pg_fieldname pg_fieldsize pg_fieldtype pg_fieldnum pg_fieldprtlen pg_fieldisnull pg_freeresult pg_result pg_loreadall pg_locreate pg_lounlink pg_loopen pg_loclose pg_loread pg_lowrite pg_loimport pg_loexport http_response_code get_declared_traits getimagesizefromstring socket_import_stream stream_set_chunk_size trait_exists header_register_callback class_uses session_status session_register_shutdown echo print global static exit array empty eval isset unset die include require include_once require_once json_decode json_encode json_last_error json_last_error_msg curl_close curl_copy_handle curl_errno curl_error curl_escape curl_exec curl_file_create curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_multi_setopt curl_multi_strerror curl_pause curl_reset curl_setopt_array curl_setopt curl_share_close curl_share_init curl_share_setopt curl_strerror curl_unescape curl_version mysqli_affected_rows mysqli_autocommit mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect_errno mysqli_connect_error mysqli_connect mysqli_data_seek mysqli_debug mysqli_dump_debug_info mysqli_errno mysqli_error_list mysqli_error mysqli_fetch_all mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_charset mysqli_get_client_info mysqli_get_client_stats mysqli_get_client_version mysqli_get_connection_stats mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_more_results mysqli_multi_query mysqli_next_result mysqli_num_fields mysqli_num_rows mysqli_options mysqli_ping mysqli_prepare mysqli_query mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reap_async_query mysqli_refresh mysqli_rollback mysqli_select_db mysqli_set_charset mysqli_set_local_infile_default mysqli_set_local_infile_handler mysqli_sqlstate mysqli_ssl_set mysqli_stat mysqli_stmt_init mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count";o.registerHelper("hintWords","php",[S,s,p].join(" ").split(" ")),o.registerHelper("wordChars","php",/[\w$]/);var g={name:"clike",helperType:"php",keywords:h(S),blockKeywords:h("catch do else elseif for foreach if switch try while finally"),defKeywords:h("class enum function interface namespace trait"),atoms:h(s),builtin:h(p),multiLineStrings:!0,hooks:{$:function(L){return L.eatWhile(/[\w\$_]/),"variable-2"},"<":function(L,x){var c;if(c=L.match(/^<<\s*/)){var d=L.eat(/['"]/);L.eatWhile(/[\w\.]/);var w=L.current().slice(c[0].length+(d?2:1));if(d&&L.eat(d),w)return(x.tokStack||(x.tokStack=[])).push(w,0),x.tokenize=C(w,d!="'"),"string"}return!1},"#":function(L){for(;!L.eol()&&!L.match("?>",!1);)L.next();return"comment"},"/":function(L){if(L.eat("/")){for(;!L.eol()&&!L.match("?>",!1);)L.next();return"comment"}return!1},'"':function(L,x){return(x.tokStack||(x.tokStack=[])).push('"',0),x.tokenize=C('"'),"string"},"{":function(L,x){return x.tokStack&&x.tokStack.length&&x.tokStack[x.tokStack.length-1]++,!1},"}":function(L,x){return x.tokStack&&x.tokStack.length>0&&!--x.tokStack[x.tokStack.length-1]&&(x.tokenize=C(x.tokStack[x.tokStack.length-2])),!1}}};o.defineMode("php",function(L,x){var c=o.getMode(L,x&&x.htmlMode||"text/html"),d=o.getMode(L,g);function w(E,z){var y=z.curMode==d;if(E.sol()&&z.pending&&z.pending!='"'&&z.pending!="'"&&(z.pending=null),y)return y&&z.php.tokenize==null&&E.match("?>")?(z.curMode=c,z.curState=z.html,z.php.context.prev||(z.php=null),"meta"):d.token(E,z.curState);if(E.match(/^<\?\w*/))return z.curMode=d,z.php||(z.php=o.startState(d,c.indent(z.html,"",""))),z.curState=z.php,"meta";if(z.pending=='"'||z.pending=="'"){for(;!E.eol()&&E.next()!=z.pending;);var R="string"}else if(z.pending&&E.pos/.test(M)?z.pending=Z[0]:z.pending={end:E.pos,style:R},E.backUp(M.length-H)),R}return{startState:function(){var E=o.startState(c),z=x.startOpen?o.startState(d):null;return{html:E,php:z,curMode:x.startOpen?d:c,curState:x.startOpen?z:E,pending:null}},copyState:function(E){var z=E.html,y=o.copyState(c,z),R=E.php,M=R&&o.copyState(d,R),H;return E.curMode==c?H=y:H=M,{html:y,php:M,curMode:E.curMode,curState:H,pending:E.pending}},token:w,indent:function(E,z,y){return E.curMode!=d&&/^\s*<\//.test(z)||E.curMode==d&&/^\?>/.test(z)?c.indent(E.html,z,y):E.curMode.indent(E.curState,z,y)},blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//",innerMode:function(E){return{state:E.curState,mode:E.curMode}}}},"htmlmixed","clike"),o.defineMIME("application/x-httpd-php","php"),o.defineMIME("application/x-httpd-php-open",{name:"php",startOpen:!0}),o.defineMIME("text/x-php",g)})});var Cu=Ke((Tu,Lu)=>{(function(o){typeof Tu=="object"&&typeof Lu=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";function h(s){return new RegExp("^(("+s.join(")|(")+"))\\b","i")}var v=["package","message","import","syntax","required","optional","repeated","reserved","default","extensions","packed","bool","bytes","double","enum","float","string","int32","int64","uint32","uint64","sint32","sint64","fixed32","fixed64","sfixed32","sfixed64","option","service","rpc","returns"],C=h(v);o.registerHelper("hintWords","protobuf",v);var b=new RegExp("^[_A-Za-z\xA1-\uFFFF][_A-Za-z0-9\xA1-\uFFFF]*");function S(s){return s.eatSpace()?null:s.match("//")?(s.skipToEnd(),"comment"):s.match(/^[0-9\.+-]/,!1)&&(s.match(/^[+-]?0x[0-9a-fA-F]+/)||s.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?/)||s.match(/^[+-]?\d+([EeDd][+-]?\d+)?/))?"number":s.match(/^"([^"]|(""))*"/)||s.match(/^'([^']|(''))*'/)?"string":s.match(C)?"keyword":s.match(b)?"variable":(s.next(),null)}o.defineMode("protobuf",function(){return{token:S,fold:"brace"}}),o.defineMIME("text/x-protobuf","protobuf")})});var Mu=Ke((Eu,zu)=>{(function(o){typeof Eu=="object"&&typeof zu=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";function h(p){return new RegExp("^(("+p.join(")|(")+"))\\b")}var v=h(["and","or","not","is"]),C=["as","assert","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","lambda","pass","raise","return","try","while","with","yield","in","False","True"],b=["abs","all","any","bin","bool","bytearray","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip","__import__","NotImplemented","Ellipsis","__debug__"];o.registerHelper("hintWords","python",C.concat(b).concat(["exec","print"]));function S(p){return p.scopes[p.scopes.length-1]}o.defineMode("python",function(p,g){for(var L="error",x=g.delimiters||g.singleDelimiters||/^[\(\)\[\]\{\}@,:`=;\.\\]/,c=[g.singleOperators,g.doubleOperators,g.doubleDelimiters,g.tripleDelimiters,g.operators||/^([-+*/%\/&|^]=?|[<>=]+|\/\/=?|\*\*=?|!=|[~!@]|\.\.\.)/],d=0;dB?D(X):le0&&j(K,X)&&(xe+=" "+L),xe}}return re(K,X)}function re(K,X,I){if(K.eatSpace())return null;if(!I&&K.match(/^#.*/))return"comment";if(K.match(/^[0-9\.]/,!1)){var B=!1;if(K.match(/^[\d_]*\.\d+(e[\+\-]?\d+)?/i)&&(B=!0),K.match(/^[\d_]+\.\d*/)&&(B=!0),K.match(/^\.\d+/)&&(B=!0),B)return K.eat(/J/i),"number";var le=!1;if(K.match(/^0x[0-9a-f_]+/i)&&(le=!0),K.match(/^0b[01_]+/i)&&(le=!0),K.match(/^0o[0-7_]+/i)&&(le=!0),K.match(/^[1-9][\d_]*(e[\+\-]?[\d_]+)?/)&&(K.eat(/J/i),le=!0),K.match(/^0(?![\dx])/i)&&(le=!0),le)return K.eat(/L/i),"number"}if(K.match(M)){var xe=K.current().toLowerCase().indexOf("f")!==-1;return xe?(X.tokenize=N(K.current(),X.tokenize),X.tokenize(K,X)):(X.tokenize=F(K.current(),X.tokenize),X.tokenize(K,X))}for(var q=0;q=0;)K=K.substr(1);var I=K.length==1,B="string";function le(q){return function(T,de){var ze=re(T,de,!0);return ze=="punctuation"&&(T.current()=="{"?de.tokenize=le(q+1):T.current()=="}"&&(q>1?de.tokenize=le(q-1):de.tokenize=xe)),ze}}function xe(q,T){for(;!q.eol();)if(q.eatWhile(/[^'"\{\}\\]/),q.eat("\\")){if(q.next(),I&&q.eol())return B}else{if(q.match(K))return T.tokenize=X,B;if(q.match("{{"))return B;if(q.match("{",!1))return T.tokenize=le(0),q.current()?B:T.tokenize(q,T);if(q.match("}}"))return B;if(q.match("}"))return L;q.eat(/['"]/)}if(I){if(g.singleLineStringErrors)return L;T.tokenize=X}return B}return xe.isString=!0,xe}function F(K,X){for(;"rubf".indexOf(K.charAt(0).toLowerCase())>=0;)K=K.substr(1);var I=K.length==1,B="string";function le(xe,q){for(;!xe.eol();)if(xe.eatWhile(/[^'"\\]/),xe.eat("\\")){if(xe.next(),I&&xe.eol())return B}else{if(xe.match(K))return q.tokenize=X,B;xe.eat(/['"]/)}if(I){if(g.singleLineStringErrors)return L;q.tokenize=X}return B}return le.isString=!0,le}function D(K){for(;S(K).type!="py";)K.scopes.pop();K.scopes.push({offset:S(K).offset+p.indentUnit,type:"py",align:null})}function Q(K,X,I){var B=K.match(/^[\s\[\{\(]*(?:#|$)/,!1)?null:K.column()+1;X.scopes.push({offset:X.indent+w,type:I,align:B})}function j(K,X){for(var I=K.indentation();X.scopes.length>1&&S(X).offset>I;){if(S(X).type!="py")return!0;X.scopes.pop()}return S(X).offset!=I}function V(K,X){K.sol()&&(X.beginningOfLine=!0,X.dedent=!1);var I=X.tokenize(K,X),B=K.current();if(X.beginningOfLine&&B=="@")return K.match(R,!1)?"meta":y?"operator":L;if(/\S/.test(B)&&(X.beginningOfLine=!1),(I=="variable"||I=="builtin")&&X.lastToken=="meta"&&(I="meta"),(B=="pass"||B=="return")&&(X.dedent=!0),B=="lambda"&&(X.lambda=!0),B==":"&&!X.lambda&&S(X).type=="py"&&K.match(/^\s*(?:#|$)/,!1)&&D(X),B.length==1&&!/string|comment/.test(I)){var le="[({".indexOf(B);if(le!=-1&&Q(K,X,"])}".slice(le,le+1)),le="])}".indexOf(B),le!=-1)if(S(X).type==B)X.indent=X.scopes.pop().offset-w;else return L}return X.dedent&&K.eol()&&S(X).type=="py"&&X.scopes.length>1&&X.scopes.pop(),I}var _={startState:function(K){return{tokenize:ee,scopes:[{offset:K||0,type:"py",align:null}],indent:K||0,lastToken:null,lambda:!1,dedent:0}},token:function(K,X){var I=X.errorToken;I&&(X.errorToken=!1);var B=V(K,X);return B&&B!="comment"&&(X.lastToken=B=="keyword"||B=="punctuation"?K.current():B),B=="punctuation"&&(B=null),K.eol()&&X.lambda&&(X.lambda=!1),I?B+" "+L:B},indent:function(K,X){if(K.tokenize!=ee)return K.tokenize.isString?o.Pass:0;var I=S(K),B=I.type==X.charAt(0)||I.type=="py"&&!K.dedent&&/^(else:|elif |except |finally:)/.test(X);return I.align!=null?I.align-(B?1:0):I.offset-(B?w:0)},electricInput:/^\s*([\}\]\)]|else:|elif |except |finally:)$/,closeBrackets:{triples:`'"`},lineComment:"#",fold:"indent"};return _}),o.defineMIME("text/x-python","python");var s=function(p){return p.split(" ")};o.defineMIME("text/x-cython",{name:"python",extra_keywords:s("by cdef cimport cpdef ctypedef enum except extern gil include nogil property public readonly struct union DEF IF ELIF ELSE")})})});var qu=Ke((Au,Du)=>{(function(o){typeof Au=="object"&&typeof Du=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";function h(g){for(var L={},x=0,c=g.length;x]/)?(M.eat(/[\<\>]/),"atom"):M.eat(/[\+\-\*\/\&\|\:\!]/)?"atom":M.eat(/[a-zA-Z$@_\xa1-\uffff]/)?(M.eatWhile(/[\w$\xa1-\uffff]/),M.eat(/[\?\!\=]/),"atom"):"operator";if(Z=="@"&&M.match(/^@?[a-zA-Z_\xa1-\uffff]/))return M.eat("@"),M.eatWhile(/[\w\xa1-\uffff]/),"variable-2";if(Z=="$")return M.eat(/[a-zA-Z_]/)?M.eatWhile(/[\w]/):M.eat(/\d/)?M.eat(/\d/):M.next(),"variable-3";if(/[a-zA-Z_\xa1-\uffff]/.test(Z))return M.eatWhile(/[\w\xa1-\uffff]/),M.eat(/[\?\!]/),M.eat(":")?"atom":"ident";if(Z=="|"&&(H.varList||H.lastTok=="{"||H.lastTok=="do"))return L="|",null;if(/[\(\)\[\]{}\\;]/.test(Z))return L=Z,null;if(Z=="-"&&M.eat(">"))return"arrow";if(/[=+\-\/*:\.^%<>~|]/.test(Z)){var D=M.eatWhile(/[=+\-\/*:\.^%<>~|]/);return Z=="."&&!D&&(L="."),"operator"}else return null}}}function d(M){for(var H=M.pos,Z=0,ee,re=!1,N=!1;(ee=M.next())!=null;)if(N)N=!1;else{if("[{(".indexOf(ee)>-1)Z++;else if("]})".indexOf(ee)>-1){if(Z--,Z<0)break}else if(ee=="/"&&Z==0){re=!0;break}N=ee=="\\"}return M.backUp(M.pos-H),re}function w(M){return M||(M=1),function(H,Z){if(H.peek()=="}"){if(M==1)return Z.tokenize.pop(),Z.tokenize[Z.tokenize.length-1](H,Z);Z.tokenize[Z.tokenize.length-1]=w(M-1)}else H.peek()=="{"&&(Z.tokenize[Z.tokenize.length-1]=w(M+1));return c(H,Z)}}function E(){var M=!1;return function(H,Z){return M?(Z.tokenize.pop(),Z.tokenize[Z.tokenize.length-1](H,Z)):(M=!0,c(H,Z))}}function z(M,H,Z,ee){return function(re,N){var F=!1,D;for(N.context.type==="read-quoted-paused"&&(N.context=N.context.prev,re.eat("}"));(D=re.next())!=null;){if(D==M&&(ee||!F)){N.tokenize.pop();break}if(Z&&D=="#"&&!F){if(re.eat("{")){M=="}"&&(N.context={prev:N.context,type:"read-quoted-paused"}),N.tokenize.push(w());break}else if(/[@\$]/.test(re.peek())){N.tokenize.push(E());break}}F=!F&&D=="\\"}return H}}function y(M,H){return function(Z,ee){return H&&Z.eatSpace(),Z.match(M)?ee.tokenize.pop():Z.skipToEnd(),"string"}}function R(M,H){return M.sol()&&M.match("=end")&&M.eol()&&H.tokenize.pop(),M.skipToEnd(),"comment"}return{startState:function(){return{tokenize:[c],indented:0,context:{type:"top",indented:-g.indentUnit},continuedLine:!1,lastTok:null,varList:!1}},token:function(M,H){L=null,M.sol()&&(H.indented=M.indentation());var Z=H.tokenize[H.tokenize.length-1](M,H),ee,re=L;if(Z=="ident"){var N=M.current();Z=H.lastTok=="."?"property":C.propertyIsEnumerable(M.current())?"keyword":/^[A-Z]/.test(N)?"tag":H.lastTok=="def"||H.lastTok=="class"||H.varList?"def":"variable",Z=="keyword"&&(re=N,b.propertyIsEnumerable(N)?ee="indent":S.propertyIsEnumerable(N)?ee="dedent":((N=="if"||N=="unless")&&M.column()==M.indentation()||N=="do"&&H.context.indented{(function(o){typeof Iu=="object"&&typeof Fu=="object"?o(We(),Di()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../../addon/mode/simple"],o):o(CodeMirror)})(function(o){"use strict";o.defineSimpleMode("rust",{start:[{regex:/b?"/,token:"string",next:"string"},{regex:/b?r"/,token:"string",next:"string_raw"},{regex:/b?r#+"/,token:"string",next:"string_raw_hash"},{regex:/'(?:[^'\\]|\\(?:[nrt0'"]|x[\da-fA-F]{2}|u\{[\da-fA-F]{6}\}))'/,token:"string-2"},{regex:/b'(?:[^']|\\(?:['\\nrt0]|x[\da-fA-F]{2}))'/,token:"string-2"},{regex:/(?:(?:[0-9][0-9_]*)(?:(?:[Ee][+-]?[0-9_]+)|\.[0-9_]+(?:[Ee][+-]?[0-9_]+)?)(?:f32|f64)?)|(?:0(?:b[01_]+|(?:o[0-7_]+)|(?:x[0-9a-fA-F_]+))|(?:[0-9][0-9_]*))(?:u8|u16|u32|u64|i8|i16|i32|i64|isize|usize)?/,token:"number"},{regex:/(let(?:\s+mut)?|fn|enum|mod|struct|type|union)(\s+)([a-zA-Z_][a-zA-Z0-9_]*)/,token:["keyword",null,"def"]},{regex:/(?:abstract|alignof|as|async|await|box|break|continue|const|crate|do|dyn|else|enum|extern|fn|for|final|if|impl|in|loop|macro|match|mod|move|offsetof|override|priv|proc|pub|pure|ref|return|self|sizeof|static|struct|super|trait|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,token:"keyword"},{regex:/\b(?:Self|isize|usize|char|bool|u8|u16|u32|u64|f16|f32|f64|i8|i16|i32|i64|str|Option)\b/,token:"atom"},{regex:/\b(?:true|false|Some|None|Ok|Err)\b/,token:"builtin"},{regex:/\b(fn)(\s+)([a-zA-Z_][a-zA-Z0-9_]*)/,token:["keyword",null,"def"]},{regex:/#!?\[.*\]/,token:"meta"},{regex:/\/\/.*/,token:"comment"},{regex:/\/\*/,token:"comment",next:"comment"},{regex:/[-+\/*=<>!]+/,token:"operator"},{regex:/[a-zA-Z_]\w*!/,token:"variable-3"},{regex:/[a-zA-Z_]\w*/,token:"variable"},{regex:/[\{\[\(]/,indent:!0},{regex:/[\}\]\)]/,dedent:!0}],string:[{regex:/"/,token:"string",next:"start"},{regex:/(?:[^\\"]|\\(?:.|$))*/,token:"string"}],string_raw:[{regex:/"/,token:"string",next:"start"},{regex:/[^"]*/,token:"string"}],string_raw_hash:[{regex:/"#+/,token:"string",next:"start"},{regex:/(?:[^"]|"(?!#))*/,token:"string"}],comment:[{regex:/.*?\*\//,token:"comment",next:"start"},{regex:/.*/,token:"comment"}],meta:{dontIndentStates:["comment"],electricInput:/^\s*\}$/,blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//",fold:"brace"}}),o.defineMIME("text/x-rustsrc","rust"),o.defineMIME("text/rust","rust")})});var ea=Ke((Ou,Pu)=>{(function(o){typeof Ou=="object"&&typeof Pu=="object"?o(We(),gn()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../css/css"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("sass",function(h){var v=o.mimeModes["text/css"],C=v.propertyKeywords||{},b=v.colorKeywords||{},S=v.valueKeywords||{},s=v.fontProperties||{};function p(N){return new RegExp("^"+N.join("|"))}var g=["true","false","null","auto"],L=new RegExp("^"+g.join("|")),x=["\\(","\\)","=",">","<","==",">=","<=","\\+","-","\\!=","/","\\*","%","and","or","not",";","\\{","\\}",":"],c=p(x),d=/^::?[a-zA-Z_][\w\-]*/,w;function E(N){return!N.peek()||N.match(/\s+$/,!1)}function z(N,F){var D=N.peek();return D===")"?(N.next(),F.tokenizer=ee,"operator"):D==="("?(N.next(),N.eatSpace(),"operator"):D==="'"||D==='"'?(F.tokenizer=R(N.next()),"string"):(F.tokenizer=R(")",!1),"string")}function y(N,F){return function(D,Q){return D.sol()&&D.indentation()<=N?(Q.tokenizer=ee,ee(D,Q)):(F&&D.skipTo("*/")?(D.next(),D.next(),Q.tokenizer=ee):D.skipToEnd(),"comment")}}function R(N,F){F==null&&(F=!0);function D(Q,j){var V=Q.next(),_=Q.peek(),K=Q.string.charAt(Q.pos-2),X=V!=="\\"&&_===N||V===N&&K!=="\\";return X?(V!==N&&F&&Q.next(),E(Q)&&(j.cursorHalf=0),j.tokenizer=ee,"string"):V==="#"&&_==="{"?(j.tokenizer=M(D),Q.next(),"operator"):"string"}return D}function M(N){return function(F,D){return F.peek()==="}"?(F.next(),D.tokenizer=N,"operator"):ee(F,D)}}function H(N){if(N.indentCount==0){N.indentCount++;var F=N.scopes[0].offset,D=F+h.indentUnit;N.scopes.unshift({offset:D})}}function Z(N){N.scopes.length!=1&&N.scopes.shift()}function ee(N,F){var D=N.peek();if(N.match("/*"))return F.tokenizer=y(N.indentation(),!0),F.tokenizer(N,F);if(N.match("//"))return F.tokenizer=y(N.indentation(),!1),F.tokenizer(N,F);if(N.match("#{"))return F.tokenizer=M(ee),"operator";if(D==='"'||D==="'")return N.next(),F.tokenizer=R(D),"string";if(F.cursorHalf){if(D==="#"&&(N.next(),N.match(/[0-9a-fA-F]{6}|[0-9a-fA-F]{3}/))||N.match(/^-?[0-9\.]+/))return E(N)&&(F.cursorHalf=0),"number";if(N.match(/^(px|em|in)\b/))return E(N)&&(F.cursorHalf=0),"unit";if(N.match(L))return E(N)&&(F.cursorHalf=0),"keyword";if(N.match(/^url/)&&N.peek()==="(")return F.tokenizer=z,E(N)&&(F.cursorHalf=0),"atom";if(D==="$")return N.next(),N.eatWhile(/[\w-]/),E(N)&&(F.cursorHalf=0),"variable-2";if(D==="!")return N.next(),F.cursorHalf=0,N.match(/^[\w]+/)?"keyword":"operator";if(N.match(c))return E(N)&&(F.cursorHalf=0),"operator";if(N.eatWhile(/[\w-]/))return E(N)&&(F.cursorHalf=0),w=N.current().toLowerCase(),S.hasOwnProperty(w)?"atom":b.hasOwnProperty(w)?"keyword":C.hasOwnProperty(w)?(F.prevProp=N.current().toLowerCase(),"property"):"tag";if(E(N))return F.cursorHalf=0,null}else{if(D==="-"&&N.match(/^-\w+-/))return"meta";if(D==="."){if(N.next(),N.match(/^[\w-]+/))return H(F),"qualifier";if(N.peek()==="#")return H(F),"tag"}if(D==="#"){if(N.next(),N.match(/^[\w-]+/))return H(F),"builtin";if(N.peek()==="#")return H(F),"tag"}if(D==="$")return N.next(),N.eatWhile(/[\w-]/),"variable-2";if(N.match(/^-?[0-9\.]+/))return"number";if(N.match(/^(px|em|in)\b/))return"unit";if(N.match(L))return"keyword";if(N.match(/^url/)&&N.peek()==="(")return F.tokenizer=z,"atom";if(D==="="&&N.match(/^=[\w-]+/))return H(F),"meta";if(D==="+"&&N.match(/^\+[\w-]+/))return"variable-3";if(D==="@"&&N.match("@extend")&&(N.match(/\s*[\w]/)||Z(F)),N.match(/^@(else if|if|media|else|for|each|while|mixin|function)/))return H(F),"def";if(D==="@")return N.next(),N.eatWhile(/[\w-]/),"def";if(N.eatWhile(/[\w-]/))if(N.match(/ *: *[\w-\+\$#!\("']/,!1)){w=N.current().toLowerCase();var Q=F.prevProp+"-"+w;return C.hasOwnProperty(Q)?"property":C.hasOwnProperty(w)?(F.prevProp=w,"property"):s.hasOwnProperty(w)?"property":"tag"}else return N.match(/ *:/,!1)?(H(F),F.cursorHalf=1,F.prevProp=N.current().toLowerCase(),"property"):(N.match(/ *,/,!1)||H(F),"tag");if(D===":")return N.match(d)?"variable-3":(N.next(),F.cursorHalf=1,"operator")}return N.match(c)?"operator":(N.next(),null)}function re(N,F){N.sol()&&(F.indentCount=0);var D=F.tokenizer(N,F),Q=N.current();if((Q==="@return"||Q==="}")&&Z(F),D!==null){for(var j=N.pos-Q.length,V=j+h.indentUnit*F.indentCount,_=[],K=0;K{(function(o){typeof ju=="object"&&typeof Ru=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("shell",function(){var h={};function v(d,w){for(var E=0;E1&&d.eat("$");var E=d.next();return/['"({]/.test(E)?(w.tokens[0]=p(E,E=="("?"quote":E=="{"?"def":"string"),c(d,w)):(/\d/.test(E)||d.eatWhile(/\w/),w.tokens.shift(),"def")};function x(d){return function(w,E){return w.sol()&&w.string==d&&E.tokens.shift(),w.skipToEnd(),"string-2"}}function c(d,w){return(w.tokens[0]||s)(d,w)}return{startState:function(){return{tokens:[]}},token:function(d,w){return c(d,w)},closeBrackets:"()[]{}''\"\"``",lineComment:"#",fold:"brace"}}),o.defineMIME("text/x-sh","shell"),o.defineMIME("application/x-sh","shell")})});var Uu=Ke((Bu,Wu)=>{(function(o){typeof Bu=="object"&&typeof Wu=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("sql",function(g,L){var x=L.client||{},c=L.atoms||{false:!0,true:!0,null:!0},d=L.builtin||s(p),w=L.keywords||s(S),E=L.operatorChars||/^[*+\-%<>!=&|~^\/]/,z=L.support||{},y=L.hooks||{},R=L.dateSQL||{date:!0,time:!0,timestamp:!0},M=L.backslashStringEscapes!==!1,H=L.brackets||/^[\{}\(\)\[\]]/,Z=L.punctuation||/^[;.,:]/;function ee(Q,j){var V=Q.next();if(y[V]){var _=y[V](Q,j);if(_!==!1)return _}if(z.hexNumber&&(V=="0"&&Q.match(/^[xX][0-9a-fA-F]+/)||(V=="x"||V=="X")&&Q.match(/^'[0-9a-fA-F]*'/)))return"number";if(z.binaryNumber&&((V=="b"||V=="B")&&Q.match(/^'[01]*'/)||V=="0"&&Q.match(/^b[01]+/)))return"number";if(V.charCodeAt(0)>47&&V.charCodeAt(0)<58)return Q.match(/^[0-9]*(\.[0-9]+)?([eE][-+]?[0-9]+)?/),z.decimallessFloat&&Q.match(/^\.(?!\.)/),"number";if(V=="?"&&(Q.eatSpace()||Q.eol()||Q.eat(";")))return"variable-3";if(V=="'"||V=='"'&&z.doubleQuote)return j.tokenize=re(V),j.tokenize(Q,j);if((z.nCharCast&&(V=="n"||V=="N")||z.charsetCast&&V=="_"&&Q.match(/[a-z][a-z0-9]*/i))&&(Q.peek()=="'"||Q.peek()=='"'))return"keyword";if(z.escapeConstant&&(V=="e"||V=="E")&&(Q.peek()=="'"||Q.peek()=='"'&&z.doubleQuote))return j.tokenize=function(X,I){return(I.tokenize=re(X.next(),!0))(X,I)},"keyword";if(z.commentSlashSlash&&V=="/"&&Q.eat("/"))return Q.skipToEnd(),"comment";if(z.commentHash&&V=="#"||V=="-"&&Q.eat("-")&&(!z.commentSpaceRequired||Q.eat(" ")))return Q.skipToEnd(),"comment";if(V=="/"&&Q.eat("*"))return j.tokenize=N(1),j.tokenize(Q,j);if(V=="."){if(z.zerolessFloat&&Q.match(/^(?:\d+(?:e[+-]?\d+)?)/i))return"number";if(Q.match(/^\.+/))return null;if(Q.match(/^[\w\d_$#]+/))return"variable-2"}else{if(E.test(V))return Q.eatWhile(E),"operator";if(H.test(V))return"bracket";if(Z.test(V))return Q.eatWhile(Z),"punctuation";if(V=="{"&&(Q.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/)||Q.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/)))return"number";Q.eatWhile(/^[_\w\d]/);var K=Q.current().toLowerCase();return R.hasOwnProperty(K)&&(Q.match(/^( )+'[^']*'/)||Q.match(/^( )+"[^"]*"/))?"number":c.hasOwnProperty(K)?"atom":d.hasOwnProperty(K)?"type":w.hasOwnProperty(K)?"keyword":x.hasOwnProperty(K)?"builtin":null}}function re(Q,j){return function(V,_){for(var K=!1,X;(X=V.next())!=null;){if(X==Q&&!K){_.tokenize=ee;break}K=(M||j)&&!K&&X=="\\"}return"string"}}function N(Q){return function(j,V){var _=j.match(/^.*?(\/\*|\*\/)/);return _?_[1]=="/*"?V.tokenize=N(Q+1):Q>1?V.tokenize=N(Q-1):V.tokenize=ee:j.skipToEnd(),"comment"}}function F(Q,j,V){j.context={prev:j.context,indent:Q.indentation(),col:Q.column(),type:V}}function D(Q){Q.indent=Q.context.indent,Q.context=Q.context.prev}return{startState:function(){return{tokenize:ee,context:null}},token:function(Q,j){if(Q.sol()&&j.context&&j.context.align==null&&(j.context.align=!1),j.tokenize==ee&&Q.eatSpace())return null;var V=j.tokenize(Q,j);if(V=="comment")return V;j.context&&j.context.align==null&&(j.context.align=!0);var _=Q.current();return _=="("?F(Q,j,")"):_=="["?F(Q,j,"]"):j.context&&j.context.type==_&&D(j),V},indent:function(Q,j){var V=Q.context;if(!V)return o.Pass;var _=j.charAt(0)==V.type;return V.align?V.col+(_?0:1):V.indent+(_?0:g.indentUnit)},blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:z.commentSlashSlash?"//":z.commentHash?"#":"--",closeBrackets:"()[]{}''\"\"``",config:L}});function h(g){for(var L;(L=g.next())!=null;)if(L=="`"&&!g.eat("`"))return"variable-2";return g.backUp(g.current().length-1),g.eatWhile(/\w/)?"variable-2":null}function v(g){for(var L;(L=g.next())!=null;)if(L=='"'&&!g.eat('"'))return"variable-2";return g.backUp(g.current().length-1),g.eatWhile(/\w/)?"variable-2":null}function C(g){return g.eat("@")&&(g.match("session."),g.match("local."),g.match("global.")),g.eat("'")?(g.match(/^.*'/),"variable-2"):g.eat('"')?(g.match(/^.*"/),"variable-2"):g.eat("`")?(g.match(/^.*`/),"variable-2"):g.match(/^[0-9a-zA-Z$\.\_]+/)?"variable-2":null}function b(g){return g.eat("N")?"atom":g.match(/^[a-zA-Z.#!?]/)?"variable-2":null}var S="alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit ";function s(g){for(var L={},x=g.split(" "),c=0;c!=^\&|\/]/,brackets:/^[\{}\(\)]/,punctuation:/^[;.,:/]/,backslashStringEscapes:!1,dateSQL:s("date datetimeoffset datetime2 smalldatetime datetime time"),hooks:{"@":C}}),o.defineMIME("text/x-mysql",{name:"sql",client:s("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),keywords:s(S+"accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group group_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"),builtin:s("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"),atoms:s("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^]/,dateSQL:s("date time timestamp"),support:s("decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"),hooks:{"@":C,"`":h,"\\":b}}),o.defineMIME("text/x-mariadb",{name:"sql",client:s("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),keywords:s(S+"accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group group_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"),builtin:s("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"),atoms:s("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^]/,dateSQL:s("date time timestamp"),support:s("decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"),hooks:{"@":C,"`":h,"\\":b}}),o.defineMIME("text/x-sqlite",{name:"sql",client:s("auth backup bail binary changes check clone databases dbinfo dump echo eqp exit explain fullschema headers help import imposter indexes iotrace limit lint load log mode nullvalue once open output print prompt quit read restore save scanstats schema separator session shell show stats system tables testcase timeout timer trace vfsinfo vfslist vfsname width"),keywords:s(S+"abort action add after all analyze attach autoincrement before begin cascade case cast check collate column commit conflict constraint cross current_date current_time current_timestamp database default deferrable deferred detach each else end escape except exclusive exists explain fail for foreign full glob if ignore immediate index indexed initially inner instead intersect isnull key left limit match natural no notnull null of offset outer plan pragma primary query raise recursive references regexp reindex release rename replace restrict right rollback row savepoint temp temporary then to transaction trigger unique using vacuum view virtual when with without"),builtin:s("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text clob bigint int int2 int8 integer float double char varchar date datetime year unsigned signed numeric real"),atoms:s("null current_date current_time current_timestamp"),operatorChars:/^[*+\-%<>!=&|/~]/,dateSQL:s("date time timestamp datetime"),support:s("decimallessFloat zerolessFloat"),identifierQuote:'"',hooks:{"@":C,":":C,"?":C,$:C,'"':v,"`":h}}),o.defineMIME("text/x-cassandra",{name:"sql",client:{},keywords:s("add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime"),builtin:s("ascii bigint blob boolean counter decimal double float frozen inet int list map static text timestamp timeuuid tuple uuid varchar varint"),atoms:s("false true infinity NaN"),operatorChars:/^[<>=]/,dateSQL:{},support:s("commentSlashSlash decimallessFloat"),hooks:{}}),o.defineMIME("text/x-plsql",{name:"sql",client:s("appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap"),keywords:s("abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work"),builtin:s("abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least length lengthb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml"),operatorChars:/^[*\/+\-%<>!=~]/,dateSQL:s("date time timestamp"),support:s("doubleQuote nCharCast zerolessFloat binaryNumber hexNumber")}),o.defineMIME("text/x-hive",{name:"sql",keywords:s("select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with admin authorization char compact compactions conf cube current current_date current_timestamp day decimal defined dependency directories elem_type exchange file following for grouping hour ignore inner interval jar less logical macro minute month more none noscan over owner partialscan preceding pretty principals protection reload rewrite role roles rollup rows second server sets skewed transactions truncate unbounded unset uri user values window year"),builtin:s("bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype key_type utctimestamp value_type varchar"),atoms:s("false true null unknown"),operatorChars:/^[*+\-%<>!=]/,dateSQL:s("date timestamp"),support:s("doubleQuote binaryNumber hexNumber")}),o.defineMIME("text/x-pgsql",{name:"sql",client:s("source"),keywords:s(S+"a abort abs absent absolute access according action ada add admin after aggregate alias all allocate also alter always analyse analyze and any are array array_agg array_max_cardinality as asc asensitive assert assertion assignment asymmetric at atomic attach attribute attributes authorization avg backward base64 before begin begin_frame begin_partition bernoulli between bigint binary bit bit_length blob blocked bom boolean both breadth by c cache call called cardinality cascade cascaded case cast catalog catalog_name ceil ceiling chain char char_length character character_length character_set_catalog character_set_name character_set_schema characteristics characters check checkpoint class class_origin clob close cluster coalesce cobol collate collation collation_catalog collation_name collation_schema collect column column_name columns command_function command_function_code comment comments commit committed concurrently condition condition_number configuration conflict connect connection connection_name constant constraint constraint_catalog constraint_name constraint_schema constraints constructor contains content continue control conversion convert copy corr corresponding cost count covar_pop covar_samp create cross csv cube cume_dist current current_catalog current_date current_default_transform_group current_path current_role current_row current_schema current_time current_timestamp current_transform_group_for_type current_user cursor cursor_name cycle data database datalink datatype date datetime_interval_code datetime_interval_precision day db deallocate debug dec decimal declare default defaults deferrable deferred defined definer degree delete delimiter delimiters dense_rank depends depth deref derived desc describe descriptor detach detail deterministic diagnostics dictionary disable discard disconnect dispatch distinct dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue do document domain double drop dump dynamic dynamic_function dynamic_function_code each element else elseif elsif empty enable encoding encrypted end end_frame end_partition endexec enforced enum equals errcode error escape event every except exception exclude excluding exclusive exec execute exists exit exp explain expression extension external extract false family fetch file filter final first first_value flag float floor following for force foreach foreign fortran forward found frame_row free freeze from fs full function functions fusion g general generated get global go goto grant granted greatest group grouping groups handler having header hex hierarchy hint hold hour id identity if ignore ilike immediate immediately immutable implementation implicit import in include including increment indent index indexes indicator info inherit inherits initially inline inner inout input insensitive insert instance instantiable instead int integer integrity intersect intersection interval into invoker is isnull isolation join k key key_member key_type label lag language large last last_value lateral lead leading leakproof least left length level library like like_regex limit link listen ln load local localtime localtimestamp location locator lock locked log logged loop lower m map mapping match matched materialized max max_cardinality maxvalue member merge message message_length message_octet_length message_text method min minute minvalue mod mode modifies module month more move multiset mumps name names namespace national natural nchar nclob nesting new next nfc nfd nfkc nfkd nil no none normalize normalized not nothing notice notify notnull nowait nth_value ntile null nullable nullif nulls number numeric object occurrences_regex octet_length octets of off offset oids old on only open operator option options or order ordering ordinality others out outer output over overlaps overlay overriding owned owner p pad parallel parameter parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partial partition pascal passing passthrough password path percent percent_rank percentile_cont percentile_disc perform period permission pg_context pg_datatype_name pg_exception_context pg_exception_detail pg_exception_hint placing plans pli policy portion position position_regex power precedes preceding precision prepare prepared preserve primary print_strict_params prior privileges procedural procedure procedures program public publication query quote raise range rank read reads real reassign recheck recovery recursive ref references referencing refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex relative release rename repeatable replace replica requiring reset respect restart restore restrict result result_oid return returned_cardinality returned_length returned_octet_length returned_sqlstate returning returns reverse revoke right role rollback rollup routine routine_catalog routine_name routine_schema routines row row_count row_number rows rowtype rule savepoint scale schema schema_name schemas scope scope_catalog scope_name scope_schema scroll search second section security select selective self sensitive sequence sequences serializable server server_name session session_user set setof sets share show similar simple size skip slice smallint snapshot some source space specific specific_name specifictype sql sqlcode sqlerror sqlexception sqlstate sqlwarning sqrt stable stacked standalone start state statement static statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset subscription substring substring_regex succeeds sum symmetric sysid system system_time system_user t table table_name tables tablesample tablespace temp template temporary text then ties time timestamp timezone_hour timezone_minute to token top_level_count trailing transaction transaction_active transactions_committed transactions_rolled_back transform transforms translate translate_regex translation treat trigger trigger_catalog trigger_name trigger_schema trim trim_array true truncate trusted type types uescape unbounded uncommitted under unencrypted union unique unknown unlink unlisten unlogged unnamed unnest until untyped update upper uri usage use_column use_variable user user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema using vacuum valid validate validator value value_of values var_pop var_samp varbinary varchar variable_conflict variadic varying verbose version versioning view views volatile warning when whenever where while whitespace width_bucket window with within without work wrapper write xml xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate year yes zone"),builtin:s("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time zone timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"),atoms:s("false true null unknown"),operatorChars:/^[*\/+\-%<>!=&|^\/#@?~]/,backslashStringEscapes:!1,dateSQL:s("date time timestamp"),support:s("decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast escapeConstant")}),o.defineMIME("text/x-gql",{name:"sql",keywords:s("ancestor and asc by contains desc descendant distinct from group has in is limit offset on order select superset where"),atoms:s("false true"),builtin:s("blob datetime first key __key__ string integer double boolean null"),operatorChars:/^[*+\-%<>!=]/}),o.defineMIME("text/x-gpsql",{name:"sql",client:s("source"),keywords:s("abort absolute access action active add admin after aggregate all also alter always analyse analyze and any array as asc assertion assignment asymmetric at authorization backward before begin between bigint binary bit boolean both by cache called cascade cascaded case cast chain char character characteristics check checkpoint class close cluster coalesce codegen collate column comment commit committed concurrency concurrently configuration connection constraint constraints contains content continue conversion copy cost cpu_rate_limit create createdb createexttable createrole createuser cross csv cube current current_catalog current_date current_role current_schema current_time current_timestamp current_user cursor cycle data database day deallocate dec decimal declare decode default defaults deferrable deferred definer delete delimiter delimiters deny desc dictionary disable discard distinct distributed do document domain double drop dxl each else enable encoding encrypted end enum errors escape every except exchange exclude excluding exclusive execute exists explain extension external extract false family fetch fields filespace fill filter first float following for force foreign format forward freeze from full function global grant granted greatest group group_id grouping handler hash having header hold host hour identity if ignore ilike immediate immutable implicit in including inclusive increment index indexes inherit inherits initially inline inner inout input insensitive insert instead int integer intersect interval into invoker is isnull isolation join key language large last leading least left level like limit list listen load local localtime localtimestamp location lock log login mapping master match maxvalue median merge minute minvalue missing mode modifies modify month move name names national natural nchar new newline next no nocreatedb nocreateexttable nocreaterole nocreateuser noinherit nologin none noovercommit nosuperuser not nothing notify notnull nowait null nullif nulls numeric object of off offset oids old on only operator option options or order ordered others out outer over overcommit overlaps overlay owned owner parser partial partition partitions passing password percent percentile_cont percentile_disc placing plans position preceding precision prepare prepared preserve primary prior privileges procedural procedure protocol queue quote randomly range read readable reads real reassign recheck recursive ref references reindex reject relative release rename repeatable replace replica reset resource restart restrict returning returns revoke right role rollback rollup rootpartition row rows rule savepoint scatter schema scroll search second security segment select sequence serializable session session_user set setof sets share show similar simple smallint some split sql stable standalone start statement statistics stdin stdout storage strict strip subpartition subpartitions substring superuser symmetric sysid system table tablespace temp template temporary text then threshold ties time timestamp to trailing transaction treat trigger trim true truncate trusted type unbounded uncommitted unencrypted union unique unknown unlisten until update user using vacuum valid validation validator value values varchar variadic varying verbose version view volatile web when where whitespace window with within without work writable write xml xmlattributes xmlconcat xmlelement xmlexists xmlforest xmlparse xmlpi xmlroot xmlserialize year yes zone"),builtin:s("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"),atoms:s("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^\/#@?~]/,dateSQL:s("date time timestamp"),support:s("decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast")}),o.defineMIME("text/x-sparksql",{name:"sql",keywords:s("add after all alter analyze and anti archive array as asc at between bucket buckets by cache cascade case cast change clear cluster clustered codegen collection column columns comment commit compact compactions compute concatenate cost create cross cube current current_date current_timestamp database databases data dbproperties defined delete delimited deny desc describe dfs directories distinct distribute drop else end escaped except exchange exists explain export extended external false fields fileformat first following for format formatted from full function functions global grant group grouping having if ignore import in index indexes inner inpath inputformat insert intersect interval into is items join keys last lateral lazy left like limit lines list load local location lock locks logical macro map minus msck natural no not null nulls of on optimize option options or order out outer outputformat over overwrite partition partitioned partitions percent preceding principals purge range recordreader recordwriter recover reduce refresh regexp rename repair replace reset restrict revoke right rlike role roles rollback rollup row rows schema schemas select semi separated serde serdeproperties set sets show skewed sort sorted start statistics stored stratify struct table tables tablesample tblproperties temp temporary terminated then to touch transaction transactions transform true truncate unarchive unbounded uncache union unlock unset use using values view when where window with"),builtin:s("abs acos acosh add_months aggregate and any approx_count_distinct approx_percentile array array_contains array_distinct array_except array_intersect array_join array_max array_min array_position array_remove array_repeat array_sort array_union arrays_overlap arrays_zip ascii asin asinh assert_true atan atan2 atanh avg base64 between bigint bin binary bit_and bit_count bit_get bit_length bit_or bit_xor bool_and bool_or boolean bround btrim cardinality case cast cbrt ceil ceiling char char_length character_length chr coalesce collect_list collect_set concat concat_ws conv corr cos cosh cot count count_if count_min_sketch covar_pop covar_samp crc32 cume_dist current_catalog current_database current_date current_timestamp current_timezone current_user date date_add date_format date_from_unix_date date_part date_sub date_trunc datediff day dayofmonth dayofweek dayofyear decimal decode degrees delimited dense_rank div double e element_at elt encode every exists exp explode explode_outer expm1 extract factorial filter find_in_set first first_value flatten float floor forall format_number format_string from_csv from_json from_unixtime from_utc_timestamp get_json_object getbit greatest grouping grouping_id hash hex hour hypot if ifnull in initcap inline inline_outer input_file_block_length input_file_block_start input_file_name inputformat instr int isnan isnotnull isnull java_method json_array_length json_object_keys json_tuple kurtosis lag last last_day last_value lcase lead least left length levenshtein like ln locate log log10 log1p log2 lower lpad ltrim make_date make_dt_interval make_interval make_timestamp make_ym_interval map map_concat map_entries map_filter map_from_arrays map_from_entries map_keys map_values map_zip_with max max_by md5 mean min min_by minute mod monotonically_increasing_id month months_between named_struct nanvl negative next_day not now nth_value ntile nullif nvl nvl2 octet_length or outputformat overlay parse_url percent_rank percentile percentile_approx pi pmod posexplode posexplode_outer position positive pow power printf quarter radians raise_error rand randn random rank rcfile reflect regexp regexp_extract regexp_extract_all regexp_like regexp_replace repeat replace reverse right rint rlike round row_number rpad rtrim schema_of_csv schema_of_json second sentences sequence sequencefile serde session_window sha sha1 sha2 shiftleft shiftright shiftrightunsigned shuffle sign signum sin sinh size skewness slice smallint some sort_array soundex space spark_partition_id split sqrt stack std stddev stddev_pop stddev_samp str_to_map string struct substr substring substring_index sum tan tanh textfile timestamp timestamp_micros timestamp_millis timestamp_seconds tinyint to_csv to_date to_json to_timestamp to_unix_timestamp to_utc_timestamp transform transform_keys transform_values translate trim trunc try_add try_divide typeof ucase unbase64 unhex uniontype unix_date unix_micros unix_millis unix_seconds unix_timestamp upper uuid var_pop var_samp variance version weekday weekofyear when width_bucket window xpath xpath_boolean xpath_double xpath_float xpath_int xpath_long xpath_number xpath_short xpath_string xxhash64 year zip_with"),atoms:s("false true null"),operatorChars:/^[*\/+\-%<>!=~&|^]/,dateSQL:s("date time timestamp"),support:s("doubleQuote zerolessFloat")}),o.defineMIME("text/x-esper",{name:"sql",client:s("source"),keywords:s("alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit after all and as at asc avedev avg between by case cast coalesce count create current_timestamp day days delete define desc distinct else end escape events every exists false first from full group having hour hours in inner insert instanceof into irstream is istream join last lastweekday left limit like max match_recognize matches median measures metadatasql min minute minutes msec millisecond milliseconds not null offset on or order outer output partition pattern prev prior regexp retain-union retain-intersection right rstream sec second seconds select set some snapshot sql stddev sum then true unidirectional until update variable weekday when where window"),builtin:{},atoms:s("false true null"),operatorChars:/^[*+\-%<>!=&|^\/#@?~]/,dateSQL:s("time"),support:s("decimallessFloat zerolessFloat binaryNumber hexNumber")}),o.defineMIME("text/x-trino",{name:"sql",keywords:s("abs absent acos add admin after all all_match alter analyze and any any_match approx_distinct approx_most_frequent approx_percentile approx_set arbitrary array_agg array_distinct array_except array_intersect array_join array_max array_min array_position array_remove array_sort array_union arrays_overlap as asc asin at at_timezone atan atan2 authorization avg bar bernoulli beta_cdf between bing_tile bing_tile_at bing_tile_coordinates bing_tile_polygon bing_tile_quadkey bing_tile_zoom_level bing_tiles_around bit_count bitwise_and bitwise_and_agg bitwise_left_shift bitwise_not bitwise_or bitwise_or_agg bitwise_right_shift bitwise_right_shift_arithmetic bitwise_xor bool_and bool_or both by call cardinality cascade case cast catalogs cbrt ceil ceiling char2hexint checksum chr classify coalesce codepoint column columns combinations comment commit committed concat concat_ws conditional constraint contains contains_sequence convex_hull_agg copartition corr cos cosh cosine_similarity count count_if covar_pop covar_samp crc32 create cross cube cume_dist current current_catalog current_date current_groups current_path current_role current_schema current_time current_timestamp current_timezone current_user data date_add date_diff date_format date_parse date_trunc day day_of_month day_of_week day_of_year deallocate default define definer degrees delete dense_rank deny desc describe descriptor distinct distributed dow doy drop e element_at else empty empty_approx_set encoding end error escape evaluate_classifier_predictions every except excluding execute exists exp explain extract false features fetch filter final first first_value flatten floor following for format format_datetime format_number from from_base from_base32 from_base64 from_base64url from_big_endian_32 from_big_endian_64 from_encoded_polyline from_geojson_geometry from_hex from_ieee754_32 from_ieee754_64 from_iso8601_date from_iso8601_timestamp from_iso8601_timestamp_nanos from_unixtime from_unixtime_nanos from_utf8 full functions geometric_mean geometry_from_hadoop_shape geometry_invalid_reason geometry_nearest_points geometry_to_bing_tiles geometry_union geometry_union_agg grant granted grants graphviz great_circle_distance greatest group grouping groups hamming_distance hash_counts having histogram hmac_md5 hmac_sha1 hmac_sha256 hmac_sha512 hour human_readable_seconds if ignore in including index infinity initial inner input insert intersect intersection_cardinality into inverse_beta_cdf inverse_normal_cdf invoker io is is_finite is_infinite is_json_scalar is_nan isolation jaccard_index join json_array json_array_contains json_array_get json_array_length json_exists json_extract json_extract_scalar json_format json_object json_parse json_query json_size json_value keep key keys kurtosis lag last last_day_of_month last_value lateral lead leading learn_classifier learn_libsvm_classifier learn_libsvm_regressor learn_regressor least left length level levenshtein_distance like limit line_interpolate_point line_interpolate_points line_locate_point listagg ln local localtime localtimestamp log log10 log2 logical lower lpad ltrim luhn_check make_set_digest map_agg map_concat map_entries map_filter map_from_entries map_keys map_union map_values map_zip_with match match_recognize matched matches materialized max max_by md5 measures merge merge_set_digest millisecond min min_by minute mod month multimap_agg multimap_from_entries murmur3 nan natural next nfc nfd nfkc nfkd ngrams no none none_match normal_cdf normalize not now nth_value ntile null nullif nulls numeric_histogram object objectid_timestamp of offset omit on one only option or order ordinality outer output over overflow parse_data_size parse_datetime parse_duration partition partitions passing past path pattern per percent_rank permute pi position pow power preceding prepare privileges properties prune qdigest_agg quarter quotes radians rand random range rank read recursive reduce reduce_agg refresh regexp_count regexp_extract regexp_extract_all regexp_like regexp_position regexp_replace regexp_split regr_intercept regr_slope regress rename render repeat repeatable replace reset respect restrict returning reverse revoke rgb right role roles rollback rollup round row_number rows rpad rtrim running scalar schema schemas second security seek select sequence serializable session set sets sha1 sha256 sha512 show shuffle sign simplify_geometry sin skewness skip slice some soundex spatial_partitioning spatial_partitions split split_part split_to_map split_to_multimap spooky_hash_v2_32 spooky_hash_v2_64 sqrt st_area st_asbinary st_astext st_boundary st_buffer st_centroid st_contains st_convexhull st_coorddim st_crosses st_difference st_dimension st_disjoint st_distance st_endpoint st_envelope st_envelopeaspts st_equals st_exteriorring st_geometries st_geometryfromtext st_geometryn st_geometrytype st_geomfrombinary st_interiorringn st_interiorrings st_intersection st_intersects st_isclosed st_isempty st_isring st_issimple st_isvalid st_length st_linefromtext st_linestring st_multipoint st_numgeometries st_numinteriorring st_numpoints st_overlaps st_point st_pointn st_points st_polygon st_relate st_startpoint st_symdifference st_touches st_union st_within st_x st_xmax st_xmin st_y st_ymax st_ymin start starts_with stats stddev stddev_pop stddev_samp string strpos subset substr substring sum system table tables tablesample tan tanh tdigest_agg text then ties timestamp_objectid timezone_hour timezone_minute to to_base to_base32 to_base64 to_base64url to_big_endian_32 to_big_endian_64 to_char to_date to_encoded_polyline to_geojson_geometry to_geometry to_hex to_ieee754_32 to_ieee754_64 to_iso8601 to_milliseconds to_spherical_geography to_timestamp to_unixtime to_utf8 trailing transaction transform transform_keys transform_values translate trim trim_array true truncate try try_cast type typeof uescape unbounded uncommitted unconditional union unique unknown unmatched unnest update upper url_decode url_encode url_extract_fragment url_extract_host url_extract_parameter url_extract_path url_extract_port url_extract_protocol url_extract_query use user using utf16 utf32 utf8 validate value value_at_quantile values values_at_quantiles var_pop var_samp variance verbose version view week week_of_year when where width_bucket wilson_interval_lower wilson_interval_upper window with with_timezone within without word_stem work wrapper write xxhash64 year year_of_week yow zip zip_with"),builtin:s("array bigint bingtile boolean char codepoints color date decimal double function geometry hyperloglog int integer interval ipaddress joniregexp json json2016 jsonpath kdbtree likepattern map model objectid p4hyperloglog precision qdigest re2jregexp real regressor row setdigest smallint sphericalgeography tdigest time timestamp tinyint uuid varbinary varchar zone"),atoms:s("false true null unknown"),operatorChars:/^[[\]|<>=!\-+*/%]/,dateSQL:s("date time timestamp zone"),support:s("decimallessFloat zerolessFloat hexNumber")})})});var ta=Ke(($u,Ku)=>{(function(o){typeof $u=="object"&&typeof Ku=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("stylus",function(M){for(var H=M.indentUnit,Z="",ee=y(h),re=/^(a|b|i|s|col|em)$/i,N=y(S),F=y(s),D=y(L),Q=y(g),j=y(v),V=z(v),_=y(b),K=y(C),X=y(p),I=/^\s*([.]{2,3}|&&|\|\||\*\*|[?!=:]?=|[-+*\/%<>]=?|\?:|\~)/,B=z(x),le=y(c),xe=new RegExp(/^\-(moz|ms|o|webkit)-/i),q=y(d),T="",de={},ze,pe,Ee,ge;Z.length|~|\/)?\s*[\w-]*([a-z0-9-]|\*|\/\*)(\(|,)?)/),W.context.line.firstWord=T?T[0].replace(/^\s*/,""):"",W.context.line.indent=$.indentation(),ze=$.peek(),$.match("//"))return $.skipToEnd(),["comment","comment"];if($.match("/*"))return W.tokenize=qe,qe($,W);if(ze=='"'||ze=="'")return $.next(),W.tokenize=Se(ze),W.tokenize($,W);if(ze=="@")return $.next(),$.eatWhile(/[\w\\-]/),["def",$.current()];if(ze=="#"){if($.next(),$.match(/^[0-9a-f]{3}([0-9a-f]([0-9a-f]{2}){0,2})?\b(?!-)/i))return["atom","atom"];if($.match(/^[a-z][\w-]*/i))return["builtin","hash"]}return $.match(xe)?["meta","vendor-prefixes"]:$.match(/^-?[0-9]?\.?[0-9]/)?($.eatWhile(/[a-z%]/i),["number","unit"]):ze=="!"?($.next(),[$.match(/^(important|optional)/i)?"keyword":"operator","important"]):ze=="."&&$.match(/^\.[a-z][\w-]*/i)?["qualifier","qualifier"]:$.match(V)?($.peek()=="("&&(W.tokenize=je),["property","word"]):$.match(/^[a-z][\w-]*\(/i)?($.backUp(1),["keyword","mixin"]):$.match(/^(\+|-)[a-z][\w-]*\(/i)?($.backUp(1),["keyword","block-mixin"]):$.string.match(/^\s*&/)&&$.match(/^[-_]+[a-z][\w-]*/)?["qualifier","qualifier"]:$.match(/^(\/|&)(-|_|:|\.|#|[a-z])/)?($.backUp(1),["variable-3","reference"]):$.match(/^&{1}\s*$/)?["variable-3","reference"]:$.match(B)?["operator","operator"]:$.match(/^\$?[-_]*[a-z0-9]+[\w-]*/i)?$.match(/^(\.|\[)[\w-\'\"\]]+/i,!1)&&!U($.current())?($.match("."),["variable-2","variable-name"]):["variable-2","word"]:$.match(I)?["operator",$.current()]:/[:;,{}\[\]\(\)]/.test(ze)?($.next(),[null,ze]):($.next(),[null,null])}function qe($,W){for(var se=!1,De;(De=$.next())!=null;){if(se&&De=="/"){W.tokenize=null;break}se=De=="*"}return["comment","comment"]}function Se($){return function(W,se){for(var De=!1,nt;(nt=W.next())!=null;){if(nt==$&&!De){$==")"&&W.backUp(1);break}De=!De&&nt=="\\"}return(nt==$||!De&&$!=")")&&(se.tokenize=null),["string","string"]}}function je($,W){return $.next(),$.match(/\s*[\"\')]/,!1)?W.tokenize=null:W.tokenize=Se(")"),[null,"("]}function Ze($,W,se,De){this.type=$,this.indent=W,this.prev=se,this.line=De||{firstWord:"",indent:0}}function ke($,W,se,De){return De=De>=0?De:H,$.context=new Ze(se,W.indentation()+De,$.context),se}function Je($,W){var se=$.context.indent-H;return W=W||!1,$.context=$.context.prev,W&&($.context.indent=se),$.context.type}function He($,W,se){return de[se.context.type]($,W,se)}function Ge($,W,se,De){for(var nt=De||1;nt>0;nt--)se.context=se.context.prev;return He($,W,se)}function U($){return $.toLowerCase()in ee}function G($){return $=$.toLowerCase(),$ in N||$ in X}function ce($){return $.toLowerCase()in le}function Be($){return $.toLowerCase().match(xe)}function te($){var W=$.toLowerCase(),se="variable-2";return U($)?se="tag":ce($)?se="block-keyword":G($)?se="property":W in D||W in q?se="atom":W=="return"||W in Q?se="keyword":$.match(/^[A-Z]/)&&(se="string"),se}function fe($,W){return Me(W)&&($=="{"||$=="]"||$=="hash"||$=="qualifier")||$=="block-mixin"}function oe($,W){return $=="{"&&W.match(/^\s*\$?[\w-]+/i,!1)}function Ue($,W){return $==":"&&W.match(/^[a-z-]+/,!1)}function we($){return $.sol()||$.string.match(new RegExp("^\\s*"+R($.current())))}function Me($){return $.eol()||$.match(/^\s*$/,!1)}function Le($){var W=/^\s*[-_]*[a-z0-9]+[\w-]*/i,se=typeof $=="string"?$.match(W):$.string.match(W);return se?se[0].replace(/^\s*/,""):""}return de.block=function($,W,se){if($=="comment"&&we(W)||$==","&&Me(W)||$=="mixin")return ke(se,W,"block",0);if(oe($,W))return ke(se,W,"interpolation");if(Me(W)&&$=="]"&&!/^\s*(\.|#|:|\[|\*|&)/.test(W.string)&&!U(Le(W)))return ke(se,W,"block",0);if(fe($,W))return ke(se,W,"block");if($=="}"&&Me(W))return ke(se,W,"block",0);if($=="variable-name")return W.string.match(/^\s?\$[\w-\.\[\]\'\"]+$/)||ce(Le(W))?ke(se,W,"variableName"):ke(se,W,"variableName",0);if($=="=")return!Me(W)&&!ce(Le(W))?ke(se,W,"block",0):ke(se,W,"block");if($=="*"&&(Me(W)||W.match(/\s*(,|\.|#|\[|:|{)/,!1)))return ge="tag",ke(se,W,"block");if(Ue($,W))return ke(se,W,"pseudo");if(/@(font-face|media|supports|(-moz-)?document)/.test($))return ke(se,W,Me(W)?"block":"atBlock");if(/@(-(moz|ms|o|webkit)-)?keyframes$/.test($))return ke(se,W,"keyframes");if(/@extends?/.test($))return ke(se,W,"extend",0);if($&&$.charAt(0)=="@")return W.indentation()>0&&G(W.current().slice(1))?(ge="variable-2","block"):/(@import|@require|@charset)/.test($)?ke(se,W,"block",0):ke(se,W,"block");if($=="reference"&&Me(W))return ke(se,W,"block");if($=="(")return ke(se,W,"parens");if($=="vendor-prefixes")return ke(se,W,"vendorPrefixes");if($=="word"){var De=W.current();if(ge=te(De),ge=="property")return we(W)?ke(se,W,"block",0):(ge="atom","block");if(ge=="tag"){if(/embed|menu|pre|progress|sub|table/.test(De)&&G(Le(W))||W.string.match(new RegExp("\\[\\s*"+De+"|"+De+"\\s*\\]")))return ge="atom","block";if(re.test(De)&&(we(W)&&W.string.match(/=/)||!we(W)&&!W.string.match(/^(\s*\.|#|\&|\[|\/|>|\*)/)&&!U(Le(W))))return ge="variable-2",ce(Le(W))?"block":ke(se,W,"block",0);if(Me(W))return ke(se,W,"block")}if(ge=="block-keyword")return ge="keyword",W.current(/(if|unless)/)&&!we(W)?"block":ke(se,W,"block");if(De=="return")return ke(se,W,"block",0);if(ge=="variable-2"&&W.string.match(/^\s?\$[\w-\.\[\]\'\"]+$/))return ke(se,W,"block")}return se.context.type},de.parens=function($,W,se){if($=="(")return ke(se,W,"parens");if($==")")return se.context.prev.type=="parens"?Je(se):W.string.match(/^[a-z][\w-]*\(/i)&&Me(W)||ce(Le(W))||/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(Le(W))||!W.string.match(/^-?[a-z][\w-\.\[\]\'\"]*\s*=/)&&U(Le(W))?ke(se,W,"block"):W.string.match(/^[\$-]?[a-z][\w-\.\[\]\'\"]*\s*=/)||W.string.match(/^\s*(\(|\)|[0-9])/)||W.string.match(/^\s+[a-z][\w-]*\(/i)||W.string.match(/^\s+[\$-]?[a-z]/i)?ke(se,W,"block",0):Me(W)?ke(se,W,"block"):ke(se,W,"block",0);if($&&$.charAt(0)=="@"&&G(W.current().slice(1))&&(ge="variable-2"),$=="word"){var De=W.current();ge=te(De),ge=="tag"&&re.test(De)&&(ge="variable-2"),(ge=="property"||De=="to")&&(ge="atom")}return $=="variable-name"?ke(se,W,"variableName"):Ue($,W)?ke(se,W,"pseudo"):se.context.type},de.vendorPrefixes=function($,W,se){return $=="word"?(ge="property",ke(se,W,"block",0)):Je(se)},de.pseudo=function($,W,se){return G(Le(W.string))?Ge($,W,se):(W.match(/^[a-z-]+/),ge="variable-3",Me(W)?ke(se,W,"block"):Je(se))},de.atBlock=function($,W,se){if($=="(")return ke(se,W,"atBlock_parens");if(fe($,W))return ke(se,W,"block");if(oe($,W))return ke(se,W,"interpolation");if($=="word"){var De=W.current().toLowerCase();if(/^(only|not|and|or)$/.test(De)?ge="keyword":j.hasOwnProperty(De)?ge="tag":K.hasOwnProperty(De)?ge="attribute":_.hasOwnProperty(De)?ge="property":F.hasOwnProperty(De)?ge="string-2":ge=te(W.current()),ge=="tag"&&Me(W))return ke(se,W,"block")}return $=="operator"&&/^(not|and|or)$/.test(W.current())&&(ge="keyword"),se.context.type},de.atBlock_parens=function($,W,se){if($=="{"||$=="}")return se.context.type;if($==")")return Me(W)?ke(se,W,"block"):ke(se,W,"atBlock");if($=="word"){var De=W.current().toLowerCase();return ge=te(De),/^(max|min)/.test(De)&&(ge="property"),ge=="tag"&&(re.test(De)?ge="variable-2":ge="atom"),se.context.type}return de.atBlock($,W,se)},de.keyframes=function($,W,se){return W.indentation()=="0"&&($=="}"&&we(W)||$=="]"||$=="hash"||$=="qualifier"||U(W.current()))?Ge($,W,se):$=="{"?ke(se,W,"keyframes"):$=="}"?we(W)?Je(se,!0):ke(se,W,"keyframes"):$=="unit"&&/^[0-9]+\%$/.test(W.current())?ke(se,W,"keyframes"):$=="word"&&(ge=te(W.current()),ge=="block-keyword")?(ge="keyword",ke(se,W,"keyframes")):/@(font-face|media|supports|(-moz-)?document)/.test($)?ke(se,W,Me(W)?"block":"atBlock"):$=="mixin"?ke(se,W,"block",0):se.context.type},de.interpolation=function($,W,se){return $=="{"&&Je(se)&&ke(se,W,"block"),$=="}"?W.string.match(/^\s*(\.|#|:|\[|\*|&|>|~|\+|\/)/i)||W.string.match(/^\s*[a-z]/i)&&U(Le(W))?ke(se,W,"block"):!W.string.match(/^(\{|\s*\&)/)||W.match(/\s*[\w-]/,!1)?ke(se,W,"block",0):ke(se,W,"block"):$=="variable-name"?ke(se,W,"variableName",0):($=="word"&&(ge=te(W.current()),ge=="tag"&&(ge="atom")),se.context.type)},de.extend=function($,W,se){return $=="["||$=="="?"extend":$=="]"?Je(se):$=="word"?(ge=te(W.current()),"extend"):Je(se)},de.variableName=function($,W,se){return $=="string"||$=="["||$=="]"||W.current().match(/^(\.|\$)/)?(W.current().match(/^\.[\w-]+/i)&&(ge="variable-2"),"variableName"):Ge($,W,se)},{startState:function($){return{tokenize:null,state:"block",context:new Ze("block",$||0,null)}},token:function($,W){return!W.tokenize&&$.eatSpace()?null:(pe=(W.tokenize||Oe)($,W),pe&&typeof pe=="object"&&(Ee=pe[1],pe=pe[0]),ge=pe,W.state=de[W.state](Ee,$,W),ge)},indent:function($,W,se){var De=$.context,nt=W&&W.charAt(0),dt=De.indent,Pt=Le(W),It=se.match(/^\s*/)[0].replace(/\t/g,Z).length,Pe=$.context.prev?$.context.prev.line.firstWord:"",xt=$.context.prev?$.context.prev.line.indent:It;return De.prev&&(nt=="}"&&(De.type=="block"||De.type=="atBlock"||De.type=="keyframes")||nt==")"&&(De.type=="parens"||De.type=="atBlock_parens")||nt=="{"&&De.type=="at")?dt=De.indent-H:/(\})/.test(nt)||(/@|\$|\d/.test(nt)||/^\{/.test(W)||/^\s*\/(\/|\*)/.test(W)||/^\s*\/\*/.test(Pe)||/^\s*[\w-\.\[\]\'\"]+\s*(\?|:|\+)?=/i.test(W)||/^(\+|-)?[a-z][\w-]*\(/i.test(W)||/^return/.test(W)||ce(Pt)?dt=It:/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(nt)||U(Pt)?/\,\s*$/.test(Pe)?dt=xt:/^\s+/.test(se)&&(/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(Pe)||U(Pe))?dt=It<=xt?xt:xt+H:dt=It:!/,\s*$/.test(se)&&(Be(Pt)||G(Pt))&&(ce(Pe)?dt=It<=xt?xt:xt+H:/^\{/.test(Pe)?dt=It<=xt?It:xt+H:Be(Pe)||G(Pe)?dt=It>=xt?xt:It:/^(\.|#|:|\[|\*|&|@|\+|\-|>|~|\/)/.test(Pe)||/=\s*$/.test(Pe)||U(Pe)||/^\$[\w-\.\[\]\'\"]/.test(Pe)?dt=xt+H:dt=It)),dt},electricChars:"}",blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:" * ",lineComment:"//",fold:"indent"}});var h=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","bgsound","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","nobr","noframes","noscript","object","ol","optgroup","option","output","p","param","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","track","u","ul","var","video"],v=["domain","regexp","url-prefix","url"],C=["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"],b=["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio","max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid","dynamic-range","video-dynamic-range"],S=["align-content","align-items","align-self","alignment-adjust","alignment-baseline","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","azimuth","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","binding","bleed","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align","drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","flow-from","flow-into","font","font-feature-settings","font-family","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-weight","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-position","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","justify-content","left","letter-spacing","line-break","line-height","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marker-offset","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","max-height","max-width","min-height","min-width","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","play-during","position","presentation-level","punctuation-trim","quotes","region-break-after","region-break-before","region-break-inside","region-fragment","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotation","rotation-point","ruby-align","ruby-overhang","ruby-position","ruby-span","shape-image-threshold","shape-inside","shape-margin","shape-outside","size","speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-outline","text-overflow","text-shadow","text-size-adjust","text-space-collapse","text-transform","text-underline-position","text-wrap","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","z-index","clip-path","clip-rule","mask","enable-background","filter","flood-color","flood-opacity","lighting-color","stop-color","stop-opacity","pointer-events","color-interpolation","color-interpolation-filters","color-rendering","fill","fill-opacity","fill-rule","image-rendering","marker","marker-end","marker-mid","marker-start","shape-rendering","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-rendering","baseline-shift","dominant-baseline","glyph-orientation-horizontal","glyph-orientation-vertical","text-anchor","writing-mode","font-smoothing","osx-font-smoothing"],s=["scrollbar-arrow-color","scrollbar-base-color","scrollbar-dark-shadow-color","scrollbar-face-color","scrollbar-highlight-color","scrollbar-shadow-color","scrollbar-3d-light-color","scrollbar-track-color","shape-inside","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","zoom"],p=["font-family","src","unicode-range","font-variant","font-feature-settings","font-stretch","font-weight","font-style"],g=["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"],L=["above","absolute","activeborder","additive","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","attr","auto","avoid","avoid-column","avoid-page","avoid-region","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","buttonface","buttonhighlight","buttonshadow","buttontext","calc","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","column","compact","condensed","conic-gradient","contain","content","contents","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","dashed","decimal","decimal-leading-zero","default","default-button","destination-atop","destination-in","destination-out","destination-over","devanagari","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er","ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ethiopic-numeric","ew-resize","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fixed","flat","flex","footnotes","forwards","from","geometricPrecision","georgian","graytext","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hebrew","help","hidden","hide","high","higher","highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-table","inset","inside","intrinsic","invert","italic","japanese-formal","japanese-informal","justify","kannada","katakana","katakana-iroha","keep-all","khmer","korean-hangul-formal","korean-hanja-formal","korean-hanja-informal","landscape","lao","large","larger","left","level","lighter","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","malayalam","match","matrix","matrix3d","media-play-button","media-slider","media-sliderthumb","media-volume-slider","media-volume-sliderthumb","medium","menu","menulist","menulist-button","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","myanmar","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","octal","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","persian","perspective","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeating-conic-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row-resize","rtl","run-in","running","s-resize","sans-serif","scale","scale3d","scaleX","scaleY","scaleZ","scroll","scrollbar","scroll-position","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","semi-condensed","semi-expanded","separate","serif","show","sidama","simp-chinese-formal","simp-chinese-informal","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","solid","somali","source-atop","source-in","source-out","source-over","space","spell-out","square","square-button","standard","start","static","status-bar","stretch","stroke","sub","subpixel-antialiased","super","sw-resize","symbolic","symbols","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","tamil","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","trad-chinese-formal","trad-chinese-informal","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","up","upper-alpha","upper-armenian","upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","var","vertical","vertical-text","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","x-large","x-small","xor","xx-large","xx-small","bicubic","optimizespeed","grayscale","row","row-reverse","wrap","wrap-reverse","column-reverse","flex-start","flex-end","space-between","space-around","unset"],x=["in","and","or","not","is not","is a","is","isnt","defined","if unless"],c=["for","if","else","unless","from","to"],d=["null","true","false","href","title","type","not-allowed","readonly","disabled"],w=["@font-face","@keyframes","@media","@viewport","@page","@host","@supports","@block","@css"],E=h.concat(v,C,b,S,s,g,L,p,x,c,d,w);function z(M){return M=M.sort(function(H,Z){return Z>H}),new RegExp("^(("+M.join(")|(")+"))\\b")}function y(M){for(var H={},Z=0;Z{(function(o){typeof Gu=="object"&&typeof Zu=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";function h(N){for(var F={},D=0;D~^?!",p=":;,.(){}[]",g=/^\-?0b[01][01_]*/,L=/^\-?0o[0-7][0-7_]*/,x=/^\-?0x[\dA-Fa-f][\dA-Fa-f_]*(?:(?:\.[\dA-Fa-f][\dA-Fa-f_]*)?[Pp]\-?\d[\d_]*)?/,c=/^\-?\d[\d_]*(?:\.\d[\d_]*)?(?:[Ee]\-?\d[\d_]*)?/,d=/^\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1/,w=/^\.(?:\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1)/,E=/^\#[A-Za-z]+/,z=/^@(?:\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1)/;function y(N,F,D){if(N.sol()&&(F.indented=N.indentation()),N.eatSpace())return null;var Q=N.peek();if(Q=="/"){if(N.match("//"))return N.skipToEnd(),"comment";if(N.match("/*"))return F.tokenize.push(H),H(N,F)}if(N.match(E))return"builtin";if(N.match(z))return"attribute";if(N.match(g)||N.match(L)||N.match(x)||N.match(c))return"number";if(N.match(w))return"property";if(s.indexOf(Q)>-1)return N.next(),"operator";if(p.indexOf(Q)>-1)return N.next(),N.match(".."),"punctuation";var j;if(j=N.match(/("""|"|')/)){var V=M.bind(null,j[0]);return F.tokenize.push(V),V(N,F)}if(N.match(d)){var _=N.current();return S.hasOwnProperty(_)?"variable-2":b.hasOwnProperty(_)?"atom":v.hasOwnProperty(_)?(C.hasOwnProperty(_)&&(F.prev="define"),"keyword"):D=="define"?"def":"variable"}return N.next(),null}function R(){var N=0;return function(F,D,Q){var j=y(F,D,Q);if(j=="punctuation"){if(F.current()=="(")++N;else if(F.current()==")"){if(N==0)return F.backUp(1),D.tokenize.pop(),D.tokenize[D.tokenize.length-1](F,D);--N}}return j}}function M(N,F,D){for(var Q=N.length==1,j,V=!1;j=F.peek();)if(V){if(F.next(),j=="(")return D.tokenize.push(R()),"string";V=!1}else{if(F.match(N))return D.tokenize.pop(),"string";F.next(),V=j=="\\"}return Q&&D.tokenize.pop(),"string"}function H(N,F){for(var D;D=N.next();)if(D==="/"&&N.eat("*"))F.tokenize.push(H);else if(D==="*"&&N.eat("/")){F.tokenize.pop();break}return"comment"}function Z(N,F,D){this.prev=N,this.align=F,this.indented=D}function ee(N,F){var D=F.match(/^\s*($|\/[\/\*])/,!1)?null:F.column()+1;N.context=new Z(N.context,D,N.indented)}function re(N){N.context&&(N.indented=N.context.indented,N.context=N.context.prev)}o.defineMode("swift",function(N){return{startState:function(){return{prev:null,context:null,indented:0,tokenize:[]}},token:function(F,D){var Q=D.prev;D.prev=null;var j=D.tokenize[D.tokenize.length-1]||y,V=j(F,D,Q);if(!V||V=="comment"?D.prev=Q:D.prev||(D.prev=V),V=="punctuation"){var _=/[\(\[\{]|([\]\)\}])/.exec(F.current());_&&(_[1]?re:ee)(D,F)}return V},indent:function(F,D){var Q=F.context;if(!Q)return 0;var j=/^[\]\}\)]/.test(D);return Q.align!=null?Q.align-(j?1:0):Q.indented+(j?0:N.indentUnit)},electricInput:/^\s*[\)\}\]]$/,lineComment:"//",blockCommentStart:"/*",blockCommentEnd:"*/",fold:"brace",closeBrackets:"()[]{}''\"\"``"}}),o.defineMIME("text/x-swift","swift")})});var Vu=Ke((Yu,Qu)=>{(function(o){typeof Yu=="object"&&typeof Qu=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("coffeescript",function(h,v){var C="error";function b(F){return new RegExp("^(("+F.join(")|(")+"))\\b")}var S=/^(?:->|=>|\+[+=]?|-[\-=]?|\*[\*=]?|\/[\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\|=?|\^=?|\~|!|\?|(or|and|\|\||&&|\?)=)/,s=/^(?:[()\[\]{},:`=;]|\.\.?\.?)/,p=/^[_A-Za-z$][_A-Za-z$0-9]*/,g=/^@[_A-Za-z$][_A-Za-z$0-9]*/,L=b(["and","or","not","is","isnt","in","instanceof","typeof"]),x=["for","while","loop","if","unless","else","switch","try","catch","finally","class"],c=["break","by","continue","debugger","delete","do","in","of","new","return","then","this","@","throw","when","until","extends"],d=b(x.concat(c));x=b(x);var w=/^('{3}|\"{3}|['\"])/,E=/^(\/{3}|\/)/,z=["Infinity","NaN","undefined","null","true","false","on","off","yes","no"],y=b(z);function R(F,D){if(F.sol()){D.scope.align===null&&(D.scope.align=!1);var Q=D.scope.offset;if(F.eatSpace()){var j=F.indentation();return j>Q&&D.scope.type=="coffee"?"indent":j0&&ee(F,D)}if(F.eatSpace())return null;var V=F.peek();if(F.match("####"))return F.skipToEnd(),"comment";if(F.match("###"))return D.tokenize=H,D.tokenize(F,D);if(V==="#")return F.skipToEnd(),"comment";if(F.match(/^-?[0-9\.]/,!1)){var _=!1;if(F.match(/^-?\d*\.\d+(e[\+\-]?\d+)?/i)&&(_=!0),F.match(/^-?\d+\.\d*/)&&(_=!0),F.match(/^-?\.\d+/)&&(_=!0),_)return F.peek()=="."&&F.backUp(1),"number";var K=!1;if(F.match(/^-?0x[0-9a-f]+/i)&&(K=!0),F.match(/^-?[1-9]\d*(e[\+\-]?\d+)?/)&&(K=!0),F.match(/^-?0(?![\dx])/i)&&(K=!0),K)return"number"}if(F.match(w))return D.tokenize=M(F.current(),!1,"string"),D.tokenize(F,D);if(F.match(E)){if(F.current()!="/"||F.match(/^.*\//,!1))return D.tokenize=M(F.current(),!0,"string-2"),D.tokenize(F,D);F.backUp(1)}return F.match(S)||F.match(L)?"operator":F.match(s)?"punctuation":F.match(y)?"atom":F.match(g)||D.prop&&F.match(p)?"property":F.match(d)?"keyword":F.match(p)?"variable":(F.next(),C)}function M(F,D,Q){return function(j,V){for(;!j.eol();)if(j.eatWhile(/[^'"\/\\]/),j.eat("\\")){if(j.next(),D&&j.eol())return Q}else{if(j.match(F))return V.tokenize=R,Q;j.eat(/['"\/]/)}return D&&(v.singleLineStringErrors?Q=C:V.tokenize=R),Q}}function H(F,D){for(;!F.eol();){if(F.eatWhile(/[^#]/),F.match("###")){D.tokenize=R;break}F.eatWhile("#")}return"comment"}function Z(F,D,Q){Q=Q||"coffee";for(var j=0,V=!1,_=null,K=D.scope;K;K=K.prev)if(K.type==="coffee"||K.type=="}"){j=K.offset+h.indentUnit;break}Q!=="coffee"?(V=null,_=F.column()+F.current().length):D.scope.align&&(D.scope.align=!1),D.scope={offset:j,type:Q,prev:D.scope,align:V,alignOffset:_}}function ee(F,D){if(D.scope.prev)if(D.scope.type==="coffee"){for(var Q=F.indentation(),j=!1,V=D.scope;V;V=V.prev)if(Q===V.offset){j=!0;break}if(!j)return!0;for(;D.scope.prev&&D.scope.offset!==Q;)D.scope=D.scope.prev;return!1}else return D.scope=D.scope.prev,!1}function re(F,D){var Q=D.tokenize(F,D),j=F.current();j==="return"&&(D.dedent=!0),((j==="->"||j==="=>")&&F.eol()||Q==="indent")&&Z(F,D);var V="[({".indexOf(j);if(V!==-1&&Z(F,D,"])}".slice(V,V+1)),x.exec(j)&&Z(F,D),j=="then"&&ee(F,D),Q==="dedent"&&ee(F,D))return C;if(V="])}".indexOf(j),V!==-1){for(;D.scope.type=="coffee"&&D.scope.prev;)D.scope=D.scope.prev;D.scope.type==j&&(D.scope=D.scope.prev)}return D.dedent&&F.eol()&&(D.scope.type=="coffee"&&D.scope.prev&&(D.scope=D.scope.prev),D.dedent=!1),Q}var N={startState:function(F){return{tokenize:R,scope:{offset:F||0,type:"coffee",prev:null,align:!1},prop:!1,dedent:0}},token:function(F,D){var Q=D.scope.align===null&&D.scope;Q&&F.sol()&&(Q.align=!1);var j=re(F,D);return j&&j!="comment"&&(Q&&(Q.align=!0),D.prop=j=="punctuation"&&F.current()=="."),j},indent:function(F,D){if(F.tokenize!=R)return 0;var Q=F.scope,j=D&&"])}".indexOf(D.charAt(0))>-1;if(j)for(;Q.type=="coffee"&&Q.prev;)Q=Q.prev;var V=j&&Q.type===D.charAt(0);return Q.align?Q.alignOffset-(V?1:0):(V?Q.prev:Q).offset},lineComment:"#",fold:"indent"};return N}),o.defineMIME("application/vnd.coffeescript","coffeescript"),o.defineMIME("text/x-coffeescript","coffeescript"),o.defineMIME("text/coffeescript","coffeescript")})});var tc=Ke((Ju,ec)=>{(function(o){typeof Ju=="object"&&typeof ec=="object"?o(We(),vn(),gn(),Qn()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../javascript/javascript","../css/css","../htmlmixed/htmlmixed"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("pug",function(h){var v="keyword",C="meta",b="builtin",S="qualifier",s={"{":"}","(":")","[":"]"},p=o.getMode(h,"javascript");function g(){this.javaScriptLine=!1,this.javaScriptLineExcludesColon=!1,this.javaScriptArguments=!1,this.javaScriptArgumentsDepth=0,this.isInterpolating=!1,this.interpolationNesting=0,this.jsState=o.startState(p),this.restOfLine="",this.isIncludeFiltered=!1,this.isEach=!1,this.lastTag="",this.scriptType="",this.isAttrs=!1,this.attrsNest=[],this.inAttributeName=!0,this.attributeIsType=!1,this.attrValue="",this.indentOf=1/0,this.indentToken="",this.innerMode=null,this.innerState=null,this.innerModeForLine=!1}g.prototype.copy=function(){var U=new g;return U.javaScriptLine=this.javaScriptLine,U.javaScriptLineExcludesColon=this.javaScriptLineExcludesColon,U.javaScriptArguments=this.javaScriptArguments,U.javaScriptArgumentsDepth=this.javaScriptArgumentsDepth,U.isInterpolating=this.isInterpolating,U.interpolationNesting=this.interpolationNesting,U.jsState=o.copyState(p,this.jsState),U.innerMode=this.innerMode,this.innerMode&&this.innerState&&(U.innerState=o.copyState(this.innerMode,this.innerState)),U.restOfLine=this.restOfLine,U.isIncludeFiltered=this.isIncludeFiltered,U.isEach=this.isEach,U.lastTag=this.lastTag,U.scriptType=this.scriptType,U.isAttrs=this.isAttrs,U.attrsNest=this.attrsNest.slice(),U.inAttributeName=this.inAttributeName,U.attributeIsType=this.attributeIsType,U.attrValue=this.attrValue,U.indentOf=this.indentOf,U.indentToken=this.indentToken,U.innerModeForLine=this.innerModeForLine,U};function L(U,G){if(U.sol()&&(G.javaScriptLine=!1,G.javaScriptLineExcludesColon=!1),G.javaScriptLine){if(G.javaScriptLineExcludesColon&&U.peek()===":"){G.javaScriptLine=!1,G.javaScriptLineExcludesColon=!1;return}var ce=p.token(U,G.jsState);return U.eol()&&(G.javaScriptLine=!1),ce||!0}}function x(U,G){if(G.javaScriptArguments){if(G.javaScriptArgumentsDepth===0&&U.peek()!=="("){G.javaScriptArguments=!1;return}if(U.peek()==="("?G.javaScriptArgumentsDepth++:U.peek()===")"&&G.javaScriptArgumentsDepth--,G.javaScriptArgumentsDepth===0){G.javaScriptArguments=!1;return}var ce=p.token(U,G.jsState);return ce||!0}}function c(U){if(U.match(/^yield\b/))return"keyword"}function d(U){if(U.match(/^(?:doctype) *([^\n]+)?/))return C}function w(U,G){if(U.match("#{"))return G.isInterpolating=!0,G.interpolationNesting=0,"punctuation"}function E(U,G){if(G.isInterpolating){if(U.peek()==="}"){if(G.interpolationNesting--,G.interpolationNesting<0)return U.next(),G.isInterpolating=!1,"punctuation"}else U.peek()==="{"&&G.interpolationNesting++;return p.token(U,G.jsState)||!0}}function z(U,G){if(U.match(/^case\b/))return G.javaScriptLine=!0,v}function y(U,G){if(U.match(/^when\b/))return G.javaScriptLine=!0,G.javaScriptLineExcludesColon=!0,v}function R(U){if(U.match(/^default\b/))return v}function M(U,G){if(U.match(/^extends?\b/))return G.restOfLine="string",v}function H(U,G){if(U.match(/^append\b/))return G.restOfLine="variable",v}function Z(U,G){if(U.match(/^prepend\b/))return G.restOfLine="variable",v}function ee(U,G){if(U.match(/^block\b *(?:(prepend|append)\b)?/))return G.restOfLine="variable",v}function re(U,G){if(U.match(/^include\b/))return G.restOfLine="string",v}function N(U,G){if(U.match(/^include:([a-zA-Z0-9\-]+)/,!1)&&U.match("include"))return G.isIncludeFiltered=!0,v}function F(U,G){if(G.isIncludeFiltered){var ce=B(U,G);return G.isIncludeFiltered=!1,G.restOfLine="string",ce}}function D(U,G){if(U.match(/^mixin\b/))return G.javaScriptLine=!0,v}function Q(U,G){if(U.match(/^\+([-\w]+)/))return U.match(/^\( *[-\w]+ *=/,!1)||(G.javaScriptArguments=!0,G.javaScriptArgumentsDepth=0),"variable";if(U.match("+#{",!1))return U.next(),G.mixinCallAfter=!0,w(U,G)}function j(U,G){if(G.mixinCallAfter)return G.mixinCallAfter=!1,U.match(/^\( *[-\w]+ *=/,!1)||(G.javaScriptArguments=!0,G.javaScriptArgumentsDepth=0),!0}function V(U,G){if(U.match(/^(if|unless|else if|else)\b/))return G.javaScriptLine=!0,v}function _(U,G){if(U.match(/^(- *)?(each|for)\b/))return G.isEach=!0,v}function K(U,G){if(G.isEach){if(U.match(/^ in\b/))return G.javaScriptLine=!0,G.isEach=!1,v;if(U.sol()||U.eol())G.isEach=!1;else if(U.next()){for(;!U.match(/^ in\b/,!1)&&U.next(););return"variable"}}}function X(U,G){if(U.match(/^while\b/))return G.javaScriptLine=!0,v}function I(U,G){var ce;if(ce=U.match(/^(\w(?:[-:\w]*\w)?)\/?/))return G.lastTag=ce[1].toLowerCase(),G.lastTag==="script"&&(G.scriptType="application/javascript"),"tag"}function B(U,G){if(U.match(/^:([\w\-]+)/)){var ce;return h&&h.innerModes&&(ce=h.innerModes(U.current().substring(1))),ce||(ce=U.current().substring(1)),typeof ce=="string"&&(ce=o.getMode(h,ce)),je(U,G,ce),"atom"}}function le(U,G){if(U.match(/^(!?=|-)/))return G.javaScriptLine=!0,"punctuation"}function xe(U){if(U.match(/^#([\w-]+)/))return b}function q(U){if(U.match(/^\.([\w-]+)/))return S}function T(U,G){if(U.peek()=="(")return U.next(),G.isAttrs=!0,G.attrsNest=[],G.inAttributeName=!0,G.attrValue="",G.attributeIsType=!1,"punctuation"}function de(U,G){if(G.isAttrs){if(s[U.peek()]&&G.attrsNest.push(s[U.peek()]),G.attrsNest[G.attrsNest.length-1]===U.peek())G.attrsNest.pop();else if(U.eat(")"))return G.isAttrs=!1,"punctuation";if(G.inAttributeName&&U.match(/^[^=,\)!]+/))return(U.peek()==="="||U.peek()==="!")&&(G.inAttributeName=!1,G.jsState=o.startState(p),G.lastTag==="script"&&U.current().trim().toLowerCase()==="type"?G.attributeIsType=!0:G.attributeIsType=!1),"attribute";var ce=p.token(U,G.jsState);if(G.attributeIsType&&ce==="string"&&(G.scriptType=U.current().toString()),G.attrsNest.length===0&&(ce==="string"||ce==="variable"||ce==="keyword"))try{return Function("","var x "+G.attrValue.replace(/,\s*$/,"").replace(/^!/,"")),G.inAttributeName=!0,G.attrValue="",U.backUp(U.current().length),de(U,G)}catch{}return G.attrValue+=U.current(),ce||!0}}function ze(U,G){if(U.match(/^&attributes\b/))return G.javaScriptArguments=!0,G.javaScriptArgumentsDepth=0,"keyword"}function pe(U){if(U.sol()&&U.eatSpace())return"indent"}function Ee(U,G){if(U.match(/^ *\/\/(-)?([^\n]*)/))return G.indentOf=U.indentation(),G.indentToken="comment","comment"}function ge(U){if(U.match(/^: */))return"colon"}function Oe(U,G){if(U.match(/^(?:\| ?| )([^\n]+)/))return"string";if(U.match(/^(<[^\n]*)/,!1))return je(U,G,"htmlmixed"),G.innerModeForLine=!0,Ze(U,G,!0)}function qe(U,G){if(U.eat(".")){var ce=null;return G.lastTag==="script"&&G.scriptType.toLowerCase().indexOf("javascript")!=-1?ce=G.scriptType.toLowerCase().replace(/"|'/g,""):G.lastTag==="style"&&(ce="css"),je(U,G,ce),"dot"}}function Se(U){return U.next(),null}function je(U,G,ce){ce=o.mimeModes[ce]||ce,ce=h.innerModes&&h.innerModes(ce)||ce,ce=o.mimeModes[ce]||ce,ce=o.getMode(h,ce),G.indentOf=U.indentation(),ce&&ce.name!=="null"?G.innerMode=ce:G.indentToken="string"}function Ze(U,G,ce){if(U.indentation()>G.indentOf||G.innerModeForLine&&!U.sol()||ce)return G.innerMode?(G.innerState||(G.innerState=G.innerMode.startState?o.startState(G.innerMode,U.indentation()):{}),U.hideFirstChars(G.indentOf+2,function(){return G.innerMode.token(U,G.innerState)||!0})):(U.skipToEnd(),G.indentToken);U.sol()&&(G.indentOf=1/0,G.indentToken=null,G.innerMode=null,G.innerState=null)}function ke(U,G){if(U.sol()&&(G.restOfLine=""),G.restOfLine){U.skipToEnd();var ce=G.restOfLine;return G.restOfLine="",ce}}function Je(){return new g}function He(U){return U.copy()}function Ge(U,G){var ce=Ze(U,G)||ke(U,G)||E(U,G)||F(U,G)||K(U,G)||de(U,G)||L(U,G)||x(U,G)||j(U,G)||c(U)||d(U)||w(U,G)||z(U,G)||y(U,G)||R(U)||M(U,G)||H(U,G)||Z(U,G)||ee(U,G)||re(U,G)||N(U,G)||D(U,G)||Q(U,G)||V(U,G)||_(U,G)||X(U,G)||I(U,G)||B(U,G)||le(U,G)||xe(U)||q(U)||T(U,G)||ze(U,G)||pe(U)||Oe(U,G)||Ee(U,G)||ge(U)||qe(U,G)||Se(U);return ce===!0?null:ce}return{startState:Je,copyState:He,token:Ge}},"javascript","css","htmlmixed"),o.defineMIME("text/x-pug","pug"),o.defineMIME("text/x-jade","pug")})});var ic=Ke((rc,nc)=>{(function(o){typeof rc=="object"&&typeof nc=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.multiplexingMode=function(h){var v=Array.prototype.slice.call(arguments,1);function C(b,S,s,p){if(typeof S=="string"){var g=b.indexOf(S,s);return p&&g>-1?g+S.length:g}var L=S.exec(s?b.slice(s):b);return L?L.index+s+(p?L[0].length:0):-1}return{startState:function(){return{outer:o.startState(h),innerActive:null,inner:null,startingInner:!1}},copyState:function(b){return{outer:o.copyState(h,b.outer),innerActive:b.innerActive,inner:b.innerActive&&o.copyState(b.innerActive.mode,b.inner),startingInner:b.startingInner}},token:function(b,S){if(S.innerActive){var E=S.innerActive,p=b.string;if(!E.close&&b.sol())return S.innerActive=S.inner=null,this.token(b,S);var x=E.close&&!S.startingInner?C(p,E.close,b.pos,E.parseDelimiters):-1;if(x==b.pos&&!E.parseDelimiters)return b.match(E.close),S.innerActive=S.inner=null,E.delimStyle&&E.delimStyle+" "+E.delimStyle+"-close";x>-1&&(b.string=p.slice(0,x));var z=E.mode.token(b,S.inner);return x>-1?b.string=p:b.pos>b.start&&(S.startingInner=!1),x==b.pos&&E.parseDelimiters&&(S.innerActive=S.inner=null),E.innerStyle&&(z?z=z+" "+E.innerStyle:z=E.innerStyle),z}else{for(var s=1/0,p=b.string,g=0;g{(function(o){typeof oc=="object"&&typeof ac=="object"?o(We(),Di(),ic()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../../addon/mode/simple","../../addon/mode/multiplex"],o):o(CodeMirror)})(function(o){"use strict";o.defineSimpleMode("handlebars-tags",{start:[{regex:/\{\{\{/,push:"handlebars_raw",token:"tag"},{regex:/\{\{!--/,push:"dash_comment",token:"comment"},{regex:/\{\{!/,push:"comment",token:"comment"},{regex:/\{\{/,push:"handlebars",token:"tag"}],handlebars_raw:[{regex:/\}\}\}/,pop:!0,token:"tag"}],handlebars:[{regex:/\}\}/,pop:!0,token:"tag"},{regex:/"(?:[^\\"]|\\.)*"?/,token:"string"},{regex:/'(?:[^\\']|\\.)*'?/,token:"string"},{regex:/>|[#\/]([A-Za-z_]\w*)/,token:"keyword"},{regex:/(?:else|this)\b/,token:"keyword"},{regex:/\d+/i,token:"number"},{regex:/=|~|@|true|false/,token:"atom"},{regex:/(?:\.\.\/)*(?:[A-Za-z_][\w\.]*)+/,token:"variable-2"}],dash_comment:[{regex:/--\}\}/,pop:!0,token:"comment"},{regex:/./,token:"comment"}],comment:[{regex:/\}\}/,pop:!0,token:"comment"},{regex:/./,token:"comment"}],meta:{blockCommentStart:"{{--",blockCommentEnd:"--}}"}}),o.defineMode("handlebars",function(h,v){var C=o.getMode(h,"handlebars-tags");return!v||!v.base?C:o.multiplexingMode(o.getMode(h,v.base),{open:"{{",close:/\}\}\}?/,mode:C,parseDelimiters:!0})}),o.defineMIME("text/x-handlebars-template","handlebars")})});var cc=Ke((sc,uc)=>{(function(o){"use strict";typeof sc=="object"&&typeof uc=="object"?o(We(),Yn(),mn(),vn(),Vu(),gn(),ea(),ta(),tc(),lc()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../../addon/mode/overlay","../xml/xml","../javascript/javascript","../coffeescript/coffeescript","../css/css","../sass/sass","../stylus/stylus","../pug/pug","../handlebars/handlebars"],o):o(CodeMirror)})(function(o){var h={script:[["lang",/coffee(script)?/,"coffeescript"],["type",/^(?:text|application)\/(?:x-)?coffee(?:script)?$/,"coffeescript"],["lang",/^babel$/,"javascript"],["type",/^text\/babel$/,"javascript"],["type",/^text\/ecmascript-\d+$/,"javascript"]],style:[["lang",/^stylus$/i,"stylus"],["lang",/^sass$/i,"sass"],["lang",/^less$/i,"text/x-less"],["lang",/^scss$/i,"text/x-scss"],["type",/^(text\/)?(x-)?styl(us)?$/i,"stylus"],["type",/^text\/sass/i,"sass"],["type",/^(text\/)?(x-)?scss$/i,"text/x-scss"],["type",/^(text\/)?(x-)?less$/i,"text/x-less"]],template:[["lang",/^vue-template$/i,"vue"],["lang",/^pug$/i,"pug"],["lang",/^handlebars$/i,"handlebars"],["type",/^(text\/)?(x-)?pug$/i,"pug"],["type",/^text\/x-handlebars-template$/i,"handlebars"],[null,null,"vue-template"]]};o.defineMode("vue-template",function(v,C){var b={token:function(S){if(S.match(/^\{\{.*?\}\}/))return"meta mustache";for(;S.next()&&!S.match("{{",!1););return null}};return o.overlayMode(o.getMode(v,C.backdrop||"text/html"),b)}),o.defineMode("vue",function(v){return o.getMode(v,{name:"htmlmixed",tags:h})},"htmlmixed","xml","javascript","coffeescript","css","sass","stylus","pug","handlebars"),o.defineMIME("script/x-vue","vue"),o.defineMIME("text/x-vue","vue")})});var pc=Ke((fc,dc)=>{(function(o){typeof fc=="object"&&typeof dc=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("yaml",function(){var h=["true","false","on","off","yes","no"],v=new RegExp("\\b(("+h.join(")|(")+"))$","i");return{token:function(C,b){var S=C.peek(),s=b.escaped;if(b.escaped=!1,S=="#"&&(C.pos==0||/\s/.test(C.string.charAt(C.pos-1))))return C.skipToEnd(),"comment";if(C.match(/^('([^']|\\.)*'?|"([^"]|\\.)*"?)/))return"string";if(b.literal&&C.indentation()>b.keyCol)return C.skipToEnd(),"string";if(b.literal&&(b.literal=!1),C.sol()){if(b.keyCol=0,b.pair=!1,b.pairStart=!1,C.match("---")||C.match("..."))return"def";if(C.match(/\s*-\s+/))return"meta"}if(C.match(/^(\{|\}|\[|\])/))return S=="{"?b.inlinePairs++:S=="}"?b.inlinePairs--:S=="["?b.inlineList++:b.inlineList--,"meta";if(b.inlineList>0&&!s&&S==",")return C.next(),"meta";if(b.inlinePairs>0&&!s&&S==",")return b.keyCol=0,b.pair=!1,b.pairStart=!1,C.next(),"meta";if(b.pairStart){if(C.match(/^\s*(\||\>)\s*/))return b.literal=!0,"meta";if(C.match(/^\s*(\&|\*)[a-z0-9\._-]+\b/i))return"variable-2";if(b.inlinePairs==0&&C.match(/^\s*-?[0-9\.\,]+\s?$/)||b.inlinePairs>0&&C.match(/^\s*-?[0-9\.\,]+\s?(?=(,|}))/))return"number";if(C.match(v))return"keyword"}return!b.pair&&C.match(/^\s*(?:[,\[\]{}&*!|>'"%@`][^\s'":]|[^\s,\[\]{}#&*!|>'"%@`])[^#:]*(?=:($|\s))/)?(b.pair=!0,b.keyCol=C.indentation(),"atom"):b.pair&&C.match(/^:\s*/)?(b.pairStart=!0,"meta"):(b.pairStart=!1,b.escaped=S=="\\",C.next(),null)},startState:function(){return{pair:!1,pairStart:!1,keyCol:0,inlinePairs:0,inlineList:0,literal:!1,escaped:!1}},lineComment:"#",fold:"indent"}}),o.defineMIME("text/x-yaml","yaml"),o.defineMIME("text/yaml","yaml")})});var $d={};function qd(o){for(var h;(h=Md.exec(o))!==null;){var v=h[0];if(v.indexOf("target=")===-1){var C=v.replace(/>$/,' target="_blank">');o=o.replace(v,C)}}return o}function Id(o){for(var h=new DOMParser,v=h.parseFromString(o,"text/html"),C=v.getElementsByTagName("li"),b=0;b0){for(var d=document.createElement("i"),w=0;w=0&&(x=s.getLineHandle(d),!v(x));d--);var R=s.getTokenAt({line:d,ch:1}),M=C(R).fencedChars,H,Z,ee,re;v(s.getLineHandle(p.line))?(H="",Z=p.line):v(s.getLineHandle(p.line-1))?(H="",Z=p.line-1):(H=M+` +`,Z=p.line),v(s.getLineHandle(g.line))?(ee="",re=g.line,g.ch===0&&(re+=1)):g.ch!==0&&v(s.getLineHandle(g.line+1))?(ee="",re=g.line+1):(ee=M+` +`,re=g.line+1),g.ch===0&&(re-=1),s.operation(function(){s.replaceRange(ee,{line:re,ch:0},{line:re+(ee?0:1),ch:0}),s.replaceRange(H,{line:Z,ch:0},{line:Z+(H?0:1),ch:0})}),s.setSelection({line:Z+(H?1:0),ch:0},{line:re+(H?1:-1),ch:0}),s.focus()}else{var N=p.line;if(v(s.getLineHandle(p.line))&&(b(s,p.line+1)==="fenced"?(d=p.line,N=p.line+1):(w=p.line,N=p.line-1)),d===void 0)for(d=N;d>=0&&(x=s.getLineHandle(d),!v(x));d--);if(w===void 0)for(E=s.lineCount(),w=N;w=0;d--)if(x=s.getLineHandle(d),!x.text.match(/^\s*$/)&&b(s,d,x)!=="indented"){d+=1;break}for(E=s.lineCount(),w=p.line;w\s+/,"unordered-list":C,"ordered-list":C},L=function(E,z){var y={quote:">","unordered-list":v,"ordered-list":"%%i."};return y[E].replace("%%i",z)},x=function(E,z){var y={quote:">","unordered-list":"\\"+v,"ordered-list":"\\d+."},R=new RegExp(y[E]);return z&&R.test(z)},c=function(E,z,y){var R=C.exec(z),M=L(E,d);return R!==null?(x(E,R[2])&&(M=""),z=R[1]+M+R[3]+z.replace(b,"").replace(g[E],"$1")):y==!1&&(z=M+" "+z),z},d=1,w=s.line;w<=p.line;w++)(function(E){var z=o.getLine(E);S[h]?z=z.replace(g[h],"$1"):(h=="unordered-list"&&(z=c("ordered-list",z,!0)),z=c(h,z,!1),d+=1),o.replaceRange(z,{line:E,ch:0},{line:E,ch:99999999999999})})(w);o.focus()}}function xc(o,h,v,C){if(!(!o.codemirror||o.isPreviewActive())){var b=o.codemirror,S=Tr(b),s=S[h];if(!s){Rr(b,s,v,C);return}var p=b.getCursor("start"),g=b.getCursor("end"),L=b.getLine(p.line),x=L.slice(0,p.ch),c=L.slice(p.ch);h=="link"?x=x.replace(/(.*)[^!]\[/,"$1"):h=="image"&&(x=x.replace(/(.*)!\[$/,"$1")),c=c.replace(/]\(.*?\)/,""),b.replaceRange(x+c,{line:p.line,ch:0},{line:p.line,ch:99999999999999}),p.ch-=v[0].length,p!==g&&(g.ch-=v[0].length),b.setSelection(p,g),b.focus()}}function sa(o,h,v,C){if(!(!o.codemirror||o.isPreviewActive())){C=typeof C>"u"?v:C;var b=o.codemirror,S=Tr(b),s,p=v,g=C,L=b.getCursor("start"),x=b.getCursor("end");S[h]?(s=b.getLine(L.line),p=s.slice(0,L.ch),g=s.slice(L.ch),h=="bold"?(p=p.replace(/(\*\*|__)(?![\s\S]*(\*\*|__))/,""),g=g.replace(/(\*\*|__)/,"")):h=="italic"?(p=p.replace(/(\*|_)(?![\s\S]*(\*|_))/,""),g=g.replace(/(\*|_)/,"")):h=="strikethrough"&&(p=p.replace(/(\*\*|~~)(?![\s\S]*(\*\*|~~))/,""),g=g.replace(/(\*\*|~~)/,"")),b.replaceRange(p+g,{line:L.line,ch:0},{line:L.line,ch:99999999999999}),h=="bold"||h=="strikethrough"?(L.ch-=2,L!==x&&(x.ch-=2)):h=="italic"&&(L.ch-=1,L!==x&&(x.ch-=1))):(s=b.getSelection(),h=="bold"?(s=s.split("**").join(""),s=s.split("__").join("")):h=="italic"?(s=s.split("*").join(""),s=s.split("_").join("")):h=="strikethrough"&&(s=s.split("~~").join("")),b.replaceSelection(p+s+g),L.ch+=v.length,x.ch=L.ch+s.length),b.setSelection(L,x),b.focus()}}function Pd(o){if(!o.getWrapperElement().lastChild.classList.contains("editor-preview-active"))for(var h=o.getCursor("start"),v=o.getCursor("end"),C,b=h.line;b<=v.line;b++)C=o.getLine(b),C=C.replace(/^[ ]*([# ]+|\*|-|[> ]+|[0-9]+(.|\)))[ ]*/,""),o.replaceRange(C,{line:b,ch:0},{line:b,ch:99999999999999})}function Ii(o,h){if(Math.abs(o)<1024)return""+o+h[0];var v=0;do o/=1024,++v;while(Math.abs(o)>=1024&&v=19968?C+=v[b].length:C+=1;return C}function Te(o){o=o||{},o.parent=this;var h=!0;if(o.autoDownloadFontAwesome===!1&&(h=!1),o.autoDownloadFontAwesome!==!0)for(var v=document.styleSheets,C=0;C-1&&(h=!1);if(h){var b=document.createElement("link");b.rel="stylesheet",b.href="https://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css",document.getElementsByTagName("head")[0].appendChild(b)}if(o.element)this.element=o.element;else if(o.element===null){console.log("EasyMDE: Error. No element was found.");return}if(o.toolbar===void 0){o.toolbar=[];for(var S in Pr)Object.prototype.hasOwnProperty.call(Pr,S)&&(S.indexOf("separator-")!=-1&&o.toolbar.push("|"),(Pr[S].default===!0||o.showIcons&&o.showIcons.constructor===Array&&o.showIcons.indexOf(S)!=-1)&&o.toolbar.push(S))}if(Object.prototype.hasOwnProperty.call(o,"previewClass")||(o.previewClass="editor-preview"),Object.prototype.hasOwnProperty.call(o,"status")||(o.status=["autosave","lines","words","cursor"],o.uploadImage&&o.status.unshift("upload-image")),o.previewRender||(o.previewRender=function(p){return this.parent.markdown(p)}),o.parsingConfig=fr({highlightFormatting:!0},o.parsingConfig||{}),o.insertTexts=fr({},jd,o.insertTexts||{}),o.promptTexts=fr({},Rd,o.promptTexts||{}),o.blockStyles=fr({},Bd,o.blockStyles||{}),o.autosave!=null&&(o.autosave.timeFormat=fr({},Hd,o.autosave.timeFormat||{})),o.iconClassMap=fr({},et,o.iconClassMap||{}),o.shortcuts=fr({},Ad,o.shortcuts||{}),o.maxHeight=o.maxHeight||void 0,o.direction=o.direction||"ltr",typeof o.maxHeight<"u"?o.minHeight=o.maxHeight:o.minHeight=o.minHeight||"300px",o.errorCallback=o.errorCallback||function(p){alert(p)},o.uploadImage=o.uploadImage||!1,o.imageMaxSize=o.imageMaxSize||2097152,o.imageAccept=o.imageAccept||"image/png, image/jpeg, image/gif, image/avif",o.imageTexts=fr({},Wd,o.imageTexts||{}),o.errorMessages=fr({},Ud,o.errorMessages||{}),o.imagePathAbsolute=o.imagePathAbsolute||!1,o.imageCSRFName=o.imageCSRFName||"csrfmiddlewaretoken",o.imageCSRFHeader=o.imageCSRFHeader||!1,o.autosave!=null&&o.autosave.unique_id!=null&&o.autosave.unique_id!=""&&(o.autosave.uniqueId=o.autosave.unique_id),o.overlayMode&&o.overlayMode.combine===void 0&&(o.overlayMode.combine=!0),this.options=o,this.render(),o.initialValue&&(!this.options.autosave||this.options.autosave.foundSavedValue!==!0)&&this.value(o.initialValue),o.uploadImage){var s=this;this.codemirror.on("dragenter",function(p,g){s.updateStatusBar("upload-image",s.options.imageTexts.sbOnDragEnter),g.stopPropagation(),g.preventDefault()}),this.codemirror.on("dragend",function(p,g){s.updateStatusBar("upload-image",s.options.imageTexts.sbInit),g.stopPropagation(),g.preventDefault()}),this.codemirror.on("dragleave",function(p,g){s.updateStatusBar("upload-image",s.options.imageTexts.sbInit),g.stopPropagation(),g.preventDefault()}),this.codemirror.on("dragover",function(p,g){s.updateStatusBar("upload-image",s.options.imageTexts.sbOnDragEnter),g.stopPropagation(),g.preventDefault()}),this.codemirror.on("drop",function(p,g){g.stopPropagation(),g.preventDefault(),o.imageUploadFunction?s.uploadImagesUsingCustomFunction(o.imageUploadFunction,g.dataTransfer.files):s.uploadImages(g.dataTransfer.files)}),this.codemirror.on("paste",function(p,g){o.imageUploadFunction?s.uploadImagesUsingCustomFunction(o.imageUploadFunction,g.clipboardData.files):s.uploadImages(g.clipboardData.files)})}}function kc(){if(typeof localStorage=="object")try{localStorage.setItem("smde_localStorage",1),localStorage.removeItem("smde_localStorage")}catch{return!1}else return!1;return!0}var mc,Md,Vn,Ad,Dd,ra,hc,et,Pr,jd,Rd,Hd,Bd,Wd,Ud,wc=Cd(()=>{mc=/Mac/.test(navigator.platform),Md=new RegExp(/()+?/g),Vn={toggleBold:Fi,toggleItalic:Ni,drawLink:Gi,toggleHeadingSmaller:Jn,toggleHeadingBigger:Ri,drawImage:Zi,toggleBlockquote:ji,toggleOrderedList:$i,toggleUnorderedList:Ui,toggleCodeBlock:Pi,togglePreview:Ji,toggleStrikethrough:Oi,toggleHeading1:Hi,toggleHeading2:Bi,toggleHeading3:Wi,toggleHeading4:na,toggleHeading5:ia,toggleHeading6:oa,cleanBlock:Ki,drawTable:Xi,drawHorizontalRule:Yi,undo:Qi,redo:Vi,toggleSideBySide:bn,toggleFullScreen:jr},Ad={toggleBold:"Cmd-B",toggleItalic:"Cmd-I",drawLink:"Cmd-K",toggleHeadingSmaller:"Cmd-H",toggleHeadingBigger:"Shift-Cmd-H",toggleHeading1:"Ctrl+Alt+1",toggleHeading2:"Ctrl+Alt+2",toggleHeading3:"Ctrl+Alt+3",toggleHeading4:"Ctrl+Alt+4",toggleHeading5:"Ctrl+Alt+5",toggleHeading6:"Ctrl+Alt+6",cleanBlock:"Cmd-E",drawImage:"Cmd-Alt-I",toggleBlockquote:"Cmd-'",toggleOrderedList:"Cmd-Alt-L",toggleUnorderedList:"Cmd-L",toggleCodeBlock:"Cmd-Alt-C",togglePreview:"Cmd-P",toggleSideBySide:"F9",toggleFullScreen:"F11"},Dd=function(o){for(var h in Vn)if(Vn[h]===o)return h;return null},ra=function(){var o=!1;return function(h){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(h)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(h.substr(0,4)))&&(o=!0)}(navigator.userAgent||navigator.vendor||window.opera),o};hc="";et={bold:"fa fa-bold",italic:"fa fa-italic",strikethrough:"fa fa-strikethrough",heading:"fa fa-header fa-heading","heading-smaller":"fa fa-header fa-heading header-smaller","heading-bigger":"fa fa-header fa-heading header-bigger","heading-1":"fa fa-header fa-heading header-1","heading-2":"fa fa-header fa-heading header-2","heading-3":"fa fa-header fa-heading header-3",code:"fa fa-code",quote:"fa fa-quote-left","ordered-list":"fa fa-list-ol","unordered-list":"fa fa-list-ul","clean-block":"fa fa-eraser",link:"fa fa-link",image:"fa fa-image","upload-image":"fa fa-image",table:"fa fa-table","horizontal-rule":"fa fa-minus",preview:"fa fa-eye","side-by-side":"fa fa-columns",fullscreen:"fa fa-arrows-alt",guide:"fa fa-question-circle",undo:"fa fa-undo",redo:"fa fa-repeat fa-redo"},Pr={bold:{name:"bold",action:Fi,className:et.bold,title:"Bold",default:!0},italic:{name:"italic",action:Ni,className:et.italic,title:"Italic",default:!0},strikethrough:{name:"strikethrough",action:Oi,className:et.strikethrough,title:"Strikethrough"},heading:{name:"heading",action:Jn,className:et.heading,title:"Heading",default:!0},"heading-smaller":{name:"heading-smaller",action:Jn,className:et["heading-smaller"],title:"Smaller Heading"},"heading-bigger":{name:"heading-bigger",action:Ri,className:et["heading-bigger"],title:"Bigger Heading"},"heading-1":{name:"heading-1",action:Hi,className:et["heading-1"],title:"Big Heading"},"heading-2":{name:"heading-2",action:Bi,className:et["heading-2"],title:"Medium Heading"},"heading-3":{name:"heading-3",action:Wi,className:et["heading-3"],title:"Small Heading"},"separator-1":{name:"separator-1"},code:{name:"code",action:Pi,className:et.code,title:"Code"},quote:{name:"quote",action:ji,className:et.quote,title:"Quote",default:!0},"unordered-list":{name:"unordered-list",action:Ui,className:et["unordered-list"],title:"Generic List",default:!0},"ordered-list":{name:"ordered-list",action:$i,className:et["ordered-list"],title:"Numbered List",default:!0},"clean-block":{name:"clean-block",action:Ki,className:et["clean-block"],title:"Clean block"},"separator-2":{name:"separator-2"},link:{name:"link",action:Gi,className:et.link,title:"Create Link",default:!0},image:{name:"image",action:Zi,className:et.image,title:"Insert Image",default:!0},"upload-image":{name:"upload-image",action:aa,className:et["upload-image"],title:"Import an image"},table:{name:"table",action:Xi,className:et.table,title:"Insert Table"},"horizontal-rule":{name:"horizontal-rule",action:Yi,className:et["horizontal-rule"],title:"Insert Horizontal Line"},"separator-3":{name:"separator-3"},preview:{name:"preview",action:Ji,className:et.preview,noDisable:!0,title:"Toggle Preview",default:!0},"side-by-side":{name:"side-by-side",action:bn,className:et["side-by-side"],noDisable:!0,noMobile:!0,title:"Toggle Side by Side",default:!0},fullscreen:{name:"fullscreen",action:jr,className:et.fullscreen,noDisable:!0,noMobile:!0,title:"Toggle Fullscreen",default:!0},"separator-4":{name:"separator-4"},guide:{name:"guide",action:"https://www.markdownguide.org/basic-syntax/",className:et.guide,noDisable:!0,title:"Markdown Guide",default:!0},"separator-5":{name:"separator-5"},undo:{name:"undo",action:Qi,className:et.undo,noDisable:!0,title:"Undo"},redo:{name:"redo",action:Vi,className:et.redo,noDisable:!0,title:"Redo"}},jd={link:["[","](#url#)"],image:["![","](#url#)"],uploadedImage:["![](#url#)",""],table:["",` + +| Column 1 | Column 2 | Column 3 | +| -------- | -------- | -------- | +| Text | Text | Text | + +`],horizontalRule:["",` + +----- + +`]},Rd={link:"URL for the link:",image:"URL of the image:"},Hd={locale:"en-US",format:{hour:"2-digit",minute:"2-digit"}},Bd={bold:"**",code:"```",italic:"*"},Wd={sbInit:"Attach files by drag and dropping or pasting from clipboard.",sbOnDragEnter:"Drop image to upload it.",sbOnDrop:"Uploading image #images_names#...",sbProgress:"Uploading #file_name#: #progress#%",sbOnUploaded:"Uploaded #image_name#",sizeUnits:" B, KB, MB"},Ud={noFileGiven:"You must select a file.",typeNotAllowed:"This image type is not allowed.",fileTooLarge:`Image #image_name# is too big (#image_size#). +Maximum file size is #image_max_size#.`,importError:"Something went wrong when uploading the image #image_name#."};Te.prototype.uploadImages=function(o,h,v){if(o.length!==0){for(var C=[],b=0;b=2){var H=M[1];if(h.imagesPreviewHandler){var Z=h.imagesPreviewHandler(M[1]);typeof Z=="string"&&(H=Z)}if(window.EMDEimagesCache[H])w(R,window.EMDEimagesCache[H]);else{var ee=document.createElement("img");ee.onload=function(){window.EMDEimagesCache[H]={naturalWidth:ee.naturalWidth,naturalHeight:ee.naturalHeight,url:H},w(R,window.EMDEimagesCache[H])},ee.src=H}}}})}this.codemirror.on("update",function(){E()}),this.gui.sideBySide=this.createSideBySide(),this._rendered=this.element,(h.autofocus===!0||o.autofocus)&&this.codemirror.focus();var z=this.codemirror;setTimeout(function(){z.refresh()}.bind(z),0)};Te.prototype.cleanup=function(){document.removeEventListener("keydown",this.documentOnKeyDown)};Te.prototype.autosave=function(){if(kc()){var o=this;if(this.options.autosave.uniqueId==null||this.options.autosave.uniqueId==""){console.log("EasyMDE: You must set a uniqueId to use the autosave feature");return}this.options.autosave.binded!==!0&&(o.element.form!=null&&o.element.form!=null&&o.element.form.addEventListener("submit",function(){clearTimeout(o.autosaveTimeoutId),o.autosaveTimeoutId=void 0,localStorage.removeItem("smde_"+o.options.autosave.uniqueId)}),this.options.autosave.binded=!0),this.options.autosave.loaded!==!0&&(typeof localStorage.getItem("smde_"+this.options.autosave.uniqueId)=="string"&&localStorage.getItem("smde_"+this.options.autosave.uniqueId)!=""&&(this.codemirror.setValue(localStorage.getItem("smde_"+this.options.autosave.uniqueId)),this.options.autosave.foundSavedValue=!0),this.options.autosave.loaded=!0);var h=o.value();h!==""?localStorage.setItem("smde_"+this.options.autosave.uniqueId,h):localStorage.removeItem("smde_"+this.options.autosave.uniqueId);var v=document.getElementById("autosaved");if(v!=null&&v!=null&&v!=""){var C=new Date,b=new Intl.DateTimeFormat([this.options.autosave.timeFormat.locale,"en-US"],this.options.autosave.timeFormat.format).format(C),S=this.options.autosave.text==null?"Autosaved: ":this.options.autosave.text;v.innerHTML=S+b}}else console.log("EasyMDE: localStorage not available, cannot autosave")};Te.prototype.clearAutosavedValue=function(){if(kc()){if(this.options.autosave==null||this.options.autosave.uniqueId==null||this.options.autosave.uniqueId==""){console.log("EasyMDE: You must set a uniqueId to clear the autosave value");return}localStorage.removeItem("smde_"+this.options.autosave.uniqueId)}else console.log("EasyMDE: localStorage not available, cannot autosave")};Te.prototype.openBrowseFileWindow=function(o,h){var v=this,C=this.gui.toolbar.getElementsByClassName("imageInput")[0];C.click();function b(S){v.options.imageUploadFunction?v.uploadImagesUsingCustomFunction(v.options.imageUploadFunction,S.target.files):v.uploadImages(S.target.files,o,h),C.removeEventListener("change",b)}C.addEventListener("change",b)};Te.prototype.uploadImage=function(o,h,v){var C=this;h=h||function(L){yc(C,L)};function b(g){C.updateStatusBar("upload-image",g),setTimeout(function(){C.updateStatusBar("upload-image",C.options.imageTexts.sbInit)},1e4),v&&typeof v=="function"&&v(g),C.options.errorCallback(g)}function S(g){var L=C.options.imageTexts.sizeUnits.split(",");return g.replace("#image_name#",o.name).replace("#image_size#",Ii(o.size,L)).replace("#image_max_size#",Ii(C.options.imageMaxSize,L))}if(o.size>this.options.imageMaxSize){b(S(this.options.errorMessages.fileTooLarge));return}var s=new FormData;s.append("image",o),C.options.imageCSRFToken&&!C.options.imageCSRFHeader&&s.append(C.options.imageCSRFName,C.options.imageCSRFToken);var p=new XMLHttpRequest;p.upload.onprogress=function(g){if(g.lengthComputable){var L=""+Math.round(g.loaded*100/g.total);C.updateStatusBar("upload-image",C.options.imageTexts.sbProgress.replace("#file_name#",o.name).replace("#progress#",L))}},p.open("POST",this.options.imageUploadEndpoint),C.options.imageCSRFToken&&C.options.imageCSRFHeader&&p.setRequestHeader(C.options.imageCSRFName,C.options.imageCSRFToken),p.onload=function(){try{var g=JSON.parse(this.responseText)}catch{console.error("EasyMDE: The server did not return a valid json."),b(S(C.options.errorMessages.importError));return}this.status===200&&g&&!g.error&&g.data&&g.data.filePath?h((C.options.imagePathAbsolute?"":window.location.origin+"/")+g.data.filePath):g.error&&g.error in C.options.errorMessages?b(S(C.options.errorMessages[g.error])):g.error?b(S(g.error)):(console.error("EasyMDE: Received an unexpected response after uploading the image."+this.status+" ("+this.statusText+")"),b(S(C.options.errorMessages.importError)))},p.onerror=function(g){console.error("EasyMDE: An unexpected error occurred when trying to upload the image."+g.target.status+" ("+g.target.statusText+")"),b(C.options.errorMessages.importError)},p.send(s)};Te.prototype.uploadImageUsingCustomFunction=function(o,h){var v=this;function C(s){yc(v,s)}function b(s){var p=S(s);v.updateStatusBar("upload-image",p),setTimeout(function(){v.updateStatusBar("upload-image",v.options.imageTexts.sbInit)},1e4),v.options.errorCallback(p)}function S(s){var p=v.options.imageTexts.sizeUnits.split(",");return s.replace("#image_name#",h.name).replace("#image_size#",Ii(h.size,p)).replace("#image_max_size#",Ii(v.options.imageMaxSize,p))}o.apply(this,[h,C,b])};Te.prototype.setPreviewMaxHeight=function(){var o=this.codemirror,h=o.getWrapperElement(),v=h.nextSibling,C=parseInt(window.getComputedStyle(h).paddingTop),b=parseInt(window.getComputedStyle(h).borderTopWidth),S=parseInt(this.options.maxHeight),s=S+C*2+b*2,p=s.toString()+"px";v.style.height=p};Te.prototype.createSideBySide=function(){var o=this.codemirror,h=o.getWrapperElement(),v=h.nextSibling;if(!v||!v.classList.contains("editor-preview-side")){if(v=document.createElement("div"),v.className="editor-preview-side",this.options.previewClass)if(Array.isArray(this.options.previewClass))for(var C=0;C{try{let d=c[c.length-1];if(d.origin==="+input"){let w="(https://)",E=d.text[d.text.length-1];if(E.endsWith(w)&&E!=="[]"+w){let z=d.from,y=d.to,M=d.text.length>1?0:z.ch;setTimeout(()=>{x.setSelection({line:y.line,ch:M+E.lastIndexOf("(")+1},{line:y.line,ch:M+E.lastIndexOf(")")})},25)}}}catch{}}),this.editor.codemirror.on("change",Alpine.debounce(()=>{this.editor&&(this.state=this.editor.value(),o&&this.$wire.call("$refresh"))},v??300)),h&&this.editor.codemirror.on("blur",()=>this.$wire.call("$refresh")),this.$watch("state",()=>{this.editor&&(this.editor.codemirror.hasFocus()||Alpine.raw(this.editor).value(this.state??""))})},destroy:function(){this.editor.cleanup(),this.editor=null},getToolbar:function(){let x=[];return g.includes("bold")&&x.push({name:"bold",action:EasyMDE.toggleBold,title:p.toolbar_buttons?.bold}),g.includes("italic")&&x.push({name:"italic",action:EasyMDE.toggleItalic,title:p.toolbar_buttons?.italic}),g.includes("strike")&&x.push({name:"strikethrough",action:EasyMDE.toggleStrikethrough,title:p.toolbar_buttons?.strike}),g.includes("link")&&x.push({name:"link",action:EasyMDE.drawLink,title:p.toolbar_buttons?.link}),["bold","italic","strike","link"].some(c=>g.includes(c))&&["heading"].some(c=>g.includes(c))&&x.push("|"),g.includes("heading")&&x.push({name:"heading",action:EasyMDE.toggleHeadingSmaller,title:p.toolbar_buttons?.heading}),["heading"].some(c=>g.includes(c))&&["blockquote","codeBlock","bulletList","orderedList"].some(c=>g.includes(c))&&x.push("|"),g.includes("blockquote")&&x.push({name:"quote",action:EasyMDE.toggleBlockquote,title:p.toolbar_buttons?.blockquote}),g.includes("codeBlock")&&x.push({name:"code",action:EasyMDE.toggleCodeBlock,title:p.toolbar_buttons?.code_block}),g.includes("bulletList")&&x.push({name:"unordered-list",action:EasyMDE.toggleUnorderedList,title:p.toolbar_buttons?.bullet_list}),g.includes("orderedList")&&x.push({name:"ordered-list",action:EasyMDE.toggleOrderedList,title:p.toolbar_buttons?.ordered_list}),["blockquote","codeBlock","bulletList","orderedList"].some(c=>g.includes(c))&&["table","attachFiles"].some(c=>g.includes(c))&&x.push("|"),g.includes("table")&&x.push({name:"table",action:EasyMDE.drawTable,title:p.toolbar_buttons?.table}),g.includes("attachFiles")&&x.push({name:"upload-image",action:EasyMDE.drawUploadedImage,title:p.toolbar_buttons?.attach_files}),["table","attachFiles"].some(c=>g.includes(c))&&["undo","redo"].some(c=>g.includes(c))&&x.push("|"),g.includes("undo")&&x.push({name:"undo",action:EasyMDE.undo,title:p.toolbar_buttons?.undo}),g.includes("redo")&&x.push({name:"redo",action:EasyMDE.redo,title:p.toolbar_buttons?.redo}),x}}}export{Kd as default}; diff --git a/public/js/filament/forms/components/rich-editor.js b/public/js/filament/forms/components/rich-editor.js new file mode 100644 index 000000000..ae241feaa --- /dev/null +++ b/public/js/filament/forms/components/rich-editor.js @@ -0,0 +1,143 @@ +var et=Object.create;var Z=Object.defineProperty;var nt=Object.getOwnPropertyDescriptor;var it=Object.getOwnPropertyNames;var rt=Object.getPrototypeOf,ot=Object.prototype.hasOwnProperty;var st=(I,g)=>()=>(g||I((g={exports:{}}).exports,g),g.exports);var at=(I,g,x,b)=>{if(g&&typeof g=="object"||typeof g=="function")for(let y of it(g))!ot.call(I,y)&&y!==x&&Z(I,y,{get:()=>g[y],enumerable:!(b=nt(g,y))||b.enumerable});return I};var ut=(I,g,x)=>(x=I!=null?et(rt(I)):{},at(g||!I||!I.__esModule?Z(x,"default",{value:I,enumerable:!0}):x,I));var Q=st((q,V)=>{(function(){}).call(q),function(){var I;window.Set==null&&(window.Set=I=function(){function g(){this.clear()}return g.prototype.clear=function(){return this.values=[]},g.prototype.has=function(x){return this.values.indexOf(x)!==-1},g.prototype.add=function(x){return this.has(x)||this.values.push(x),this},g.prototype.delete=function(x){var b;return(b=this.values.indexOf(x))===-1?!1:(this.values.splice(b,1),!0)},g.prototype.forEach=function(){var x;return(x=this.values).forEach.apply(x,arguments)},g}())}.call(q),function(I){function g(){}function x(n,p){return function(){n.apply(p,arguments)}}function b(n){if(typeof this!="object")throw new TypeError("Promises must be constructed via new");if(typeof n!="function")throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],d(n,this)}function y(n,p){for(;n._state===3;)n=n._value;return n._state===0?void n._deferreds.push(p):(n._handled=!0,void u(function(){var c=n._state===1?p.onFulfilled:p.onRejected;if(c===null)return void(n._state===1?h:o)(p.promise,n._value);var v;try{v=c(n._value)}catch(t){return void o(p.promise,t)}h(p.promise,v)}))}function h(n,p){try{if(p===n)throw new TypeError("A promise cannot be resolved with itself.");if(p&&(typeof p=="object"||typeof p=="function")){var c=p.then;if(p instanceof b)return n._state=3,n._value=p,void e(n);if(typeof c=="function")return void d(x(c,p),n)}n._state=1,n._value=p,e(n)}catch(v){o(n,v)}}function o(n,p){n._state=2,n._value=p,e(n)}function e(n){n._state===2&&n._deferreds.length===0&&setTimeout(function(){n._handled||s(n._value)},1);for(var p=0,c=n._deferreds.length;c>p;p++)y(n,n._deferreds[p]);n._deferreds=null}function a(n,p,c){this.onFulfilled=typeof n=="function"?n:null,this.onRejected=typeof p=="function"?p:null,this.promise=c}function d(n,p){var c=!1;try{n(function(v){c||(c=!0,h(p,v))},function(v){c||(c=!0,o(p,v))})}catch(v){if(c)return;c=!0,o(p,v)}}var i=setTimeout,u=typeof setImmediate=="function"&&setImmediate||function(n){i(n,1)},s=function(n){typeof console<"u"&&console&&console.warn("Possible Unhandled Promise Rejection:",n)};b.prototype.catch=function(n){return this.then(null,n)},b.prototype.then=function(n,p){var c=new b(g);return y(this,new a(n,p,c)),c},b.all=function(n){var p=Array.prototype.slice.call(n);return new b(function(c,v){function t(A,f){try{if(f&&(typeof f=="object"||typeof f=="function")){var m=f.then;if(typeof m=="function")return void m.call(f,function(C){t(A,C)},v)}p[A]=f,--r===0&&c(p)}catch(C){v(C)}}if(p.length===0)return c([]);for(var r=p.length,l=0;lv;v++)n[v].then(p,c)})},b._setImmediateFn=function(n){u=n},b._setUnhandledRejectionFn=function(n){s=n},typeof V<"u"&&V.exports?V.exports=b:I.Promise||(I.Promise=b)}(q),function(){var I=typeof window.customElements=="object",g=typeof document.registerElement=="function",x=I||g;x||(typeof WeakMap>"u"&&function(){var b=Object.defineProperty,y=Date.now()%1e9,h=function(){this.name="__st"+(1e9*Math.random()>>>0)+(y+++"__")};h.prototype={set:function(o,e){var a=o[this.name];return a&&a[0]===o?a[1]=e:b(o,this.name,{value:[o,e],writable:!0}),this},get:function(o){var e;return(e=o[this.name])&&e[0]===o?e[1]:void 0},delete:function(o){var e=o[this.name];return e&&e[0]===o?(e[0]=e[1]=void 0,!0):!1},has:function(o){var e=o[this.name];return e?e[0]===o:!1}},window.WeakMap=h}(),function(b){function y(D){C.push(D),m||(m=!0,r(o))}function h(D){return window.ShadowDOMPolyfill&&window.ShadowDOMPolyfill.wrapIfNeeded(D)||D}function o(){m=!1;var D=C;C=[],D.sort(function(E,w){return E.uid_-w.uid_});var R=!1;D.forEach(function(E){var w=E.takeRecords();e(E),w.length&&(E.callback_(w,E),R=!0)}),R&&o()}function e(D){D.nodes_.forEach(function(R){var E=l.get(R);E&&E.forEach(function(w){w.observer===D&&w.removeTransientObservers()})})}function a(D,R){for(var E=D;E;E=E.parentNode){var w=l.get(E);if(w)for(var k=0;k0){var w=R[E-1],k=v(w,D);if(k)return void(R[E-1]=k)}else y(this.observer);R[E]=D},addListeners:function(){this.addListeners_(this.target)},addListeners_:function(D){var R=this.options;R.attributes&&D.addEventListener("DOMAttrModified",this,!0),R.characterData&&D.addEventListener("DOMCharacterDataModified",this,!0),R.childList&&D.addEventListener("DOMNodeInserted",this,!0),(R.childList||R.subtree)&&D.addEventListener("DOMNodeRemoved",this,!0)},removeListeners:function(){this.removeListeners_(this.target)},removeListeners_:function(D){var R=this.options;R.attributes&&D.removeEventListener("DOMAttrModified",this,!0),R.characterData&&D.removeEventListener("DOMCharacterDataModified",this,!0),R.childList&&D.removeEventListener("DOMNodeInserted",this,!0),(R.childList||R.subtree)&&D.removeEventListener("DOMNodeRemoved",this,!0)},addTransientObserver:function(D){if(D!==this.target){this.addListeners_(D),this.transientObservedNodes.push(D);var R=l.get(D);R||l.set(D,R=[]),R.push(this)}},removeTransientObservers:function(){var D=this.transientObservedNodes;this.transientObservedNodes=[],D.forEach(function(R){this.removeListeners_(R);for(var E=l.get(R),w=0;w=0)){s.push(i);for(var n,p=i.querySelectorAll("link[rel="+d+"]"),c=0,v=p.length;v>c&&(n=p[c]);c++)n.import&&a(n.import,u,s);u(i)}}var d=window.HTMLImports?window.HTMLImports.IMPORT_LINK_TYPE:"none";b.forDocumentTree=e,b.forSubtree=y}),window.CustomElements.addModule(function(b){function y(E,w){return h(E,w)||o(E,w)}function h(E,w){return b.upgrade(E,w)?!0:void(w&&d(E))}function o(E,w){m(E,function(k){return h(k,w)?!0:void 0})}function e(E){O.push(E),L||(L=!0,setTimeout(a))}function a(){L=!1;for(var E,w=O,k=0,T=w.length;T>k&&(E=w[k]);k++)E();O=[]}function d(E){S?e(function(){i(E)}):i(E)}function i(E){E.__upgraded__&&!E.__attached&&(E.__attached=!0,E.attachedCallback&&E.attachedCallback())}function u(E){s(E),m(E,function(w){s(w)})}function s(E){S?e(function(){n(E)}):n(E)}function n(E){E.__upgraded__&&E.__attached&&(E.__attached=!1,E.detachedCallback&&E.detachedCallback())}function p(E){for(var w=E,k=window.wrap(document);w;){if(w==k)return!0;w=w.parentNode||w.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&w.host}}function c(E){if(E.shadowRoot&&!E.shadowRoot.__watched){f.dom&&console.log("watching shadow-root for: ",E.localName);for(var w=E.shadowRoot;w;)r(w),w=w.olderShadowRoot}}function v(E,w){if(f.dom){var k=w[0];if(k&&k.type==="childList"&&k.addedNodes&&k.addedNodes){for(var T=k.addedNodes[0];T&&T!==document&&!T.host;)T=T.parentNode;var N=T&&(T.URL||T._URL||T.host&&T.host.localName)||"";N=N.split("/?").shift().split("/").pop()}console.group("mutations (%d) [%s]",w.length,N||"")}var P=p(E);w.forEach(function(_){_.type==="childList"&&(D(_.addedNodes,function(F){F.localName&&y(F,P)}),D(_.removedNodes,function(F){F.localName&&u(F)}))}),f.dom&&console.groupEnd()}function t(E){for(E=window.wrap(E),E||(E=window.wrap(document));E.parentNode;)E=E.parentNode;var w=E.__observer;w&&(v(E,w.takeRecords()),a())}function r(E){if(!E.__observer){var w=new MutationObserver(v.bind(this,E));w.observe(E,{childList:!0,subtree:!0}),E.__observer=w}}function l(E){E=window.wrap(E),f.dom&&console.group("upgradeDocument: ",E.baseURI.split("/").pop());var w=E===window.wrap(document);y(E,w),r(E),f.dom&&console.groupEnd()}function A(E){C(E,l)}var f=b.flags,m=b.forSubtree,C=b.forDocumentTree,S=window.MutationObserver._isPolyfilled&&f["throttle-attached"];b.hasPolyfillMutations=S,b.hasThrottledAttached=S;var L=!1,O=[],D=Array.prototype.forEach.call.bind(Array.prototype.forEach),R=Element.prototype.createShadowRoot;R&&(Element.prototype.createShadowRoot=function(){var E=R.call(this);return window.CustomElements.watchShadow(this),E}),b.watchShadow=c,b.upgradeDocumentTree=A,b.upgradeDocument=l,b.upgradeSubtree=o,b.upgradeAll=y,b.attached=d,b.takeRecords=t}),window.CustomElements.addModule(function(b){function y(i,u){if(i.localName==="template"&&window.HTMLTemplateElement&&HTMLTemplateElement.decorate&&HTMLTemplateElement.decorate(i),!i.__upgraded__&&i.nodeType===Node.ELEMENT_NODE){var s=i.getAttribute("is"),n=b.getRegisteredDefinition(i.localName)||b.getRegisteredDefinition(s);if(n&&(s&&n.tag==i.localName||!s&&!n.extends))return h(i,n,u)}}function h(i,u,s){return d.upgrade&&console.group("upgrade:",i.localName),u.is&&i.setAttribute("is",u.is),o(i,u),i.__upgraded__=!0,a(i),s&&b.attached(i),b.upgradeSubtree(i,s),d.upgrade&&console.groupEnd(),i}function o(i,u){Object.__proto__||e(i,u.prototype,u.native),i.__proto__=u.prototype}function e(i,u,s){for(var n={},p=u;p!==s&&p!==HTMLElement.prototype;){for(var c,v=Object.getOwnPropertyNames(p),t=0;c=v[t];t++)n[c]||(Object.defineProperty(i,c,Object.getOwnPropertyDescriptor(p,c)),n[c]=1);p=Object.getPrototypeOf(p)}}function a(i){i.createdCallback&&i.createdCallback()}var d=b.flags;b.upgrade=y,b.upgradeWithDefinition=h,b.implementPrototype=o}),window.CustomElements.addModule(function(b){function y(E,w){var k=w||{};if(!E)throw new Error("document.registerElement: first argument `name` must not be empty");if(E.indexOf("-")<0)throw new Error("document.registerElement: first argument ('name') must contain a dash ('-'). Argument provided was '"+String(E)+"'.");if(e(E))throw new Error("Failed to execute 'registerElement' on 'Document': Registration failed for type '"+String(E)+"'. The type name is invalid.");if(s(E))throw new Error("DuplicateDefinitionError: a type with name '"+String(E)+"' is already registered");return k.prototype||(k.prototype=Object.create(HTMLElement.prototype)),k.__name=E.toLowerCase(),k.extends&&(k.extends=k.extends.toLowerCase()),k.lifecycle=k.lifecycle||{},k.ancestry=a(k.extends),d(k),i(k),h(k.prototype),n(k.__name,k),k.ctor=p(k),k.ctor.prototype=k.prototype,k.prototype.constructor=k.ctor,b.ready&&l(document),k.ctor}function h(E){if(!E.setAttribute._polyfilled){var w=E.setAttribute;E.setAttribute=function(T,N){o.call(this,T,N,w)};var k=E.removeAttribute;E.removeAttribute=function(T){o.call(this,T,null,k)},E.setAttribute._polyfilled=!0}}function o(E,w,k){E=E.toLowerCase();var T=this.getAttribute(E);k.apply(this,arguments);var N=this.getAttribute(E);this.attributeChangedCallback&&N!==T&&this.attributeChangedCallback(E,T,N)}function e(E){for(var w=0;w=0&&m(T,HTMLElement),T)}function t(E,w){var k=E[w];E[w]=function(){var T=k.apply(this,arguments);return A(T),T}}var r,l=(b.isIE,b.upgradeDocumentTree),A=b.upgradeAll,f=b.upgradeWithDefinition,m=b.implementPrototype,C=b.useNative,S=["annotation-xml","color-profile","font-face","font-face-src","font-face-uri","font-face-format","font-face-name","missing-glyph"],L={},O="http://www.w3.org/1999/xhtml",D=document.createElement.bind(document),R=document.createElementNS.bind(document);r=Object.__proto__||C?function(E,w){return E instanceof w}:function(E,w){if(E instanceof w)return!0;for(var k=E;k;){if(k===w.prototype)return!0;k=k.__proto__}return!1},t(Node.prototype,"cloneNode"),t(document,"importNode"),document.registerElement=y,document.createElement=v,document.createElementNS=c,b.registry=L,b.instanceof=r,b.reservedTagList=S,b.getRegisteredDefinition=s,document.register=document.registerElement}),function(b){function y(){a(window.wrap(document)),window.CustomElements.ready=!0;var u=window.requestAnimationFrame||function(s){setTimeout(s,16)};u(function(){setTimeout(function(){window.CustomElements.readyTime=Date.now(),window.HTMLImports&&(window.CustomElements.elapsed=window.CustomElements.readyTime-window.HTMLImports.readyTime),document.dispatchEvent(new CustomEvent("WebComponentsReady",{bubbles:!0}))})})}var h=b.useNative,o=b.initializeModules;if(b.isIE,h){var e=function(){};b.watchShadow=e,b.upgrade=e,b.upgradeAll=e,b.upgradeDocumentTree=e,b.upgradeSubtree=e,b.takeRecords=e,b.instanceof=function(u,s){return u instanceof s}}else o();var a=b.upgradeDocumentTree,d=b.upgradeDocument;if(window.wrap||(window.ShadowDOMPolyfill?(window.wrap=window.ShadowDOMPolyfill.wrapIfNeeded,window.unwrap=window.ShadowDOMPolyfill.unwrapIfNeeded):window.wrap=window.unwrap=function(u){return u}),window.HTMLImports&&(window.HTMLImports.__importsParsingHook=function(u){u.import&&d(wrap(u.import))}),document.readyState==="complete"||b.flags.eager)y();else if(document.readyState!=="interactive"||window.attachEvent||window.HTMLImports&&!window.HTMLImports.ready){var i=window.HTMLImports&&!window.HTMLImports.ready?"HTMLImportsLoaded":"DOMContentLoaded";window.addEventListener(i,y)}else y()}(window.CustomElements))}.call(q),function(){}.call(q),function(){var I=this;(function(){(function(){this.Trix={VERSION:"1.3.1",ZERO_WIDTH_SPACE:"\uFEFF",NON_BREAKING_SPACE:"\xA0",OBJECT_REPLACEMENT_CHARACTER:"\uFFFC",browser:{composesExistingText:/Android.*Chrome/.test(navigator.userAgent),forcesObjectResizing:/Trident.*rv:11/.test(navigator.userAgent),supportsInputEvents:function(){var x,b,y,h;if(typeof InputEvent>"u")return!1;for(h=["data","getTargetRanges","inputType"],x=0,b=h.length;b>x;x++)if(y=h[x],!(y in InputEvent.prototype))return!1;return!0}()},config:{}}}).call(this)}).call(I);var g=I.Trix;(function(){(function(){g.BasicObject=function(){function x(){}var b,y,h;return x.proxyMethod=function(o){var e,a,d,i,u;return d=y(o),e=d.name,i=d.toMethod,u=d.toProperty,a=d.optional,this.prototype[e]=function(){var s,n;return s=i!=null?a?typeof this[i]=="function"?this[i]():void 0:this[i]():u!=null?this[u]:void 0,a?(n=s?.[e],n!=null?b.call(n,s,arguments):void 0):(n=s[e],b.call(n,s,arguments))}},y=function(o){var e,a;if(!(a=o.match(h)))throw new Error("can't parse @proxyMethod expression: "+o);return e={name:a[4]},a[2]!=null?e.toMethod=a[1]:e.toProperty=a[1],a[3]!=null&&(e.optional=!0),e},b=Function.prototype.apply,h=/^(.+?)(\(\))?(\?)?\.(.+?)$/,x}()}).call(this),function(){var x=function(y,h){function o(){this.constructor=y}for(var e in h)b.call(h,e)&&(y[e]=h[e]);return o.prototype=h.prototype,y.prototype=new o,y.__super__=h.prototype,y},b={}.hasOwnProperty;g.Object=function(y){function h(){this.id=++o}var o;return x(h,y),o=0,h.fromJSONString=function(e){return this.fromJSON(JSON.parse(e))},h.prototype.hasSameConstructorAs=function(e){return this.constructor===e?.constructor},h.prototype.isEqualTo=function(e){return this===e},h.prototype.inspect=function(){var e,a,d;return e=function(){var i,u,s;u=(i=this.contentsForInspection())!=null?i:{},s=[];for(a in u)d=u[a],s.push(a+"="+d);return s}.call(this),"#<"+this.constructor.name+":"+this.id+(e.length?" "+e.join(", "):"")+">"},h.prototype.contentsForInspection=function(){},h.prototype.toJSONString=function(){return JSON.stringify(this)},h.prototype.toUTF16String=function(){return g.UTF16String.box(this)},h.prototype.getCacheKey=function(){return this.id.toString()},h}(g.BasicObject)}.call(this),function(){g.extend=function(x){var b,y;for(b in x)y=x[b],this[b]=y;return this}}.call(this),function(){g.extend({defer:function(x){return setTimeout(x,1)}})}.call(this),function(){var x,b;g.extend({normalizeSpaces:function(y){return y.replace(RegExp(""+g.ZERO_WIDTH_SPACE,"g"),"").replace(RegExp(""+g.NON_BREAKING_SPACE,"g")," ")},normalizeNewlines:function(y){return y.replace(/\r\n/g,` +`)},breakableWhitespacePattern:RegExp("[^\\S"+g.NON_BREAKING_SPACE+"]"),squishBreakableWhitespace:function(y){return y.replace(RegExp(""+g.breakableWhitespacePattern.source,"g")," ").replace(/\ {2,}/g," ")},summarizeStringChange:function(y,h){var o,e,a,d;return y=g.UTF16String.box(y),h=g.UTF16String.box(h),h.lengtho&&y.charAt(o).isEqualTo(h.charAt(o));)o++;for(;e>o+1&&y.charAt(e-1).isEqualTo(h.charAt(a-1));)e--,a--;return{utf16String:y.slice(o,e),offset:o}}}.call(this),function(){g.extend({copyObject:function(x){var b,y,h;x==null&&(x={}),y={};for(b in x)h=x[b],y[b]=h;return y},objectsAreEqual:function(x,b){var y,h;if(x==null&&(x={}),b==null&&(b={}),Object.keys(x).length!==Object.keys(b).length)return!1;for(y in x)if(h=x[y],h!==b[y])return!1;return!0}})}.call(this),function(){var x=[].slice;g.extend({arraysAreEqual:function(b,y){var h,o,e,a;if(b==null&&(b=[]),y==null&&(y=[]),b.length!==y.length)return!1;for(o=h=0,e=b.length;e>h;o=++h)if(a=b[o],a!==y[o])return!1;return!0},arrayStartsWith:function(b,y){return b==null&&(b=[]),y==null&&(y=[]),g.arraysAreEqual(b.slice(0,y.length),y)},spliceArray:function(){var b,y,h;return y=arguments[0],b=2<=arguments.length?x.call(arguments,1):[],h=y.slice(0),h.splice.apply(h,b),h},summarizeArrayChange:function(b,y){var h,o,e,a,d,i,u,s,n,p,c;for(b==null&&(b=[]),y==null&&(y=[]),h=[],p=[],e=new Set,a=0,u=b.length;u>a;a++)c=b[a],e.add(c);for(o=new Set,d=0,s=y.length;s>d;d++)c=y[d],o.add(c),e.has(c)||h.push(c);for(i=0,n=b.length;n>i;i++)c=b[i],o.has(c)||p.push(c);return{added:h,removed:p}}})}.call(this),function(){var x,b,y,h;x=null,b=null,h=null,y=null,g.extend({getAllAttributeNames:function(){return x??(x=g.getTextAttributeNames().concat(g.getBlockAttributeNames()))},getBlockConfig:function(o){return g.config.blockAttributes[o]},getBlockAttributeNames:function(){return b??(b=Object.keys(g.config.blockAttributes))},getTextConfig:function(o){return g.config.textAttributes[o]},getTextAttributeNames:function(){return h??(h=Object.keys(g.config.textAttributes))},getListAttributeNames:function(){var o,e;return y??(y=function(){var a,d;a=g.config.blockAttributes,d=[];for(o in a)e=a[o].listAttribute,e!=null&&d.push(e);return d}())}})}.call(this),function(){var x,b,y,h,o,e=[].indexOf||function(a){for(var d=0,i=this.length;i>d;d++)if(d in this&&this[d]===a)return d;return-1};x=document.documentElement,b=(y=(h=(o=x.matchesSelector)!=null?o:x.webkitMatchesSelector)!=null?h:x.msMatchesSelector)!=null?y:x.mozMatchesSelector,g.extend({handleEvent:function(a,d){var i,u,s,n,p,c,v,t,r,l,A,f;return t=d??{},c=t.onElement,p=t.matchingSelector,f=t.withCallback,n=t.inPhase,v=t.preventDefault,l=t.times,u=c??x,r=p,i=f,A=n==="capturing",s=function(m){var C;return l!=null&&--l===0&&s.destroy(),C=g.findClosestElementFromNode(m.target,{matchingSelector:r}),C!=null&&(f?.call(C,m,C),v)?m.preventDefault():void 0},s.destroy=function(){return u.removeEventListener(a,s,A)},u.addEventListener(a,s,A),s},handleEventOnce:function(a,d){return d==null&&(d={}),d.times=1,g.handleEvent(a,d)},triggerEvent:function(a,d){var i,u,s,n,p,c,v;return v=d??{},c=v.onElement,u=v.bubbles,s=v.cancelable,i=v.attributes,n=c??x,u=u!==!1,s=s!==!1,p=document.createEvent("Events"),p.initEvent(a,u,s),i!=null&&g.extend.call(p,i),n.dispatchEvent(p)},elementMatchesSelector:function(a,d){return a?.nodeType===1?b.call(a,d):void 0},findClosestElementFromNode:function(a,d){var i,u,s;for(u=d??{},i=u.matchingSelector,s=u.untilNode;a!=null&&a.nodeType!==Node.ELEMENT_NODE;)a=a.parentNode;if(a!=null){if(i==null)return a;if(a.closest&&s==null)return a.closest(i);for(;a&&a!==s;){if(g.elementMatchesSelector(a,i))return a;a=a.parentNode}}},findInnerElement:function(a){for(;a?.firstElementChild;)a=a.firstElementChild;return a},innerElementIsActive:function(a){return document.activeElement!==a&&g.elementContainsNode(a,document.activeElement)},elementContainsNode:function(a,d){if(a&&d)for(;d;){if(d===a)return!0;d=d.parentNode}},findNodeFromContainerAndOffset:function(a,d){var i;if(a)return a.nodeType===Node.TEXT_NODE?a:d===0?(i=a.firstChild)!=null?i:a:a.childNodes.item(d-1)},findElementFromContainerAndOffset:function(a,d){var i;return i=g.findNodeFromContainerAndOffset(a,d),g.findClosestElementFromNode(i)},findChildIndexOfNode:function(a){var d;if(a?.parentNode){for(d=0;a=a.previousSibling;)d++;return d}},removeNode:function(a){var d;return a!=null&&(d=a.parentNode)!=null?d.removeChild(a):void 0},walkTree:function(a,d){var i,u,s,n,p;return s=d??{},u=s.onlyNodesOfType,n=s.usingFilter,i=s.expandEntityReferences,p=function(){switch(u){case"element":return NodeFilter.SHOW_ELEMENT;case"text":return NodeFilter.SHOW_TEXT;case"comment":return NodeFilter.SHOW_COMMENT;default:return NodeFilter.SHOW_ALL}}(),document.createTreeWalker(a,p,n??null,i===!0)},tagName:function(a){var d;return a!=null&&(d=a.tagName)!=null?d.toLowerCase():void 0},makeElement:function(a,d){var i,u,s,n,p,c,v,t,r,l,A,f,m,C;if(d==null&&(d={}),typeof a=="object"?(d=a,a=d.tagName):d={attributes:d},s=document.createElement(a),d.editable!=null&&(d.attributes==null&&(d.attributes={}),d.attributes.contenteditable=d.editable),d.attributes){r=d.attributes;for(c in r)C=r[c],s.setAttribute(c,C)}if(d.style){l=d.style;for(c in l)C=l[c],s.style[c]=C}if(d.data){A=d.data;for(c in A)C=A[c],s.dataset[c]=C}if(d.className)for(f=d.className.split(" "),n=0,v=f.length;v>n;n++)u=f[n],s.classList.add(u);if(d.textContent&&(s.textContent=d.textContent),d.childNodes)for(m=[].concat(d.childNodes),p=0,t=m.length;t>p;p++)i=m[p],s.appendChild(i);return s},getBlockTagNames:function(){var a,d;return g.blockTagNames!=null?g.blockTagNames:g.blockTagNames=function(){var i,u;i=g.config.blockAttributes,u=[];for(a in i)d=i[a].tagName,d&&u.push(d);return u}()},nodeIsBlockContainer:function(a){return g.nodeIsBlockStartComment(a?.firstChild)},nodeProbablyIsBlockContainer:function(a){var d,i;return d=g.tagName(a),e.call(g.getBlockTagNames(),d)>=0&&(i=g.tagName(a.firstChild),e.call(g.getBlockTagNames(),i)<0)},nodeIsBlockStart:function(a,d){var i;return i=(d??{strict:!0}).strict,i?g.nodeIsBlockStartComment(a):g.nodeIsBlockStartComment(a)||!g.nodeIsBlockStartComment(a.firstChild)&&g.nodeProbablyIsBlockContainer(a)},nodeIsBlockStartComment:function(a){return g.nodeIsCommentNode(a)&&a?.data==="block"},nodeIsCommentNode:function(a){return a?.nodeType===Node.COMMENT_NODE},nodeIsCursorTarget:function(a,d){var i;return i=(d??{}).name,a?g.nodeIsTextNode(a)?a.data===g.ZERO_WIDTH_SPACE?i?a.parentNode.dataset.trixCursorTarget===i:!0:void 0:g.nodeIsCursorTarget(a.firstChild):void 0},nodeIsAttachmentElement:function(a){return g.elementMatchesSelector(a,g.AttachmentView.attachmentSelector)},nodeIsEmptyTextNode:function(a){return g.nodeIsTextNode(a)&&a?.data===""},nodeIsTextNode:function(a){return a?.nodeType===Node.TEXT_NODE}})}.call(this),function(){var x,b,y,h,o;x=g.copyObject,h=g.objectsAreEqual,g.extend({normalizeRange:y=function(e){var a;if(e!=null)return Array.isArray(e)||(e=[e,e]),[b(e[0]),b((a=e[1])!=null?a:e[0])]},rangeIsCollapsed:function(e){var a,d,i;if(e!=null)return d=y(e),i=d[0],a=d[1],o(i,a)},rangesAreEqual:function(e,a){var d,i,u,s,n,p;if(e!=null&&a!=null)return u=y(e),i=u[0],d=u[1],s=y(a),p=s[0],n=s[1],o(i,p)&&o(d,n)}}),b=function(e){return typeof e=="number"?e:x(e)},o=function(e,a){return typeof e=="number"?e===a:h(e,a)}}.call(this),function(){var x,b,y,h,o,e,a;g.registerElement=function(d,i){var u,s;return i==null&&(i={}),d=d.toLowerCase(),i=a(i),s=e(i),(u=s.defaultCSS)&&(delete s.defaultCSS,h(u,d)),o(d,s)},h=function(d,i){var u;return u=y(i),u.textContent=d.replace(/%t/g,i)},y=function(d){var i,u;return i=document.createElement("style"),i.setAttribute("type","text/css"),i.setAttribute("data-tag-name",d.toLowerCase()),(u=x())&&i.setAttribute("nonce",u),document.head.insertBefore(i,document.head.firstChild),i},x=function(){var d;return(d=b("trix-csp-nonce")||b("csp-nonce"))?d.getAttribute("content"):void 0},b=function(d){return document.head.querySelector("meta[name="+d+"]")},e=function(d){var i,u,s;u={};for(i in d)s=d[i],u[i]=typeof s=="function"?{value:s}:s;return u},a=function(){var d;return d=function(i){var u,s,n,p,c;for(u={},c=["initialize","connect","disconnect"],s=0,p=c.length;p>s;s++)n=c[s],u[n]=i[n],delete i[n];return u},window.customElements?function(i){var u,s,n,p,c;return c=d(i),n=c.initialize,u=c.connect,s=c.disconnect,n&&(p=u,u=function(){return this.initialized||(this.initialized=!0,n.call(this)),p?.call(this)}),u&&(i.connectedCallback=u),s&&(i.disconnectedCallback=s),i}:function(i){var u,s,n,p;return p=d(i),n=p.initialize,u=p.connect,s=p.disconnect,n&&(i.createdCallback=n),u&&(i.attachedCallback=u),s&&(i.detachedCallback=s),i}}(),o=function(){return window.customElements?function(d,i){var u;return u=function(){return typeof Reflect=="object"?Reflect.construct(HTMLElement,[],u):HTMLElement.apply(this)},Object.setPrototypeOf(u.prototype,HTMLElement.prototype),Object.setPrototypeOf(u,HTMLElement),Object.defineProperties(u.prototype,i),window.customElements.define(d,u),u}:function(d,i){var u,s;return s=Object.create(HTMLElement.prototype,i),u=document.registerElement(d,{prototype:s}),Object.defineProperty(s,"constructor",{value:u}),u}}()}.call(this),function(){var x,b;g.extend({getDOMSelection:function(){var y;return y=window.getSelection(),y.rangeCount>0?y:void 0},getDOMRange:function(){var y,h;return(y=(h=g.getDOMSelection())!=null?h.getRangeAt(0):void 0)&&!x(y)?y:void 0},setDOMRange:function(y){var h;return h=window.getSelection(),h.removeAllRanges(),h.addRange(y),g.selectionChangeObserver.update()}}),x=function(y){return b(y.startContainer)||b(y.endContainer)},b=function(y){return!Object.getPrototypeOf(y)}}.call(this),function(){var x;x={"application/x-trix-feature-detection":"test"},g.extend({dataTransferIsPlainText:function(b){var y,h,o;return o=b.getData("text/plain"),h=b.getData("text/html"),o&&h?(y=new DOMParser().parseFromString(h,"text/html").body,y.textContent===o?!y.querySelector("*"):void 0):o?.length},dataTransferIsWritable:function(b){var y,h;if(b?.setData!=null){for(y in x)if(h=x[y],!function(){try{return b.setData(y,h),b.getData(y)===h}catch{}}())return;return!0}},keyEventIsKeyboardCommand:function(){return/Mac|^iP/.test(navigator.platform)?function(b){return b.metaKey}:function(b){return b.ctrlKey}}()})}.call(this),function(){g.extend({RTL_PATTERN:/[\u05BE\u05C0\u05C3\u05D0-\u05EA\u05F0-\u05F4\u061B\u061F\u0621-\u063A\u0640-\u064A\u066D\u0671-\u06B7\u06BA-\u06BE\u06C0-\u06CE\u06D0-\u06D5\u06E5\u06E6\u200F\u202B\u202E\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE72\uFE74\uFE76-\uFEFC]/,getDirection:function(){var x,b,y,h;return b=g.makeElement("input",{dir:"auto",name:"x",dirName:"x.dir"}),x=g.makeElement("form"),x.appendChild(b),y=function(){try{return new FormData(x).has(b.dirName)}catch{}}(),h=function(){try{return b.matches(":dir(ltr),:dir(rtl)")}catch{}}(),y?function(o){return b.value=o,new FormData(x).get(b.dirName)}:h?function(o){return b.value=o,b.matches(":dir(rtl)")?"rtl":"ltr"}:function(o){var e;return e=o.trim().charAt(0),g.RTL_PATTERN.test(e)?"rtl":"ltr"}}()})}.call(this),function(){}.call(this),function(){var x,b=function(h,o){function e(){this.constructor=h}for(var a in o)y.call(o,a)&&(h[a]=o[a]);return e.prototype=o.prototype,h.prototype=new e,h.__super__=o.prototype,h},y={}.hasOwnProperty;x=g.arraysAreEqual,g.Hash=function(h){function o(s){s==null&&(s={}),this.values=a(s),o.__super__.constructor.apply(this,arguments)}var e,a,d,i,u;return b(o,h),o.fromCommonAttributesOfObjects=function(s){var n,p,c,v,t,r;if(s==null&&(s=[]),!s.length)return new this;for(n=e(s[0]),c=n.getKeys(),r=s.slice(1),p=0,v=r.length;v>p;p++)t=r[p],c=n.getKeysCommonToHash(e(t)),n=n.slice(c);return n},o.box=function(s){return e(s)},o.prototype.add=function(s,n){return this.merge(i(s,n))},o.prototype.remove=function(s){return new g.Hash(a(this.values,s))},o.prototype.get=function(s){return this.values[s]},o.prototype.has=function(s){return s in this.values},o.prototype.merge=function(s){return new g.Hash(d(this.values,u(s)))},o.prototype.slice=function(s){var n,p,c,v;for(v={},n=0,c=s.length;c>n;n++)p=s[n],this.has(p)&&(v[p]=this.values[p]);return new g.Hash(v)},o.prototype.getKeys=function(){return Object.keys(this.values)},o.prototype.getKeysCommonToHash=function(s){var n,p,c,v,t;for(s=e(s),v=this.getKeys(),t=[],n=0,c=v.length;c>n;n++)p=v[n],this.values[p]===s.values[p]&&t.push(p);return t},o.prototype.isEqualTo=function(s){return x(this.toArray(),e(s).toArray())},o.prototype.isEmpty=function(){return this.getKeys().length===0},o.prototype.toArray=function(){var s,n,p;return(this.array!=null?this.array:this.array=function(){var c;n=[],c=this.values;for(s in c)p=c[s],n.push(s,p);return n}.call(this)).slice(0)},o.prototype.toObject=function(){return a(this.values)},o.prototype.toJSON=function(){return this.toObject()},o.prototype.contentsForInspection=function(){return{values:JSON.stringify(this.values)}},i=function(s,n){var p;return p={},p[s]=n,p},d=function(s,n){var p,c,v;c=a(s);for(p in n)v=n[p],c[p]=v;return c},a=function(s,n){var p,c,v,t,r;for(t={},r=Object.keys(s).sort(),p=0,v=r.length;v>p;p++)c=r[p],c!==n&&(t[c]=s[c]);return t},e=function(s){return s instanceof g.Hash?s:new g.Hash(s)},u=function(s){return s instanceof g.Hash?s.values:s},o}(g.Object)}.call(this),function(){g.ObjectGroup=function(){function x(b,y){var h,o;this.objects=b??[],o=y.depth,h=y.asTree,h&&(this.depth=o,this.objects=this.constructor.groupObjects(this.objects,{asTree:h,depth:this.depth+1}))}return x.groupObjects=function(b,y){var h,o,e,a,d,i,u,s,n;for(b==null&&(b=[]),n=y??{},e=n.depth,h=n.asTree,h&&e==null&&(e=0),s=[],d=0,i=b.length;i>d;d++){if(u=b[d],a){if(typeof u.canBeGrouped=="function"&&u.canBeGrouped(e)&&(typeof(o=a[a.length-1]).canBeGroupedWith=="function"&&o.canBeGroupedWith(u,e))){a.push(u);continue}s.push(new this(a,{depth:e,asTree:h})),a=null}typeof u.canBeGrouped=="function"&&u.canBeGrouped(e)?a=[u]:s.push(u)}return a&&s.push(new this(a,{depth:e,asTree:h})),s},x.prototype.getObjects=function(){return this.objects},x.prototype.getDepth=function(){return this.depth},x.prototype.getCacheKey=function(){var b,y,h,o,e;for(y=["objectGroup"],e=this.getObjects(),b=0,h=e.length;h>b;b++)o=e[b],y.push(o.getCacheKey());return y.join("/")},x}()}.call(this),function(){var x=function(y,h){function o(){this.constructor=y}for(var e in h)b.call(h,e)&&(y[e]=h[e]);return o.prototype=h.prototype,y.prototype=new o,y.__super__=h.prototype,y},b={}.hasOwnProperty;g.ObjectMap=function(y){function h(o){var e,a,d,i,u;for(o==null&&(o=[]),this.objects={},d=0,i=o.length;i>d;d++)u=o[d],a=JSON.stringify(u),(e=this.objects)[a]==null&&(e[a]=u)}return x(h,y),h.prototype.find=function(o){var e;return e=JSON.stringify(o),this.objects[e]},h}(g.BasicObject)}.call(this),function(){g.ElementStore=function(){function x(y){this.reset(y)}var b;return x.prototype.add=function(y){var h;return h=b(y),this.elements[h]=y},x.prototype.remove=function(y){var h,o;return h=b(y),(o=this.elements[h])?(delete this.elements[h],o):void 0},x.prototype.reset=function(y){var h,o,e;for(y==null&&(y=[]),this.elements={},o=0,e=y.length;e>o;o++)h=y[o],this.add(h);return y},b=function(y){return y.dataset.trixStoreKey},x}()}.call(this),function(){}.call(this),function(){var x=function(y,h){function o(){this.constructor=y}for(var e in h)b.call(h,e)&&(y[e]=h[e]);return o.prototype=h.prototype,y.prototype=new o,y.__super__=h.prototype,y},b={}.hasOwnProperty;g.Operation=function(y){function h(){return h.__super__.constructor.apply(this,arguments)}return x(h,y),h.prototype.isPerforming=function(){return this.performing===!0},h.prototype.hasPerformed=function(){return this.performed===!0},h.prototype.hasSucceeded=function(){return this.performed&&this.succeeded},h.prototype.hasFailed=function(){return this.performed&&!this.succeeded},h.prototype.getPromise=function(){return this.promise!=null?this.promise:this.promise=new Promise(function(o){return function(e,a){return o.performing=!0,o.perform(function(d,i){return o.succeeded=d,o.performing=!1,o.performed=!0,o.succeeded?e(i):a(i)})}}(this))},h.prototype.perform=function(o){return o(!1)},h.prototype.release=function(){var o;return(o=this.promise)!=null&&typeof o.cancel=="function"&&o.cancel(),this.promise=null,this.performing=null,this.performed=null,this.succeeded=null},h.proxyMethod("getPromise().then"),h.proxyMethod("getPromise().catch"),h}(g.BasicObject)}.call(this),function(){var x,b,y,h,o,e=function(d,i){function u(){this.constructor=d}for(var s in i)a.call(i,s)&&(d[s]=i[s]);return u.prototype=i.prototype,d.prototype=new u,d.__super__=i.prototype,d},a={}.hasOwnProperty;g.UTF16String=function(d){function i(u,s){this.ucs2String=u,this.codepoints=s,this.length=this.codepoints.length,this.ucs2Length=this.ucs2String.length}return e(i,d),i.box=function(u){return u==null&&(u=""),u instanceof this?u:this.fromUCS2String(u?.toString())},i.fromUCS2String=function(u){return new this(u,h(u))},i.fromCodepoints=function(u){return new this(o(u),u)},i.prototype.offsetToUCS2Offset=function(u){return o(this.codepoints.slice(0,Math.max(0,u))).length},i.prototype.offsetFromUCS2Offset=function(u){return h(this.ucs2String.slice(0,Math.max(0,u))).length},i.prototype.slice=function(){var u;return this.constructor.fromCodepoints((u=this.codepoints).slice.apply(u,arguments))},i.prototype.charAt=function(u){return this.slice(u,u+1)},i.prototype.isEqualTo=function(u){return this.constructor.box(u).ucs2String===this.ucs2String},i.prototype.toJSON=function(){return this.ucs2String},i.prototype.getCacheKey=function(){return this.ucs2String},i.prototype.toString=function(){return this.ucs2String},i}(g.BasicObject),x=(typeof Array.from=="function"?Array.from("\u{1F47C}").length:void 0)===1,b=(typeof" ".codePointAt=="function"?" ".codePointAt(0):void 0)!=null,y=(typeof String.fromCodePoint=="function"?String.fromCodePoint(32,128124):void 0)===" \u{1F47C}",h=x&&b?function(d){return Array.from(d).map(function(i){return i.codePointAt(0)})}:function(d){var i,u,s,n,p;for(n=[],i=0,s=d.length;s>i;)p=d.charCodeAt(i++),p>=55296&&56319>=p&&s>i&&(u=d.charCodeAt(i++),(64512&u)===56320?p=((1023&p)<<10)+(1023&u)+65536:i--),n.push(p);return n},o=y?function(d){return String.fromCodePoint.apply(String,d)}:function(d){var i,u,s;return i=function(){var n,p,c;for(c=[],n=0,p=d.length;p>n;n++)s=d[n],u="",s>65535&&(s-=65536,u+=String.fromCharCode(s>>>10&1023|55296),s=56320|1023&s),c.push(u+String.fromCharCode(s));return c}(),i.join("")}}.call(this),function(){}.call(this),function(){}.call(this),function(){g.config.lang={attachFiles:"Attach Files",bold:"Bold",bullets:"Bullets",byte:"Byte",bytes:"Bytes",captionPlaceholder:"Add a caption\u2026",code:"Code",heading1:"Heading",indent:"Increase Level",italic:"Italic",link:"Link",numbers:"Numbers",outdent:"Decrease Level",quote:"Quote",redo:"Redo",remove:"Remove",strike:"Strikethrough",undo:"Undo",unlink:"Unlink",url:"URL",urlPlaceholder:"Enter a URL\u2026",GB:"GB",KB:"KB",MB:"MB",PB:"PB",TB:"TB"}}.call(this),function(){g.config.css={attachment:"attachment",attachmentCaption:"attachment__caption",attachmentCaptionEditor:"attachment__caption-editor",attachmentMetadata:"attachment__metadata",attachmentMetadataContainer:"attachment__metadata-container",attachmentName:"attachment__name",attachmentProgress:"attachment__progress",attachmentSize:"attachment__size",attachmentToolbar:"attachment__toolbar",attachmentGallery:"attachment-gallery"}}.call(this),function(){var x;g.config.blockAttributes=x={default:{tagName:"div",parse:!1},quote:{tagName:"blockquote",nestable:!0},heading1:{tagName:"h1",terminal:!0,breakOnReturn:!0,group:!1},code:{tagName:"pre",terminal:!0,text:{plaintext:!0}},bulletList:{tagName:"ul",parse:!1},bullet:{tagName:"li",listAttribute:"bulletList",group:!1,nestable:!0,test:function(b){return g.tagName(b.parentNode)===x[this.listAttribute].tagName}},numberList:{tagName:"ol",parse:!1},number:{tagName:"li",listAttribute:"numberList",group:!1,nestable:!0,test:function(b){return g.tagName(b.parentNode)===x[this.listAttribute].tagName}},attachmentGallery:{tagName:"div",exclusive:!0,terminal:!0,parse:!1,group:!1}}}.call(this),function(){var x,b;x=g.config.lang,b=[x.bytes,x.KB,x.MB,x.GB,x.TB,x.PB],g.config.fileSize={prefix:"IEC",precision:2,formatter:function(y){var h,o,e,a,d;switch(y){case 0:return"0 "+x.bytes;case 1:return"1 "+x.byte;default:return h=function(){switch(this.prefix){case"SI":return 1e3;case"IEC":return 1024}}.call(this),o=Math.floor(Math.log(y)/Math.log(h)),e=y/Math.pow(h,o),a=e.toFixed(this.precision),d=a.replace(/0*$/,"").replace(/\.$/,""),d+" "+b[o]}}}}.call(this),function(){g.config.textAttributes={bold:{tagName:"strong",inheritable:!0,parser:function(x){var b;return b=window.getComputedStyle(x),b.fontWeight==="bold"||b.fontWeight>=600}},italic:{tagName:"em",inheritable:!0,parser:function(x){var b;return b=window.getComputedStyle(x),b.fontStyle==="italic"}},href:{groupTagName:"a",parser:function(x){var b,y,h;return b=g.AttachmentView.attachmentSelector,h="a:not("+b+")",(y=g.findClosestElementFromNode(x,{matchingSelector:h}))?y.getAttribute("href"):void 0}},strike:{tagName:"del",inheritable:!0},frozen:{style:{backgroundColor:"highlight"}}}}.call(this),function(){var x,b,y,h,o;o="[data-trix-serialize=false]",h=["contenteditable","data-trix-id","data-trix-store-key","data-trix-mutable","data-trix-placeholder","tabindex"],b="data-trix-serialized-attributes",y="["+b+"]",x=new RegExp("","g"),g.extend({serializers:{"application/json":function(e){var a;if(e instanceof g.Document)a=e;else{if(!(e instanceof HTMLElement))throw new Error("unserializable object");a=g.Document.fromHTML(e.innerHTML)}return a.toSerializableDocument().toJSONString()},"text/html":function(e){var a,d,i,u,s,n,p,c,v,t,r,l,A,f,m,C,S;if(e instanceof g.Document)u=g.DocumentView.render(e);else{if(!(e instanceof HTMLElement))throw new Error("unserializable object");u=e.cloneNode(!0)}for(f=u.querySelectorAll(o),s=0,v=f.length;v>s;s++)i=f[s],g.removeNode(i);for(n=0,t=h.length;t>n;n++)for(a=h[n],m=u.querySelectorAll("["+a+"]"),p=0,r=m.length;r>p;p++)i=m[p],i.removeAttribute(a);for(C=u.querySelectorAll(y),c=0,l=C.length;l>c;c++){i=C[c];try{d=JSON.parse(i.getAttribute(b)),i.removeAttribute(b);for(A in d)S=d[A],i.setAttribute(A,S)}catch{}}return u.innerHTML.replace(x,"")}},deserializers:{"application/json":function(e){return g.Document.fromJSONString(e)},"text/html":function(e){return g.Document.fromHTML(e)}},serializeToContentType:function(e,a){var d;if(d=g.serializers[a])return d(e);throw new Error("unknown content type: "+a)},deserializeFromContentType:function(e,a){var d;if(d=g.deserializers[a])return d(e);throw new Error("unknown content type: "+a)}})}.call(this),function(){var x;x=g.config.lang,g.config.toolbar={getDefaultHTML:function(){return`
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
`}}}.call(this),function(){g.config.undoInterval=5e3}.call(this),function(){g.config.attachments={preview:{presentation:"gallery",caption:{name:!0,size:!0}},file:{caption:{size:!0}}}}.call(this),function(){g.config.keyNames={8:"backspace",9:"tab",13:"return",27:"escape",37:"left",39:"right",46:"delete",68:"d",72:"h",79:"o"}}.call(this),function(){g.config.input={level2Enabled:!0,getLevel:function(){return this.level2Enabled&&g.browser.supportsInputEvents?2:0},pickFiles:function(x){var b;return b=g.makeElement("input",{type:"file",multiple:!0,hidden:!0,id:this.fileInputId}),b.addEventListener("change",function(){return x(b.files),g.removeNode(b)}),g.removeNode(document.getElementById(this.fileInputId)),document.body.appendChild(b),b.click()},fileInputId:"trix-file-input-"+Date.now().toString(16)}}.call(this),function(){}.call(this),function(){g.registerElement("trix-toolbar",{defaultCSS:`%t { + display: block; +} + +%t { + white-space: nowrap; +} + +%t [data-trix-dialog] { + display: none; +} + +%t [data-trix-dialog][data-trix-active] { + display: block; +} + +%t [data-trix-dialog] [data-trix-validate]:invalid { + background-color: #ffdddd; +}`,initialize:function(){return this.innerHTML===""?this.innerHTML=g.config.toolbar.getDefaultHTML():void 0}})}.call(this),function(){var x=function(h,o){function e(){this.constructor=h}for(var a in o)b.call(o,a)&&(h[a]=o[a]);return e.prototype=o.prototype,h.prototype=new e,h.__super__=o.prototype,h},b={}.hasOwnProperty,y=[].indexOf||function(h){for(var o=0,e=this.length;e>o;o++)if(o in this&&this[o]===h)return o;return-1};g.ObjectView=function(h){function o(e,a){this.object=e,this.options=a??{},this.childViews=[],this.rootView=this}return x(o,h),o.prototype.getNodes=function(){var e,a,d,i,u;for(this.nodes==null&&(this.nodes=this.createNodes()),i=this.nodes,u=[],e=0,a=i.length;a>e;e++)d=i[e],u.push(d.cloneNode(!0));return u},o.prototype.invalidate=function(){var e;return this.nodes=null,this.childViews=[],(e=this.parentView)!=null?e.invalidate():void 0},o.prototype.invalidateViewForObject=function(e){var a;return(a=this.findViewForObject(e))!=null?a.invalidate():void 0},o.prototype.findOrCreateCachedChildView=function(e,a){var d;return(d=this.getCachedViewForObject(a))?this.recordChildView(d):(d=this.createChildView.apply(this,arguments),this.cacheViewForObject(d,a)),d},o.prototype.createChildView=function(e,a,d){var i;return d==null&&(d={}),a instanceof g.ObjectGroup&&(d.viewClass=e,e=g.ObjectGroupView),i=new e(a,d),this.recordChildView(i)},o.prototype.recordChildView=function(e){return e.parentView=this,e.rootView=this.rootView,this.childViews.push(e),e},o.prototype.getAllChildViews=function(){var e,a,d,i,u;for(u=[],i=this.childViews,a=0,d=i.length;d>a;a++)e=i[a],u.push(e),u=u.concat(e.getAllChildViews());return u},o.prototype.findElement=function(){return this.findElementForObject(this.object)},o.prototype.findElementForObject=function(e){var a;return(a=e?.id)?this.rootView.element.querySelector("[data-trix-id='"+a+"']"):void 0},o.prototype.findViewForObject=function(e){var a,d,i,u;for(i=this.getAllChildViews(),a=0,d=i.length;d>a;a++)if(u=i[a],u.object===e)return u},o.prototype.getViewCache=function(){return this.rootView!==this?this.rootView.getViewCache():this.isViewCachingEnabled()?this.viewCache!=null?this.viewCache:this.viewCache={}:void 0},o.prototype.isViewCachingEnabled=function(){return this.shouldCacheViews!==!1},o.prototype.enableViewCaching=function(){return this.shouldCacheViews=!0},o.prototype.disableViewCaching=function(){return this.shouldCacheViews=!1},o.prototype.getCachedViewForObject=function(e){var a;return(a=this.getViewCache())!=null?a[e.getCacheKey()]:void 0},o.prototype.cacheViewForObject=function(e,a){var d;return(d=this.getViewCache())!=null?d[a.getCacheKey()]=e:void 0},o.prototype.garbageCollectCachedViews=function(){var e,a,d,i,u,s;if(e=this.getViewCache()){s=this.getAllChildViews().concat(this),d=function(){var n,p,c;for(c=[],n=0,p=s.length;p>n;n++)u=s[n],c.push(u.object.getCacheKey());return c}(),i=[];for(a in e)y.call(d,a)<0&&i.push(delete e[a]);return i}},o}(g.BasicObject)}.call(this),function(){var x=function(y,h){function o(){this.constructor=y}for(var e in h)b.call(h,e)&&(y[e]=h[e]);return o.prototype=h.prototype,y.prototype=new o,y.__super__=h.prototype,y},b={}.hasOwnProperty;g.ObjectGroupView=function(y){function h(){h.__super__.constructor.apply(this,arguments),this.objectGroup=this.object,this.viewClass=this.options.viewClass,delete this.options.viewClass}return x(h,y),h.prototype.getChildViews=function(){var o,e,a,d;if(!this.childViews.length)for(d=this.objectGroup.getObjects(),o=0,e=d.length;e>o;o++)a=d[o],this.findOrCreateCachedChildView(this.viewClass,a,this.options);return this.childViews},h.prototype.createNodes=function(){var o,e,a,d,i,u,s,n,p;for(o=this.createContainerElement(),s=this.getChildViews(),e=0,d=s.length;d>e;e++)for(p=s[e],n=p.getNodes(),a=0,i=n.length;i>a;a++)u=n[a],o.appendChild(u);return[o]},h.prototype.createContainerElement=function(o){return o==null&&(o=this.objectGroup.getDepth()),this.getChildViews()[0].createContainerElement(o)},h}(g.ObjectView)}.call(this),function(){var x=function(y,h){function o(){this.constructor=y}for(var e in h)b.call(h,e)&&(y[e]=h[e]);return o.prototype=h.prototype,y.prototype=new o,y.__super__=h.prototype,y},b={}.hasOwnProperty;g.Controller=function(y){function h(){return h.__super__.constructor.apply(this,arguments)}return x(h,y),h}(g.BasicObject)}.call(this),function(){var x,b,y,h,o,e,a=function(s,n){return function(){return s.apply(n,arguments)}},d=function(s,n){function p(){this.constructor=s}for(var c in n)i.call(n,c)&&(s[c]=n[c]);return p.prototype=n.prototype,s.prototype=new p,s.__super__=n.prototype,s},i={}.hasOwnProperty,u=[].indexOf||function(s){for(var n=0,p=this.length;p>n;n++)if(n in this&&this[n]===s)return n;return-1};x=g.findClosestElementFromNode,y=g.nodeIsEmptyTextNode,b=g.nodeIsBlockStartComment,h=g.normalizeSpaces,o=g.summarizeStringChange,e=g.tagName,g.MutationObserver=function(s){function n(r){this.element=r,this.didMutate=a(this.didMutate,this),this.observer=new window.MutationObserver(this.didMutate),this.start()}var p,c,v,t;return d(n,s),c="data-trix-mutable",v="["+c+"]",t={attributes:!0,childList:!0,characterData:!0,characterDataOldValue:!0,subtree:!0},n.prototype.start=function(){return this.reset(),this.observer.observe(this.element,t)},n.prototype.stop=function(){return this.observer.disconnect()},n.prototype.didMutate=function(r){var l,A;return(l=this.mutations).push.apply(l,this.findSignificantMutations(r)),this.mutations.length?((A=this.delegate)!=null&&typeof A.elementDidMutate=="function"&&A.elementDidMutate(this.getMutationSummary()),this.reset()):void 0},n.prototype.reset=function(){return this.mutations=[]},n.prototype.findSignificantMutations=function(r){var l,A,f,m;for(m=[],l=0,A=r.length;A>l;l++)f=r[l],this.mutationIsSignificant(f)&&m.push(f);return m},n.prototype.mutationIsSignificant=function(r){var l,A,f,m;if(this.nodeIsMutable(r.target))return!1;for(m=this.nodesModifiedByMutation(r),l=0,A=m.length;A>l;l++)if(f=m[l],this.nodeIsSignificant(f))return!0;return!1},n.prototype.nodeIsSignificant=function(r){return r!==this.element&&!this.nodeIsMutable(r)&&!y(r)},n.prototype.nodeIsMutable=function(r){return x(r,{matchingSelector:v})},n.prototype.nodesModifiedByMutation=function(r){var l;switch(l=[],r.type){case"attributes":r.attributeName!==c&&l.push(r.target);break;case"characterData":l.push(r.target.parentNode),l.push(r.target);break;case"childList":l.push.apply(l,r.addedNodes),l.push.apply(l,r.removedNodes)}return l},n.prototype.getMutationSummary=function(){return this.getTextMutationSummary()},n.prototype.getTextMutationSummary=function(){var r,l,A,f,m,C,S,L,O,D,R;for(L=this.getTextChangesFromCharacterData(),A=L.additions,m=L.deletions,R=this.getTextChangesFromChildList(),O=R.additions,C=0,S=O.length;S>C;C++)l=O[C],u.call(A,l)<0&&A.push(l);return m.push.apply(m,R.deletions),D={},(r=A.join(""))&&(D.textAdded=r),(f=m.join(""))&&(D.textDeleted=f),D},n.prototype.getMutationsByType=function(r){var l,A,f,m,C;for(m=this.mutations,C=[],l=0,A=m.length;A>l;l++)f=m[l],f.type===r&&C.push(f);return C},n.prototype.getTextChangesFromChildList=function(){var r,l,A,f,m,C,S,L,O,D,R;for(r=[],S=[],C=this.getMutationsByType("childList"),l=0,f=C.length;f>l;l++)m=C[l],r.push.apply(r,m.addedNodes),S.push.apply(S,m.removedNodes);return L=r.length===0&&S.length===1&&b(S[0]),L?(D=[],R=[` +`]):(D=p(r),R=p(S)),{additions:function(){var E,w,k;for(k=[],A=E=0,w=D.length;w>E;A=++E)O=D[A],O!==R[A]&&k.push(h(O));return k}(),deletions:function(){var E,w,k;for(k=[],A=E=0,w=R.length;w>E;A=++E)O=R[A],O!==D[A]&&k.push(h(O));return k}()}},n.prototype.getTextChangesFromCharacterData=function(){var r,l,A,f,m,C,S,L;return l=this.getMutationsByType("characterData"),l.length&&(L=l[0],A=l[l.length-1],m=h(L.oldValue),f=h(A.target.data),C=o(m,f),r=C.added,S=C.removed),{additions:r?[r]:[],deletions:S?[S]:[]}},p=function(r){var l,A,f,m;for(r==null&&(r=[]),m=[],l=0,A=r.length;A>l;l++)switch(f=r[l],f.nodeType){case Node.TEXT_NODE:m.push(f.data);break;case Node.ELEMENT_NODE:e(f)==="br"?m.push(` +`):m.push.apply(m,p(f.childNodes))}return m},n}(g.BasicObject)}.call(this),function(){var x=function(y,h){function o(){this.constructor=y}for(var e in h)b.call(h,e)&&(y[e]=h[e]);return o.prototype=h.prototype,y.prototype=new o,y.__super__=h.prototype,y},b={}.hasOwnProperty;g.FileVerificationOperation=function(y){function h(o){this.file=o}return x(h,y),h.prototype.perform=function(o){var e;return e=new FileReader,e.onerror=function(){return o(!1)},e.onload=function(a){return function(){e.onerror=null;try{e.abort()}catch{}return o(!0,a.file)}}(this),e.readAsArrayBuffer(this.file)},h}(g.Operation)}.call(this),function(){var x,b,y=function(o,e){function a(){this.constructor=o}for(var d in e)h.call(e,d)&&(o[d]=e[d]);return a.prototype=e.prototype,o.prototype=new a,o.__super__=e.prototype,o},h={}.hasOwnProperty;x=g.handleEvent,b=g.innerElementIsActive,g.InputController=function(o){function e(a){var d;this.element=a,this.mutationObserver=new g.MutationObserver(this.element),this.mutationObserver.delegate=this;for(d in this.events)x(d,{onElement:this.element,withCallback:this.handlerFor(d)})}return y(e,o),e.prototype.events={},e.prototype.elementDidMutate=function(){},e.prototype.editorWillSyncDocumentView=function(){return this.mutationObserver.stop()},e.prototype.editorDidSyncDocumentView=function(){return this.mutationObserver.start()},e.prototype.requestRender=function(){var a;return(a=this.delegate)!=null&&typeof a.inputControllerDidRequestRender=="function"?a.inputControllerDidRequestRender():void 0},e.prototype.requestReparse=function(){var a;return(a=this.delegate)!=null&&typeof a.inputControllerDidRequestReparse=="function"&&a.inputControllerDidRequestReparse(),this.requestRender()},e.prototype.attachFiles=function(a){var d,i;return i=function(){var u,s,n;for(n=[],u=0,s=a.length;s>u;u++)d=a[u],n.push(new g.FileVerificationOperation(d));return n}(),Promise.all(i).then(function(u){return function(s){return u.handleInput(function(){var n,p;return(n=this.delegate)!=null&&n.inputControllerWillAttachFiles(),(p=this.responder)!=null&&p.insertFiles(s),this.requestRender()})}}(this))},e.prototype.handlerFor=function(a){return function(d){return function(i){return i.defaultPrevented?void 0:d.handleInput(function(){return b(this.element)?void 0:(this.eventName=a,this.events[a].call(this,i))})}}(this)},e.prototype.handleInput=function(a){var d,i;try{return(d=this.delegate)!=null&&d.inputControllerWillHandleInput(),a.call(this)}finally{(i=this.delegate)!=null&&i.inputControllerDidHandleInput()}},e.prototype.createLinkHTML=function(a,d){var i;return i=document.createElement("a"),i.href=a,i.textContent=d??a,i.outerHTML},e}(g.BasicObject)}.call(this),function(){var x,b,y,h,o,e,a,d,i,u,s,n,p,c=function(r,l){function A(){this.constructor=r}for(var f in l)v.call(l,f)&&(r[f]=l[f]);return A.prototype=l.prototype,r.prototype=new A,r.__super__=l.prototype,r},v={}.hasOwnProperty,t=[].indexOf||function(r){for(var l=0,A=this.length;A>l;l++)if(l in this&&this[l]===r)return l;return-1};i=g.makeElement,u=g.objectsAreEqual,p=g.tagName,b=g.browser,a=g.keyEventIsKeyboardCommand,h=g.dataTransferIsWritable,y=g.dataTransferIsPlainText,d=g.config.keyNames,g.Level0InputController=function(r){function l(){l.__super__.constructor.apply(this,arguments),this.resetInputSummary()}var A;return c(l,r),A=0,l.prototype.setInputSummary=function(f){var m,C;f==null&&(f={}),this.inputSummary.eventName=this.eventName;for(m in f)C=f[m],this.inputSummary[m]=C;return this.inputSummary},l.prototype.resetInputSummary=function(){return this.inputSummary={}},l.prototype.reset=function(){return this.resetInputSummary(),g.selectionChangeObserver.reset()},l.prototype.elementDidMutate=function(f){var m;return this.isComposing()?(m=this.delegate)!=null&&typeof m.inputControllerDidAllowUnhandledInput=="function"?m.inputControllerDidAllowUnhandledInput():void 0:this.handleInput(function(){return this.mutationIsSignificant(f)&&(this.mutationIsExpected(f)?this.requestRender():this.requestReparse()),this.reset()})},l.prototype.mutationIsExpected=function(f){var m,C,S,L,O,D,R,E,w,k;return R=f.textAdded,E=f.textDeleted,this.inputSummary.preferDocument?!0:(m=R!=null?R===this.inputSummary.textAdded:!this.inputSummary.textAdded,C=E!=null?this.inputSummary.didDelete:!this.inputSummary.didDelete,w=(R===` +`||R===` +`)&&!m,k=E===` +`&&!C,D=w&&!k||k&&!w,D&&(L=this.getSelectedRange())&&(S=w?R.replace(/\n$/,"").length||-1:R?.length||1,(O=this.responder)!=null?O.positionIsBlockBreak(L[1]+S):void 0)?!0:m&&C)},l.prototype.mutationIsSignificant=function(f){var m,C,S;return S=Object.keys(f).length>0,m=((C=this.compositionInput)!=null?C.getEndData():void 0)==="",S||!m},l.prototype.events={keydown:function(f){var m,C,S,L,O,D,R,E,w;if(this.isComposing()||this.resetInputSummary(),this.inputSummary.didInput=!0,L=d[f.keyCode]){for(C=this.keys,E=["ctrl","alt","shift","meta"],S=0,D=E.length;D>S;S++)R=E[S],f[R+"Key"]&&(R==="ctrl"&&(R="control"),C=C?.[R]);C?.[L]!=null&&(this.setInputSummary({keyName:L}),g.selectionChangeObserver.reset(),C[L].call(this,f))}return a(f)&&(m=String.fromCharCode(f.keyCode).toLowerCase())&&(O=function(){var k,T,N,P;for(N=["alt","shift"],P=[],k=0,T=N.length;T>k;k++)R=N[k],f[R+"Key"]&&P.push(R);return P}(),O.push(m),(w=this.delegate)!=null?w.inputControllerDidReceiveKeyboardCommand(O):void 0)?f.preventDefault():void 0},keypress:function(f){var m,C,S;if(this.inputSummary.eventName==null&&!f.metaKey&&(!f.ctrlKey||f.altKey))return(S=n(f))?((m=this.delegate)!=null&&m.inputControllerWillPerformTyping(),(C=this.responder)!=null&&C.insertString(S),this.setInputSummary({textAdded:S,didDelete:this.selectionIsExpanded()})):void 0},textInput:function(f){var m,C,S,L;return m=f.data,L=this.inputSummary.textAdded,L&&L!==m&&L.toUpperCase()===m?(C=this.getSelectedRange(),this.setSelectedRange([C[0],C[1]+L.length]),(S=this.responder)!=null&&S.insertString(m),this.setInputSummary({textAdded:m}),this.setSelectedRange(C)):void 0},dragenter:function(f){return f.preventDefault()},dragstart:function(f){var m,C;return C=f.target,this.serializeSelectionToDataTransfer(f.dataTransfer),this.draggedRange=this.getSelectedRange(),(m=this.delegate)!=null&&typeof m.inputControllerDidStartDrag=="function"?m.inputControllerDidStartDrag():void 0},dragover:function(f){var m,C;return!this.draggedRange&&!this.canAcceptDataTransfer(f.dataTransfer)||(f.preventDefault(),m={x:f.clientX,y:f.clientY},u(m,this.draggingPoint))?void 0:(this.draggingPoint=m,(C=this.delegate)!=null&&typeof C.inputControllerDidReceiveDragOverPoint=="function"?C.inputControllerDidReceiveDragOverPoint(this.draggingPoint):void 0)},dragend:function(){var f;return(f=this.delegate)!=null&&typeof f.inputControllerDidCancelDrag=="function"&&f.inputControllerDidCancelDrag(),this.draggedRange=null,this.draggingPoint=null},drop:function(f){var m,C,S,L,O,D,R,E,w;return f.preventDefault(),S=(O=f.dataTransfer)!=null?O.files:void 0,L={x:f.clientX,y:f.clientY},(D=this.responder)!=null&&D.setLocationRangeFromPointRange(L),S?.length?this.attachFiles(S):this.draggedRange?((R=this.delegate)!=null&&R.inputControllerWillMoveText(),(E=this.responder)!=null&&E.moveTextFromRange(this.draggedRange),this.draggedRange=null,this.requestRender()):(C=f.dataTransfer.getData("application/x-trix-document"))&&(m=g.Document.fromJSONString(C),(w=this.responder)!=null&&w.insertDocument(m),this.requestRender()),this.draggedRange=null,this.draggingPoint=null},cut:function(f){var m,C;return(m=this.responder)!=null&&m.selectionIsExpanded()&&(this.serializeSelectionToDataTransfer(f.clipboardData)&&f.preventDefault(),(C=this.delegate)!=null&&C.inputControllerWillCutText(),this.deleteInDirection("backward"),f.defaultPrevented)?this.requestRender():void 0},copy:function(f){var m;return(m=this.responder)!=null&&m.selectionIsExpanded()&&this.serializeSelectionToDataTransfer(f.clipboardData)?f.preventDefault():void 0},paste:function(f){var m,C,S,L,O,D,R,E,w,k,T,N,P,_,F,B,M,U,H,z,j,G,K;return m=(E=f.clipboardData)!=null?E:f.testClipboardData,R={clipboard:m},m==null||s(f)?void this.getPastedHTMLUsingHiddenElement(function(J){return function(tt){var $,X,Y;return R.type="text/html",R.html=tt,($=J.delegate)!=null&&$.inputControllerWillPaste(R),(X=J.responder)!=null&&X.insertHTML(R.html),J.requestRender(),(Y=J.delegate)!=null?Y.inputControllerDidPaste(R):void 0}}(this)):((L=m.getData("URL"))?(R.type="text/html",K=(D=m.getData("public.url-name"))?g.squishBreakableWhitespace(D).trim():L,R.html=this.createLinkHTML(L,K),(w=this.delegate)!=null&&w.inputControllerWillPaste(R),this.setInputSummary({textAdded:K,didDelete:this.selectionIsExpanded()}),(F=this.responder)!=null&&F.insertHTML(R.html),this.requestRender(),(B=this.delegate)!=null&&B.inputControllerDidPaste(R)):y(m)?(R.type="text/plain",R.string=m.getData("text/plain"),(M=this.delegate)!=null&&M.inputControllerWillPaste(R),this.setInputSummary({textAdded:R.string,didDelete:this.selectionIsExpanded()}),(U=this.responder)!=null&&U.insertString(R.string),this.requestRender(),(H=this.delegate)!=null&&H.inputControllerDidPaste(R)):(O=m.getData("text/html"))?(R.type="text/html",R.html=O,(z=this.delegate)!=null&&z.inputControllerWillPaste(R),(j=this.responder)!=null&&j.insertHTML(R.html),this.requestRender(),(G=this.delegate)!=null&&G.inputControllerDidPaste(R)):t.call(m.types,"Files")>=0&&(S=(k=m.items)!=null&&(T=k[0])!=null&&typeof T.getAsFile=="function"?T.getAsFile():void 0)&&(!S.name&&(C=o(S))&&(S.name="pasted-file-"+ ++A+"."+C),R.type="File",R.file=S,(N=this.delegate)!=null&&N.inputControllerWillAttachFiles(),(P=this.responder)!=null&&P.insertFile(R.file),this.requestRender(),(_=this.delegate)!=null&&_.inputControllerDidPaste(R)),f.preventDefault())},compositionstart:function(f){return this.getCompositionInput().start(f.data)},compositionupdate:function(f){return this.getCompositionInput().update(f.data)},compositionend:function(f){return this.getCompositionInput().end(f.data)},beforeinput:function(){return this.inputSummary.didInput=!0},input:function(f){return this.inputSummary.didInput=!0,f.stopPropagation()}},l.prototype.keys={backspace:function(f){var m;return(m=this.delegate)!=null&&m.inputControllerWillPerformTyping(),this.deleteInDirection("backward",f)},delete:function(f){var m;return(m=this.delegate)!=null&&m.inputControllerWillPerformTyping(),this.deleteInDirection("forward",f)},return:function(){var f,m;return this.setInputSummary({preferDocument:!0}),(f=this.delegate)!=null&&f.inputControllerWillPerformTyping(),(m=this.responder)!=null?m.insertLineBreak():void 0},tab:function(f){var m,C;return(m=this.responder)!=null&&m.canIncreaseNestingLevel()?((C=this.responder)!=null&&C.increaseNestingLevel(),this.requestRender(),f.preventDefault()):void 0},left:function(f){var m;return this.selectionIsInCursorTarget()?(f.preventDefault(),(m=this.responder)!=null?m.moveCursorInDirection("backward"):void 0):void 0},right:function(f){var m;return this.selectionIsInCursorTarget()?(f.preventDefault(),(m=this.responder)!=null?m.moveCursorInDirection("forward"):void 0):void 0},control:{d:function(f){var m;return(m=this.delegate)!=null&&m.inputControllerWillPerformTyping(),this.deleteInDirection("forward",f)},h:function(f){var m;return(m=this.delegate)!=null&&m.inputControllerWillPerformTyping(),this.deleteInDirection("backward",f)},o:function(f){var m,C;return f.preventDefault(),(m=this.delegate)!=null&&m.inputControllerWillPerformTyping(),(C=this.responder)!=null&&C.insertString(` +`,{updatePosition:!1}),this.requestRender()}},shift:{return:function(f){var m,C;return(m=this.delegate)!=null&&m.inputControllerWillPerformTyping(),(C=this.responder)!=null&&C.insertString(` +`),this.requestRender(),f.preventDefault()},tab:function(f){var m,C;return(m=this.responder)!=null&&m.canDecreaseNestingLevel()?((C=this.responder)!=null&&C.decreaseNestingLevel(),this.requestRender(),f.preventDefault()):void 0},left:function(f){return this.selectionIsInCursorTarget()?(f.preventDefault(),this.expandSelectionInDirection("backward")):void 0},right:function(f){return this.selectionIsInCursorTarget()?(f.preventDefault(),this.expandSelectionInDirection("forward")):void 0}},alt:{backspace:function(){var f;return this.setInputSummary({preferDocument:!1}),(f=this.delegate)!=null?f.inputControllerWillPerformTyping():void 0}},meta:{backspace:function(){var f;return this.setInputSummary({preferDocument:!1}),(f=this.delegate)!=null?f.inputControllerWillPerformTyping():void 0}}},l.prototype.getCompositionInput=function(){return this.isComposing()?this.compositionInput:this.compositionInput=new x(this)},l.prototype.isComposing=function(){return this.compositionInput!=null&&!this.compositionInput.isEnded()},l.prototype.deleteInDirection=function(f,m){var C;return((C=this.responder)!=null?C.deleteInDirection(f):void 0)!==!1?this.setInputSummary({didDelete:!0}):m?(m.preventDefault(),this.requestRender()):void 0},l.prototype.serializeSelectionToDataTransfer=function(f){var m,C;if(h(f))return m=(C=this.responder)!=null?C.getSelectedDocument().toSerializableDocument():void 0,f.setData("application/x-trix-document",JSON.stringify(m)),f.setData("text/html",g.DocumentView.render(m).innerHTML),f.setData("text/plain",m.toString().replace(/\n$/,"")),!0},l.prototype.canAcceptDataTransfer=function(f){var m,C,S,L,O,D;for(D={},L=(S=f?.types)!=null?S:[],m=0,C=L.length;C>m;m++)O=L[m],D[O]=!0;return D.Files||D["application/x-trix-document"]||D["text/html"]||D["text/plain"]},l.prototype.getPastedHTMLUsingHiddenElement=function(f){var m,C,S;return C=this.getSelectedRange(),S={position:"absolute",left:window.pageXOffset+"px",top:window.pageYOffset+"px",opacity:0},m=i({style:S,tagName:"div",editable:!0}),document.body.appendChild(m),m.focus(),requestAnimationFrame(function(L){return function(){var O;return O=m.innerHTML,g.removeNode(m),L.setSelectedRange(C),f(O)}}(this))},l.proxyMethod("responder?.getSelectedRange"),l.proxyMethod("responder?.setSelectedRange"),l.proxyMethod("responder?.expandSelectionInDirection"),l.proxyMethod("responder?.selectionIsInCursorTarget"),l.proxyMethod("responder?.selectionIsExpanded"),l}(g.InputController),o=function(r){var l,A;return(l=r.type)!=null&&(A=l.match(/\/(\w+)$/))!=null?A[1]:void 0},e=(typeof" ".codePointAt=="function"?" ".codePointAt(0):void 0)!=null,n=function(r){var l;return r.key&&e&&r.key.codePointAt(0)===r.keyCode?r.key:(r.which===null?l=r.keyCode:r.which!==0&&r.charCode!==0&&(l=r.charCode),l!=null&&d[l]!=="escape"?g.UTF16String.fromCodepoints([l]).toString():void 0)},s=function(r){var l,A,f,m,C,S,L,O,D,R;if(O=r.clipboardData){if(t.call(O.types,"text/html")>=0){for(D=O.types,f=0,S=D.length;S>f;f++)if(R=D[f],l=/^CorePasteboardFlavorType/.test(R),A=/^dyn\./.test(R)&&O.getData(R),L=l||A)return!0;return!1}return m=t.call(O.types,"com.apple.webarchive")>=0,C=t.call(O.types,"com.apple.flat-rtfd")>=0,m||C}},x=function(r){function l(A){var f;this.inputController=A,f=this.inputController,this.responder=f.responder,this.delegate=f.delegate,this.inputSummary=f.inputSummary,this.data={}}return c(l,r),l.prototype.start=function(A){var f,m;return this.data.start=A,this.isSignificant()?(this.inputSummary.eventName==="keypress"&&this.inputSummary.textAdded&&(f=this.responder)!=null&&f.deleteInDirection("left"),this.selectionIsExpanded()||(this.insertPlaceholder(),this.requestRender()),this.range=(m=this.responder)!=null?m.getSelectedRange():void 0):void 0},l.prototype.update=function(A){var f;return this.data.update=A,this.isSignificant()&&(f=this.selectPlaceholder())?(this.forgetPlaceholder(),this.range=f):void 0},l.prototype.end=function(A){var f,m,C,S;return this.data.end=A,this.isSignificant()?(this.forgetPlaceholder(),this.canApplyToDocument()?(this.setInputSummary({preferDocument:!0,didInput:!1}),(f=this.delegate)!=null&&f.inputControllerWillPerformTyping(),(m=this.responder)!=null&&m.setSelectedRange(this.range),(C=this.responder)!=null&&C.insertString(this.data.end),(S=this.responder)!=null?S.setSelectedRange(this.range[0]+this.data.end.length):void 0):this.data.start!=null||this.data.update!=null?(this.requestReparse(),this.inputController.reset()):void 0):this.inputController.reset()},l.prototype.getEndData=function(){return this.data.end},l.prototype.isEnded=function(){return this.getEndData()!=null},l.prototype.isSignificant=function(){return b.composesExistingText?this.inputSummary.didInput:!0},l.prototype.canApplyToDocument=function(){var A,f;return((A=this.data.start)!=null?A.length:void 0)===0&&((f=this.data.end)!=null?f.length:void 0)>0&&this.range!=null},l.proxyMethod("inputController.setInputSummary"),l.proxyMethod("inputController.requestRender"),l.proxyMethod("inputController.requestReparse"),l.proxyMethod("responder?.selectionIsExpanded"),l.proxyMethod("responder?.insertPlaceholder"),l.proxyMethod("responder?.selectPlaceholder"),l.proxyMethod("responder?.forgetPlaceholder"),l}(g.BasicObject)}.call(this),function(){var x,b,y,h=function(d,i){return function(){return d.apply(i,arguments)}},o=function(d,i){function u(){this.constructor=d}for(var s in i)e.call(i,s)&&(d[s]=i[s]);return u.prototype=i.prototype,d.prototype=new u,d.__super__=i.prototype,d},e={}.hasOwnProperty,a=[].indexOf||function(d){for(var i=0,u=this.length;u>i;i++)if(i in this&&this[i]===d)return i;return-1};x=g.dataTransferIsPlainText,b=g.keyEventIsKeyboardCommand,y=g.objectsAreEqual,g.Level2InputController=function(d){function i(){return this.render=h(this.render,this),i.__super__.constructor.apply(this,arguments)}var u,s,n,p,c,v;return o(i,d),i.prototype.elementDidMutate=function(){var t;return this.scheduledRender?this.composing&&(t=this.delegate)!=null&&typeof t.inputControllerDidAllowUnhandledInput=="function"?t.inputControllerDidAllowUnhandledInput():void 0:this.reparse()},i.prototype.scheduleRender=function(){return this.scheduledRender!=null?this.scheduledRender:this.scheduledRender=requestAnimationFrame(this.render)},i.prototype.render=function(){var t;return cancelAnimationFrame(this.scheduledRender),this.scheduledRender=null,this.composing||(t=this.delegate)!=null&&t.render(),typeof this.afterRender=="function"&&this.afterRender(),this.afterRender=null},i.prototype.reparse=function(){var t;return(t=this.delegate)!=null?t.reparse():void 0},i.prototype.events={keydown:function(t){var r,l,A,f;if(b(t)){if(r=s(t),(f=this.delegate)!=null?f.inputControllerDidReceiveKeyboardCommand(r):void 0)return t.preventDefault()}else if(A=t.key,t.altKey&&(A+="+Alt"),t.shiftKey&&(A+="+Shift"),l=this.keys[A])return this.withEvent(t,l)},paste:function(t){var r,l,A,f,m,C,S,L,O;return n(t)?(t.preventDefault(),this.attachFiles(t.clipboardData.files)):p(t)?(t.preventDefault(),l={type:"text/plain",string:t.clipboardData.getData("text/plain")},(A=this.delegate)!=null&&A.inputControllerWillPaste(l),(f=this.responder)!=null&&f.insertString(l.string),this.render(),(m=this.delegate)!=null?m.inputControllerDidPaste(l):void 0):(r=(C=t.clipboardData)!=null?C.getData("URL"):void 0)?(t.preventDefault(),l={type:"text/html",html:this.createLinkHTML(r)},(S=this.delegate)!=null&&S.inputControllerWillPaste(l),(L=this.responder)!=null&&L.insertHTML(l.html),this.render(),(O=this.delegate)!=null?O.inputControllerDidPaste(l):void 0):void 0},beforeinput:function(t){var r;return(r=this.inputTypes[t.inputType])?(this.withEvent(t,r),this.scheduleRender()):void 0},input:function(){return g.selectionChangeObserver.reset()},dragstart:function(t){var r,l;return(r=this.responder)!=null&&r.selectionContainsAttachments()?(t.dataTransfer.setData("application/x-trix-dragging",!0),this.dragging={range:(l=this.responder)!=null?l.getSelectedRange():void 0,point:c(t)}):void 0},dragenter:function(t){return u(t)?t.preventDefault():void 0},dragover:function(t){var r,l;if(this.dragging){if(t.preventDefault(),r=c(t),!y(r,this.dragging.point))return this.dragging.point=r,(l=this.responder)!=null?l.setLocationRangeFromPointRange(r):void 0}else if(u(t))return t.preventDefault()},drop:function(t){var r,l,A,f;return this.dragging?(t.preventDefault(),(l=this.delegate)!=null&&l.inputControllerWillMoveText(),(A=this.responder)!=null&&A.moveTextFromRange(this.dragging.range),this.dragging=null,this.scheduleRender()):u(t)?(t.preventDefault(),r=c(t),(f=this.responder)!=null&&f.setLocationRangeFromPointRange(r),this.attachFiles(t.dataTransfer.files)):void 0},dragend:function(){var t;return this.dragging?((t=this.responder)!=null&&t.setSelectedRange(this.dragging.range),this.dragging=null):void 0},compositionend:function(){return this.composing?(this.composing=!1,this.scheduleRender()):void 0}},i.prototype.keys={ArrowLeft:function(){var t,r;return(t=this.responder)!=null&&t.shouldManageMovingCursorInDirection("backward")?(this.event.preventDefault(),(r=this.responder)!=null?r.moveCursorInDirection("backward"):void 0):void 0},ArrowRight:function(){var t,r;return(t=this.responder)!=null&&t.shouldManageMovingCursorInDirection("forward")?(this.event.preventDefault(),(r=this.responder)!=null?r.moveCursorInDirection("forward"):void 0):void 0},Backspace:function(){var t,r,l;return(t=this.responder)!=null&&t.shouldManageDeletingInDirection("backward")?(this.event.preventDefault(),(r=this.delegate)!=null&&r.inputControllerWillPerformTyping(),(l=this.responder)!=null&&l.deleteInDirection("backward"),this.render()):void 0},Tab:function(){var t,r;return(t=this.responder)!=null&&t.canIncreaseNestingLevel()?(this.event.preventDefault(),(r=this.responder)!=null&&r.increaseNestingLevel(),this.render()):void 0},"Tab+Shift":function(){var t,r;return(t=this.responder)!=null&&t.canDecreaseNestingLevel()?(this.event.preventDefault(),(r=this.responder)!=null&&r.decreaseNestingLevel(),this.render()):void 0}},i.prototype.inputTypes={deleteByComposition:function(){return this.deleteInDirection("backward",{recordUndoEntry:!1})},deleteByCut:function(){return this.deleteInDirection("backward")},deleteByDrag:function(){return this.event.preventDefault(),this.withTargetDOMRange(function(){var t;return this.deleteByDragRange=(t=this.responder)!=null?t.getSelectedRange():void 0})},deleteCompositionText:function(){return this.deleteInDirection("backward",{recordUndoEntry:!1})},deleteContent:function(){return this.deleteInDirection("backward")},deleteContentBackward:function(){return this.deleteInDirection("backward")},deleteContentForward:function(){return this.deleteInDirection("forward")},deleteEntireSoftLine:function(){return this.deleteInDirection("forward")},deleteHardLineBackward:function(){return this.deleteInDirection("backward")},deleteHardLineForward:function(){return this.deleteInDirection("forward")},deleteSoftLineBackward:function(){return this.deleteInDirection("backward")},deleteSoftLineForward:function(){return this.deleteInDirection("forward")},deleteWordBackward:function(){return this.deleteInDirection("backward")},deleteWordForward:function(){return this.deleteInDirection("forward")},formatBackColor:function(){return this.activateAttributeIfSupported("backgroundColor",this.event.data)},formatBold:function(){return this.toggleAttributeIfSupported("bold")},formatFontColor:function(){return this.activateAttributeIfSupported("color",this.event.data)},formatFontName:function(){return this.activateAttributeIfSupported("font",this.event.data)},formatIndent:function(){var t;return(t=this.responder)!=null&&t.canIncreaseNestingLevel()?this.withTargetDOMRange(function(){var r;return(r=this.responder)!=null?r.increaseNestingLevel():void 0}):void 0},formatItalic:function(){return this.toggleAttributeIfSupported("italic")},formatJustifyCenter:function(){return this.toggleAttributeIfSupported("justifyCenter")},formatJustifyFull:function(){return this.toggleAttributeIfSupported("justifyFull")},formatJustifyLeft:function(){return this.toggleAttributeIfSupported("justifyLeft")},formatJustifyRight:function(){return this.toggleAttributeIfSupported("justifyRight")},formatOutdent:function(){var t;return(t=this.responder)!=null&&t.canDecreaseNestingLevel()?this.withTargetDOMRange(function(){var r;return(r=this.responder)!=null?r.decreaseNestingLevel():void 0}):void 0},formatRemove:function(){return this.withTargetDOMRange(function(){var t,r,l,A;A=[];for(t in(r=this.responder)!=null?r.getCurrentAttributes():void 0)A.push((l=this.responder)!=null?l.removeCurrentAttribute(t):void 0);return A})},formatSetBlockTextDirection:function(){return this.activateAttributeIfSupported("blockDir",this.event.data)},formatSetInlineTextDirection:function(){return this.activateAttributeIfSupported("textDir",this.event.data)},formatStrikeThrough:function(){return this.toggleAttributeIfSupported("strike")},formatSubscript:function(){return this.toggleAttributeIfSupported("sub")},formatSuperscript:function(){return this.toggleAttributeIfSupported("sup")},formatUnderline:function(){return this.toggleAttributeIfSupported("underline")},historyRedo:function(){var t;return(t=this.delegate)!=null?t.inputControllerWillPerformRedo():void 0},historyUndo:function(){var t;return(t=this.delegate)!=null?t.inputControllerWillPerformUndo():void 0},insertCompositionText:function(){return this.composing=!0,this.insertString(this.event.data)},insertFromComposition:function(){return this.composing=!1,this.insertString(this.event.data)},insertFromDrop:function(){var t,r;return(t=this.deleteByDragRange)?(this.deleteByDragRange=null,(r=this.delegate)!=null&&r.inputControllerWillMoveText(),this.withTargetDOMRange(function(){var l;return(l=this.responder)!=null?l.moveTextFromRange(t):void 0})):void 0},insertFromPaste:function(){var t,r,l,A,f,m,C,S,L,O,D;return t=this.event.dataTransfer,f={dataTransfer:t},(r=t.getData("URL"))?(this.event.preventDefault(),f.type="text/html",D=(A=t.getData("public.url-name"))?g.squishBreakableWhitespace(A).trim():r,f.html=this.createLinkHTML(r,D),(m=this.delegate)!=null&&m.inputControllerWillPaste(f),this.withTargetDOMRange(function(){var R;return(R=this.responder)!=null?R.insertHTML(f.html):void 0}),this.afterRender=function(R){return function(){var E;return(E=R.delegate)!=null?E.inputControllerDidPaste(f):void 0}}(this)):x(t)?(f.type="text/plain",f.string=t.getData("text/plain"),(C=this.delegate)!=null&&C.inputControllerWillPaste(f),this.withTargetDOMRange(function(){var R;return(R=this.responder)!=null?R.insertString(f.string):void 0}),this.afterRender=function(R){return function(){var E;return(E=R.delegate)!=null?E.inputControllerDidPaste(f):void 0}}(this)):(l=t.getData("text/html"))?(this.event.preventDefault(),f.type="text/html",f.html=l,(S=this.delegate)!=null&&S.inputControllerWillPaste(f),this.withTargetDOMRange(function(){var R;return(R=this.responder)!=null?R.insertHTML(f.html):void 0}),this.afterRender=function(R){return function(){var E;return(E=R.delegate)!=null?E.inputControllerDidPaste(f):void 0}}(this)):(L=t.files)!=null&&L.length?(f.type="File",f.file=t.files[0],(O=this.delegate)!=null&&O.inputControllerWillPaste(f),this.withTargetDOMRange(function(){var R;return(R=this.responder)!=null?R.insertFile(f.file):void 0}),this.afterRender=function(R){return function(){var E;return(E=R.delegate)!=null?E.inputControllerDidPaste(f):void 0}}(this)):void 0},insertFromYank:function(){return this.insertString(this.event.data)},insertLineBreak:function(){return this.insertString(` +`)},insertLink:function(){return this.activateAttributeIfSupported("href",this.event.data)},insertOrderedList:function(){return this.toggleAttributeIfSupported("number")},insertParagraph:function(){var t;return(t=this.delegate)!=null&&t.inputControllerWillPerformTyping(),this.withTargetDOMRange(function(){var r;return(r=this.responder)!=null?r.insertLineBreak():void 0})},insertReplacementText:function(){return this.insertString(this.event.dataTransfer.getData("text/plain"),{updatePosition:!1})},insertText:function(){var t,r;return this.insertString((t=this.event.data)!=null?t:(r=this.event.dataTransfer)!=null?r.getData("text/plain"):void 0)},insertTranspose:function(){return this.insertString(this.event.data)},insertUnorderedList:function(){return this.toggleAttributeIfSupported("bullet")}},i.prototype.insertString=function(t,r){var l;return t==null&&(t=""),(l=this.delegate)!=null&&l.inputControllerWillPerformTyping(),this.withTargetDOMRange(function(){var A;return(A=this.responder)!=null?A.insertString(t,r):void 0})},i.prototype.toggleAttributeIfSupported=function(t){var r;return a.call(g.getAllAttributeNames(),t)>=0?((r=this.delegate)!=null&&r.inputControllerWillPerformFormatting(t),this.withTargetDOMRange(function(){var l;return(l=this.responder)!=null?l.toggleCurrentAttribute(t):void 0})):void 0},i.prototype.activateAttributeIfSupported=function(t,r){var l;return a.call(g.getAllAttributeNames(),t)>=0?((l=this.delegate)!=null&&l.inputControllerWillPerformFormatting(t),this.withTargetDOMRange(function(){var A;return(A=this.responder)!=null?A.setCurrentAttribute(t,r):void 0})):void 0},i.prototype.deleteInDirection=function(t,r){var l,A,f,m;return f=(r??{recordUndoEntry:!0}).recordUndoEntry,f&&(m=this.delegate)!=null&&m.inputControllerWillPerformTyping(),A=function(C){return function(){var S;return(S=C.responder)!=null?S.deleteInDirection(t):void 0}}(this),(l=this.getTargetDOMRange({minLength:2}))?this.withTargetDOMRange(l,A):A()},i.prototype.withTargetDOMRange=function(t,r){var l;return typeof t=="function"&&(r=t,t=this.getTargetDOMRange()),t?(l=this.responder)!=null?l.withTargetDOMRange(t,r.bind(this)):void 0:(g.selectionChangeObserver.reset(),r.call(this))},i.prototype.getTargetDOMRange=function(t){var r,l,A,f;return A=(t??{minLength:0}).minLength,(f=typeof(r=this.event).getTargetRanges=="function"?r.getTargetRanges():void 0)&&f.length&&(l=v(f[0]),A===0||l.toString().length>=A)?l:void 0},v=function(t){var r;return r=document.createRange(),r.setStart(t.startContainer,t.startOffset),r.setEnd(t.endContainer,t.endOffset),r},i.prototype.withEvent=function(t,r){var l;this.event=t;try{l=r.call(this)}finally{this.event=null}return l},u=function(t){var r,l;return a.call((r=(l=t.dataTransfer)!=null?l.types:void 0)!=null?r:[],"Files")>=0},n=function(t){var r;return(r=t.clipboardData)?a.call(r.types,"Files")>=0&&r.types.length===1&&r.files.length>=1:void 0},p=function(t){var r;return(r=t.clipboardData)?a.call(r.types,"text/plain")>=0&&r.types.length===1:void 0},s=function(t){var r;return r=[],t.altKey&&r.push("alt"),t.shiftKey&&r.push("shift"),r.push(t.key),r},c=function(t){return{x:t.clientX,y:t.clientY}},i}(g.InputController)}.call(this),function(){var x,b,y,h,o,e,a,d,i=function(n,p){return function(){return n.apply(p,arguments)}},u=function(n,p){function c(){this.constructor=n}for(var v in p)s.call(p,v)&&(n[v]=p[v]);return c.prototype=p.prototype,n.prototype=new c,n.__super__=p.prototype,n},s={}.hasOwnProperty;b=g.defer,y=g.handleEvent,e=g.makeElement,d=g.tagName,a=g.config,o=a.lang,x=a.css,h=a.keyNames,g.AttachmentEditorController=function(n){function p(v,t,r,l){this.attachmentPiece=v,this.element=t,this.container=r,this.options=l??{},this.didBlurCaption=i(this.didBlurCaption,this),this.didChangeCaption=i(this.didChangeCaption,this),this.didInputCaption=i(this.didInputCaption,this),this.didKeyDownCaption=i(this.didKeyDownCaption,this),this.didClickActionButton=i(this.didClickActionButton,this),this.didClickToolbar=i(this.didClickToolbar,this),this.attachment=this.attachmentPiece.attachment,d(this.element)==="a"&&(this.element=this.element.firstChild),this.install()}var c;return u(p,n),c=function(v){return function(){var t;return t=v.apply(this,arguments),t.do(),this.undos==null&&(this.undos=[]),this.undos.push(t.undo)}},p.prototype.install=function(){return this.makeElementMutable(),this.addToolbar(),this.attachment.isPreviewable()?this.installCaptionEditor():void 0},p.prototype.uninstall=function(){var v,t;for(this.savePendingCaption();t=this.undos.pop();)t();return(v=this.delegate)!=null?v.didUninstallAttachmentEditor(this):void 0},p.prototype.savePendingCaption=function(){var v,t,r;return this.pendingCaption!=null?(v=this.pendingCaption,this.pendingCaption=null,v?(t=this.delegate)!=null&&typeof t.attachmentEditorDidRequestUpdatingAttributesForAttachment=="function"?t.attachmentEditorDidRequestUpdatingAttributesForAttachment({caption:v},this.attachment):void 0:(r=this.delegate)!=null&&typeof r.attachmentEditorDidRequestRemovingAttributeForAttachment=="function"?r.attachmentEditorDidRequestRemovingAttributeForAttachment("caption",this.attachment):void 0):void 0},p.prototype.makeElementMutable=c(function(){return{do:function(v){return function(){return v.element.dataset.trixMutable=!0}}(this),undo:function(v){return function(){return delete v.element.dataset.trixMutable}}(this)}}),p.prototype.addToolbar=c(function(){var v;return v=e({tagName:"div",className:x.attachmentToolbar,data:{trixMutable:!0},childNodes:e({tagName:"div",className:"trix-button-row",childNodes:e({tagName:"span",className:"trix-button-group trix-button-group--actions",childNodes:e({tagName:"button",className:"trix-button trix-button--remove",textContent:o.remove,attributes:{title:o.remove},data:{trixAction:"remove"}})})})}),this.attachment.isPreviewable()&&v.appendChild(e({tagName:"div",className:x.attachmentMetadataContainer,childNodes:e({tagName:"span",className:x.attachmentMetadata,childNodes:[e({tagName:"span",className:x.attachmentName,textContent:this.attachment.getFilename(),attributes:{title:this.attachment.getFilename()}}),e({tagName:"span",className:x.attachmentSize,textContent:this.attachment.getFormattedFilesize()})]})})),y("click",{onElement:v,withCallback:this.didClickToolbar}),y("click",{onElement:v,matchingSelector:"[data-trix-action]",withCallback:this.didClickActionButton}),{do:function(t){return function(){return t.element.appendChild(v)}}(this),undo:function(){return function(){return g.removeNode(v)}}(this)}}),p.prototype.installCaptionEditor=c(function(){var v,t,r,l,A;return l=e({tagName:"textarea",className:x.attachmentCaptionEditor,attributes:{placeholder:o.captionPlaceholder},data:{trixMutable:!0}}),l.value=this.attachmentPiece.getCaption(),A=l.cloneNode(),A.classList.add("trix-autoresize-clone"),A.tabIndex=-1,v=function(){return A.value=l.value,l.style.height=A.scrollHeight+"px"},y("input",{onElement:l,withCallback:v}),y("input",{onElement:l,withCallback:this.didInputCaption}),y("keydown",{onElement:l,withCallback:this.didKeyDownCaption}),y("change",{onElement:l,withCallback:this.didChangeCaption}),y("blur",{onElement:l,withCallback:this.didBlurCaption}),r=this.element.querySelector("figcaption"),t=r.cloneNode(),{do:function(f){return function(){return r.style.display="none",t.appendChild(l),t.appendChild(A),t.classList.add(x.attachmentCaption+"--editing"),r.parentElement.insertBefore(t,r),v(),f.options.editCaption?b(function(){return l.focus()}):void 0}}(this),undo:function(){return g.removeNode(t),r.style.display=null}}}),p.prototype.didClickToolbar=function(v){return v.preventDefault(),v.stopPropagation()},p.prototype.didClickActionButton=function(v){var t,r;switch(t=v.target.getAttribute("data-trix-action")){case"remove":return(r=this.delegate)!=null?r.attachmentEditorDidRequestRemovalOfAttachment(this.attachment):void 0}},p.prototype.didKeyDownCaption=function(v){var t;return h[v.keyCode]==="return"?(v.preventDefault(),this.savePendingCaption(),(t=this.delegate)!=null&&typeof t.attachmentEditorDidRequestDeselectingAttachment=="function"?t.attachmentEditorDidRequestDeselectingAttachment(this.attachment):void 0):void 0},p.prototype.didInputCaption=function(v){return this.pendingCaption=v.target.value.replace(/\s/g," ").trim()},p.prototype.didChangeCaption=function(){return this.savePendingCaption()},p.prototype.didBlurCaption=function(){return this.savePendingCaption()},p}(g.BasicObject)}.call(this),function(){var x,b,y,h=function(e,a){function d(){this.constructor=e}for(var i in a)o.call(a,i)&&(e[i]=a[i]);return d.prototype=a.prototype,e.prototype=new d,e.__super__=a.prototype,e},o={}.hasOwnProperty;y=g.makeElement,x=g.config.css,g.AttachmentView=function(e){function a(){a.__super__.constructor.apply(this,arguments),this.attachment=this.object,this.attachment.uploadProgressDelegate=this,this.attachmentPiece=this.options.piece}var d;return h(a,e),a.attachmentSelector="[data-trix-attachment]",a.prototype.createContentNodes=function(){return[]},a.prototype.createNodes=function(){var i,u,s,n,p,c,v;if(i=n=y({tagName:"figure",className:this.getClassName(),data:this.getData(),editable:!1}),(u=this.getHref())&&(n=y({tagName:"a",editable:!1,attributes:{href:u,tabindex:-1}}),i.appendChild(n)),this.attachment.hasContent())n.innerHTML=this.attachment.getContent();else for(v=this.createContentNodes(),s=0,p=v.length;p>s;s++)c=v[s],n.appendChild(c);return n.appendChild(this.createCaptionElement()),this.attachment.isPending()&&(this.progressElement=y({tagName:"progress",attributes:{class:x.attachmentProgress,value:this.attachment.getUploadProgress(),max:100},data:{trixMutable:!0,trixStoreKey:["progressElement",this.attachment.id].join("/")}}),i.appendChild(this.progressElement)),[d("left"),i,d("right")]},a.prototype.createCaptionElement=function(){var i,u,s,n,p,c,v;return s=y({tagName:"figcaption",className:x.attachmentCaption}),(i=this.attachmentPiece.getCaption())?(s.classList.add(x.attachmentCaption+"--edited"),s.textContent=i):(u=this.getCaptionConfig(),u.name&&(n=this.attachment.getFilename()),u.size&&(c=this.attachment.getFormattedFilesize()),n&&(p=y({tagName:"span",className:x.attachmentName,textContent:n}),s.appendChild(p)),c&&(n&&s.appendChild(document.createTextNode(" ")),v=y({tagName:"span",className:x.attachmentSize,textContent:c}),s.appendChild(v))),s},a.prototype.getClassName=function(){var i,u;return u=[x.attachment,x.attachment+"--"+this.attachment.getType()],(i=this.attachment.getExtension())&&u.push(x.attachment+"--"+i),u.join(" ")},a.prototype.getData=function(){var i,u;return u={trixAttachment:JSON.stringify(this.attachment),trixContentType:this.attachment.getContentType(),trixId:this.attachment.id},i=this.attachmentPiece.attributes,i.isEmpty()||(u.trixAttributes=JSON.stringify(i)),this.attachment.isPending()&&(u.trixSerialize=!1),u},a.prototype.getHref=function(){return b(this.attachment.getContent(),"a")?void 0:this.attachment.getHref()},a.prototype.getCaptionConfig=function(){var i,u,s;return s=this.attachment.getType(),i=g.copyObject((u=g.config.attachments[s])!=null?u.caption:void 0),s==="file"&&(i.name=!0),i},a.prototype.findProgressElement=function(){var i;return(i=this.findElement())!=null?i.querySelector("progress"):void 0},d=function(i){return y({tagName:"span",textContent:g.ZERO_WIDTH_SPACE,data:{trixCursorTarget:i,trixSerialize:!1}})},a.prototype.attachmentDidChangeUploadProgress=function(){var i,u;return u=this.attachment.getUploadProgress(),(i=this.findProgressElement())!=null?i.value=u:void 0},a}(g.ObjectView),b=function(e,a){var d;return d=y("div"),d.innerHTML=e??"",d.querySelector(a)}}.call(this),function(){var x,b=function(h,o){function e(){this.constructor=h}for(var a in o)y.call(o,a)&&(h[a]=o[a]);return e.prototype=o.prototype,h.prototype=new e,h.__super__=o.prototype,h},y={}.hasOwnProperty;x=g.makeElement,g.PreviewableAttachmentView=function(h){function o(){o.__super__.constructor.apply(this,arguments),this.attachment.previewDelegate=this}return b(o,h),o.prototype.createContentNodes=function(){return this.image=x({tagName:"img",attributes:{src:""},data:{trixMutable:!0}}),this.refresh(this.image),[this.image]},o.prototype.createCaptionElement=function(){var e;return e=o.__super__.createCaptionElement.apply(this,arguments),e.textContent||e.setAttribute("data-trix-placeholder",g.config.lang.captionPlaceholder),e},o.prototype.refresh=function(e){var a;return e==null&&(e=(a=this.findElement())!=null?a.querySelector("img"):void 0),e?this.updateAttributesForImage(e):void 0},o.prototype.updateAttributesForImage=function(e){var a,d,i,u,s,n;return s=this.attachment.getURL(),d=this.attachment.getPreviewURL(),e.src=d||s,d===s?e.removeAttribute("data-trix-serialized-attributes"):(i=JSON.stringify({src:s}),e.setAttribute("data-trix-serialized-attributes",i)),n=this.attachment.getWidth(),a=this.attachment.getHeight(),n!=null&&(e.width=n),a!=null&&(e.height=a),u=["imageElement",this.attachment.id,e.src,e.width,e.height].join("/"),e.dataset.trixStoreKey=u},o.prototype.attachmentDidChangeAttributes=function(){return this.refresh(this.image),this.refresh()},o}(g.AttachmentView)}.call(this),function(){var x,b,y,h=function(e,a){function d(){this.constructor=e}for(var i in a)o.call(a,i)&&(e[i]=a[i]);return d.prototype=a.prototype,e.prototype=new d,e.__super__=a.prototype,e},o={}.hasOwnProperty;y=g.makeElement,x=g.findInnerElement,b=g.getTextConfig,g.PieceView=function(e){function a(){var i;a.__super__.constructor.apply(this,arguments),this.piece=this.object,this.attributes=this.piece.getAttributes(),i=this.options,this.textConfig=i.textConfig,this.context=i.context,this.piece.attachment?this.attachment=this.piece.attachment:this.string=this.piece.toString()}var d;return h(a,e),a.prototype.createNodes=function(){var i,u,s,n,p,c;if(c=this.attachment?this.createAttachmentNodes():this.createStringNodes(),i=this.createElement()){for(s=x(i),u=0,n=c.length;n>u;u++)p=c[u],s.appendChild(p);c=[i]}return c},a.prototype.createAttachmentNodes=function(){var i,u;return i=this.attachment.isPreviewable()?g.PreviewableAttachmentView:g.AttachmentView,u=this.createChildView(i,this.piece.attachment,{piece:this.piece}),u.getNodes()},a.prototype.createStringNodes=function(){var i,u,s,n,p,c,v,t,r,l;if((t=this.textConfig)!=null&&t.plaintext)return[document.createTextNode(this.string)];for(v=[],r=this.string.split(` +`),s=u=0,n=r.length;n>u;s=++u)l=r[s],s>0&&(i=y("br"),v.push(i)),(p=l.length)&&(c=document.createTextNode(this.preserveSpaces(l)),v.push(c));return v},a.prototype.createElement=function(){var i,u,s,n,p,c,v,t,r;t={},c=this.attributes;for(n in c)if(r=c[n],(i=b(n))&&(i.tagName&&(p=y(i.tagName),s?(s.appendChild(p),s=p):u=s=p),i.styleProperty&&(t[i.styleProperty]=r),i.style)){v=i.style;for(n in v)r=v[n],t[n]=r}if(Object.keys(t).length){u==null&&(u=y("span"));for(n in t)r=t[n],u.style[n]=r}return u},a.prototype.createContainerElement=function(){var i,u,s,n,p;n=this.attributes;for(s in n)if(p=n[s],(u=b(s))&&u.groupTagName)return i={},i[s]=p,y(u.groupTagName,i)},d=g.NON_BREAKING_SPACE,a.prototype.preserveSpaces=function(i){return this.context.isLast&&(i=i.replace(/\ $/,d)),i=i.replace(/(\S)\ {3}(\S)/g,"$1 "+d+" $2").replace(/\ {2}/g,d+" ").replace(/\ {2}/g," "+d),(this.context.isFirst||this.context.followsWhitespace)&&(i=i.replace(/^\ /,d)),i},a}(g.ObjectView)}.call(this),function(){var x=function(y,h){function o(){this.constructor=y}for(var e in h)b.call(h,e)&&(y[e]=h[e]);return o.prototype=h.prototype,y.prototype=new o,y.__super__=h.prototype,y},b={}.hasOwnProperty;g.TextView=function(y){function h(){h.__super__.constructor.apply(this,arguments),this.text=this.object,this.textConfig=this.options.textConfig}var o;return x(h,y),h.prototype.createNodes=function(){var e,a,d,i,u,s,n,p,c,v;for(s=[],p=g.ObjectGroup.groupObjects(this.getPieces()),i=p.length-1,d=a=0,u=p.length;u>a;d=++a)n=p[d],e={},d===0&&(e.isFirst=!0),d===i&&(e.isLast=!0),o(c)&&(e.followsWhitespace=!0),v=this.findOrCreateCachedChildView(g.PieceView,n,{textConfig:this.textConfig,context:e}),s.push.apply(s,v.getNodes()),c=n;return s},h.prototype.getPieces=function(){var e,a,d,i,u;for(i=this.text.getPieces(),u=[],e=0,a=i.length;a>e;e++)d=i[e],d.hasAttribute("blockBreak")||u.push(d);return u},o=function(e){return/\s$/.test(e?.toString())},h}(g.ObjectView)}.call(this),function(){var x,b,y,h=function(e,a){function d(){this.constructor=e}for(var i in a)o.call(a,i)&&(e[i]=a[i]);return d.prototype=a.prototype,e.prototype=new d,e.__super__=a.prototype,e},o={}.hasOwnProperty;y=g.makeElement,b=g.getBlockConfig,x=g.config.css,g.BlockView=function(e){function a(){a.__super__.constructor.apply(this,arguments),this.block=this.object,this.attributes=this.block.getAttributes()}return h(a,e),a.prototype.createNodes=function(){var d,i,u,s,n,p,c,v,t,r,l;if(i=document.createComment("block"),c=[i],this.block.isEmpty()?c.push(y("br")):(r=(v=b(this.block.getLastAttribute()))!=null?v.text:void 0,l=this.findOrCreateCachedChildView(g.TextView,this.block.text,{textConfig:r}),c.push.apply(c,l.getNodes()),this.shouldAddExtraNewlineElement()&&c.push(y("br"))),this.attributes.length)return c;for(t=g.config.blockAttributes.default.tagName,this.block.isRTL()&&(d={dir:"rtl"}),u=y({tagName:t,attributes:d}),s=0,n=c.length;n>s;s++)p=c[s],u.appendChild(p);return[u]},a.prototype.createContainerElement=function(d){var i,u,s,n,p;return i=this.attributes[d],p=b(i).tagName,d===0&&this.block.isRTL()&&(u={dir:"rtl"}),i==="attachmentGallery"&&(n=this.block.getBlockBreakPosition(),s=x.attachmentGallery+" "+x.attachmentGallery+"--"+n),y({tagName:p,className:s,attributes:u})},a.prototype.shouldAddExtraNewlineElement=function(){return/\n\n$/.test(this.block.toString())},a}(g.ObjectView)}.call(this),function(){var x,b,y=function(o,e){function a(){this.constructor=o}for(var d in e)h.call(e,d)&&(o[d]=e[d]);return a.prototype=e.prototype,o.prototype=new a,o.__super__=e.prototype,o},h={}.hasOwnProperty;x=g.defer,b=g.makeElement,g.DocumentView=function(o){function e(){e.__super__.constructor.apply(this,arguments),this.element=this.options.element,this.elementStore=new g.ElementStore,this.setDocument(this.object)}var a,d,i;return y(e,o),e.render=function(u){var s,n;return s=b("div"),n=new this(u,{element:s}),n.render(),n.sync(),s},e.prototype.setDocument=function(u){return u.isEqualTo(this.document)?void 0:this.document=this.object=u},e.prototype.render=function(){var u,s,n,p,c,v,t;if(this.childViews=[],this.shadowElement=b("div"),!this.document.isEmpty()){for(c=g.ObjectGroup.groupObjects(this.document.getBlocks(),{asTree:!0}),v=[],u=0,s=c.length;s>u;u++)p=c[u],t=this.findOrCreateCachedChildView(g.BlockView,p),v.push(function(){var r,l,A,f;for(A=t.getNodes(),f=[],r=0,l=A.length;l>r;r++)n=A[r],f.push(this.shadowElement.appendChild(n));return f}.call(this));return v}},e.prototype.isSynced=function(){return a(this.shadowElement,this.element)},e.prototype.sync=function(){var u;for(u=this.createDocumentFragmentForSync();this.element.lastChild;)this.element.removeChild(this.element.lastChild);return this.element.appendChild(u),this.didSync()},e.prototype.didSync=function(){return this.elementStore.reset(d(this.element)),x(function(u){return function(){return u.garbageCollectCachedViews()}}(this))},e.prototype.createDocumentFragmentForSync=function(){var u,s,n,p,c,v,t,r,l,A;for(s=document.createDocumentFragment(),r=this.shadowElement.childNodes,n=0,c=r.length;c>n;n++)t=r[n],s.appendChild(t.cloneNode(!0));for(l=d(s),p=0,v=l.length;v>p;p++)u=l[p],(A=this.elementStore.remove(u))&&u.parentNode.replaceChild(A,u);return s},d=function(u){return u.querySelectorAll("[data-trix-store-key]")},a=function(u,s){return i(u.innerHTML)===i(s.innerHTML)},i=function(u){return u.replace(/ /g," ")},e}(g.ObjectView)}.call(this),function(){var x,b,y,h,o,e=function(i,u){return function(){return i.apply(u,arguments)}},a=function(i,u){function s(){this.constructor=i}for(var n in u)d.call(u,n)&&(i[n]=u[n]);return s.prototype=u.prototype,i.prototype=new s,i.__super__=u.prototype,i},d={}.hasOwnProperty;y=g.findClosestElementFromNode,h=g.handleEvent,o=g.innerElementIsActive,b=g.defer,x=g.AttachmentView.attachmentSelector,g.CompositionController=function(i){function u(s,n){this.element=s,this.composition=n,this.didClickAttachment=e(this.didClickAttachment,this),this.didBlur=e(this.didBlur,this),this.didFocus=e(this.didFocus,this),this.documentView=new g.DocumentView(this.composition.document,{element:this.element}),h("focus",{onElement:this.element,withCallback:this.didFocus}),h("blur",{onElement:this.element,withCallback:this.didBlur}),h("click",{onElement:this.element,matchingSelector:"a[contenteditable=false]",preventDefault:!0}),h("mousedown",{onElement:this.element,matchingSelector:x,withCallback:this.didClickAttachment}),h("click",{onElement:this.element,matchingSelector:"a"+x,preventDefault:!0})}return a(u,i),u.prototype.didFocus=function(){var s,n,p;return s=function(c){return function(){var v;return c.focused?void 0:(c.focused=!0,(v=c.delegate)!=null&&typeof v.compositionControllerDidFocus=="function"?v.compositionControllerDidFocus():void 0)}}(this),(n=(p=this.blurPromise)!=null?p.then(s):void 0)!=null?n:s()},u.prototype.didBlur=function(){return this.blurPromise=new Promise(function(s){return function(n){return b(function(){var p;return o(s.element)||(s.focused=null,(p=s.delegate)!=null&&typeof p.compositionControllerDidBlur=="function"&&p.compositionControllerDidBlur()),s.blurPromise=null,n()})}}(this))},u.prototype.didClickAttachment=function(s,n){var p,c,v;return p=this.findAttachmentForElement(n),c=y(s.target,{matchingSelector:"figcaption"})!=null,(v=this.delegate)!=null&&typeof v.compositionControllerDidSelectAttachment=="function"?v.compositionControllerDidSelectAttachment(p,{editCaption:c}):void 0},u.prototype.getSerializableElement=function(){return this.isEditingAttachment()?this.documentView.shadowElement:this.element},u.prototype.render=function(){var s,n,p;return this.revision!==this.composition.revision&&(this.documentView.setDocument(this.composition.document),this.documentView.render(),this.revision=this.composition.revision),this.canSyncDocumentView()&&!this.documentView.isSynced()&&((s=this.delegate)!=null&&typeof s.compositionControllerWillSyncDocumentView=="function"&&s.compositionControllerWillSyncDocumentView(),this.documentView.sync(),(n=this.delegate)!=null&&typeof n.compositionControllerDidSyncDocumentView=="function"&&n.compositionControllerDidSyncDocumentView()),(p=this.delegate)!=null&&typeof p.compositionControllerDidRender=="function"?p.compositionControllerDidRender():void 0},u.prototype.rerenderViewForObject=function(s){return this.invalidateViewForObject(s),this.render()},u.prototype.invalidateViewForObject=function(s){return this.documentView.invalidateViewForObject(s)},u.prototype.isViewCachingEnabled=function(){return this.documentView.isViewCachingEnabled()},u.prototype.enableViewCaching=function(){return this.documentView.enableViewCaching()},u.prototype.disableViewCaching=function(){return this.documentView.disableViewCaching()},u.prototype.refreshViewCache=function(){return this.documentView.garbageCollectCachedViews()},u.prototype.isEditingAttachment=function(){return this.attachmentEditor!=null},u.prototype.installAttachmentEditorForAttachment=function(s,n){var p,c,v;if(((v=this.attachmentEditor)!=null?v.attachment:void 0)!==s&&(c=this.documentView.findElementForObject(s)))return this.uninstallAttachmentEditor(),p=this.composition.document.getAttachmentPieceForAttachment(s),this.attachmentEditor=new g.AttachmentEditorController(p,c,this.element,n),this.attachmentEditor.delegate=this},u.prototype.uninstallAttachmentEditor=function(){var s;return(s=this.attachmentEditor)!=null?s.uninstall():void 0},u.prototype.didUninstallAttachmentEditor=function(){return this.attachmentEditor=null,this.render()},u.prototype.attachmentEditorDidRequestUpdatingAttributesForAttachment=function(s,n){var p;return(p=this.delegate)!=null&&typeof p.compositionControllerWillUpdateAttachment=="function"&&p.compositionControllerWillUpdateAttachment(n),this.composition.updateAttributesForAttachment(s,n)},u.prototype.attachmentEditorDidRequestRemovingAttributeForAttachment=function(s,n){var p;return(p=this.delegate)!=null&&typeof p.compositionControllerWillUpdateAttachment=="function"&&p.compositionControllerWillUpdateAttachment(n),this.composition.removeAttributeForAttachment(s,n)},u.prototype.attachmentEditorDidRequestRemovalOfAttachment=function(s){var n;return(n=this.delegate)!=null&&typeof n.compositionControllerDidRequestRemovalOfAttachment=="function"?n.compositionControllerDidRequestRemovalOfAttachment(s):void 0},u.prototype.attachmentEditorDidRequestDeselectingAttachment=function(s){var n;return(n=this.delegate)!=null&&typeof n.compositionControllerDidRequestDeselectingAttachment=="function"?n.compositionControllerDidRequestDeselectingAttachment(s):void 0},u.prototype.canSyncDocumentView=function(){return!this.isEditingAttachment()},u.prototype.findAttachmentForElement=function(s){return this.composition.document.getAttachmentById(parseInt(s.dataset.trixId,10))},u}(g.BasicObject)}.call(this),function(){var x,b,y,h=function(a,d){return function(){return a.apply(d,arguments)}},o=function(a,d){function i(){this.constructor=a}for(var u in d)e.call(d,u)&&(a[u]=d[u]);return i.prototype=d.prototype,a.prototype=new i,a.__super__=d.prototype,a},e={}.hasOwnProperty;b=g.handleEvent,y=g.triggerEvent,x=g.findClosestElementFromNode,g.ToolbarController=function(a){function d(f){this.element=f,this.didKeyDownDialogInput=h(this.didKeyDownDialogInput,this),this.didClickDialogButton=h(this.didClickDialogButton,this),this.didClickAttributeButton=h(this.didClickAttributeButton,this),this.didClickActionButton=h(this.didClickActionButton,this),this.attributes={},this.actions={},this.resetDialogInputs(),b("mousedown",{onElement:this.element,matchingSelector:i,withCallback:this.didClickActionButton}),b("mousedown",{onElement:this.element,matchingSelector:s,withCallback:this.didClickAttributeButton}),b("click",{onElement:this.element,matchingSelector:A,preventDefault:!0}),b("click",{onElement:this.element,matchingSelector:n,withCallback:this.didClickDialogButton}),b("keydown",{onElement:this.element,matchingSelector:p,withCallback:this.didKeyDownDialogInput})}var i,u,s,n,p,c,v,t,r,l,A;return o(d,a),s="[data-trix-attribute]",i="[data-trix-action]",A=s+", "+i,c="[data-trix-dialog]",u=c+"[data-trix-active]",n=c+" [data-trix-method]",p=c+" [data-trix-input]",d.prototype.didClickActionButton=function(f,m){var C,S,L;return(S=this.delegate)!=null&&S.toolbarDidClickButton(),f.preventDefault(),C=v(m),this.getDialog(C)?this.toggleDialog(C):(L=this.delegate)!=null?L.toolbarDidInvokeAction(C):void 0},d.prototype.didClickAttributeButton=function(f,m){var C,S,L;return(S=this.delegate)!=null&&S.toolbarDidClickButton(),f.preventDefault(),C=t(m),this.getDialog(C)?this.toggleDialog(C):(L=this.delegate)!=null&&L.toolbarDidToggleAttribute(C),this.refreshAttributeButtons()},d.prototype.didClickDialogButton=function(f,m){var C,S;return C=x(m,{matchingSelector:c}),S=m.getAttribute("data-trix-method"),this[S].call(this,C)},d.prototype.didKeyDownDialogInput=function(f,m){var C,S;return f.keyCode===13&&(f.preventDefault(),C=m.getAttribute("name"),S=this.getDialog(C),this.setAttribute(S)),f.keyCode===27?(f.preventDefault(),this.hideDialog()):void 0},d.prototype.updateActions=function(f){return this.actions=f,this.refreshActionButtons()},d.prototype.refreshActionButtons=function(){return this.eachActionButton(function(f){return function(m,C){return m.disabled=f.actions[C]===!1}}(this))},d.prototype.eachActionButton=function(f){var m,C,S,L,O;for(L=this.element.querySelectorAll(i),O=[],C=0,S=L.length;S>C;C++)m=L[C],O.push(f(m,v(m)));return O},d.prototype.updateAttributes=function(f){return this.attributes=f,this.refreshAttributeButtons()},d.prototype.refreshAttributeButtons=function(){return this.eachAttributeButton(function(f){return function(m,C){return m.disabled=f.attributes[C]===!1,f.attributes[C]||f.dialogIsVisible(C)?(m.setAttribute("data-trix-active",""),m.classList.add("trix-active")):(m.removeAttribute("data-trix-active"),m.classList.remove("trix-active"))}}(this))},d.prototype.eachAttributeButton=function(f){var m,C,S,L,O;for(L=this.element.querySelectorAll(s),O=[],C=0,S=L.length;S>C;C++)m=L[C],O.push(f(m,t(m)));return O},d.prototype.applyKeyboardCommand=function(f){var m,C,S,L,O,D,R;for(O=JSON.stringify(f.sort()),R=this.element.querySelectorAll("[data-trix-key]"),L=0,D=R.length;D>L;L++)if(m=R[L],S=m.getAttribute("data-trix-key").split("+"),C=JSON.stringify(S.sort()),C===O)return y("mousedown",{onElement:m}),!0;return!1},d.prototype.dialogIsVisible=function(f){var m;return(m=this.getDialog(f))?m.hasAttribute("data-trix-active"):void 0},d.prototype.toggleDialog=function(f){return this.dialogIsVisible(f)?this.hideDialog():this.showDialog(f)},d.prototype.showDialog=function(f){var m,C,S,L,O,D,R,E,w,k;for(this.hideDialog(),(R=this.delegate)!=null&&R.toolbarWillShowDialog(),S=this.getDialog(f),S.setAttribute("data-trix-active",""),S.classList.add("trix-active"),E=S.querySelectorAll("input[disabled]"),L=0,D=E.length;D>L;L++)C=E[L],C.removeAttribute("disabled");return(m=t(S))&&(O=l(S,f))&&(O.value=(w=this.attributes[m])!=null?w:"",O.select()),(k=this.delegate)!=null?k.toolbarDidShowDialog(f):void 0},d.prototype.setAttribute=function(f){var m,C,S;return m=t(f),C=l(f,m),C.willValidate&&!C.checkValidity()?(C.setAttribute("data-trix-validate",""),C.classList.add("trix-validate"),C.focus()):((S=this.delegate)!=null&&S.toolbarDidUpdateAttribute(m,C.value),this.hideDialog())},d.prototype.removeAttribute=function(f){var m,C;return m=t(f),(C=this.delegate)!=null&&C.toolbarDidRemoveAttribute(m),this.hideDialog()},d.prototype.hideDialog=function(){var f,m;return(f=this.element.querySelector(u))?(f.removeAttribute("data-trix-active"),f.classList.remove("trix-active"),this.resetDialogInputs(),(m=this.delegate)!=null?m.toolbarDidHideDialog(r(f)):void 0):void 0},d.prototype.resetDialogInputs=function(){var f,m,C,S,L;for(S=this.element.querySelectorAll(p),L=[],f=0,C=S.length;C>f;f++)m=S[f],m.setAttribute("disabled","disabled"),m.removeAttribute("data-trix-validate"),L.push(m.classList.remove("trix-validate"));return L},d.prototype.getDialog=function(f){return this.element.querySelector("[data-trix-dialog="+f+"]")},l=function(f,m){return m==null&&(m=t(f)),f.querySelector("[data-trix-input][name='"+m+"']")},v=function(f){return f.getAttribute("data-trix-action")},t=function(f){var m;return(m=f.getAttribute("data-trix-attribute"))!=null?m:f.getAttribute("data-trix-dialog-attribute")},r=function(f){return f.getAttribute("data-trix-dialog")},d}(g.BasicObject)}.call(this),function(){var x=function(y,h){function o(){this.constructor=y}for(var e in h)b.call(h,e)&&(y[e]=h[e]);return o.prototype=h.prototype,y.prototype=new o,y.__super__=h.prototype,y},b={}.hasOwnProperty;g.ImagePreloadOperation=function(y){function h(o){this.url=o}return x(h,y),h.prototype.perform=function(o){var e;return e=new Image,e.onload=function(a){return function(){return e.width=a.width=e.naturalWidth,e.height=a.height=e.naturalHeight,o(!0,e)}}(this),e.onerror=function(){return o(!1)},e.src=this.url},h}(g.Operation)}.call(this),function(){var x=function(h,o){return function(){return h.apply(o,arguments)}},b=function(h,o){function e(){this.constructor=h}for(var a in o)y.call(o,a)&&(h[a]=o[a]);return e.prototype=o.prototype,h.prototype=new e,h.__super__=o.prototype,h},y={}.hasOwnProperty;g.Attachment=function(h){function o(e){e==null&&(e={}),this.releaseFile=x(this.releaseFile,this),o.__super__.constructor.apply(this,arguments),this.attributes=g.Hash.box(e),this.didChangeAttributes()}return b(o,h),o.previewablePattern=/^image(\/(gif|png|jpe?g)|$)/,o.attachmentForFile=function(e){var a,d;return d=this.attributesForFile(e),a=new this(d),a.setFile(e),a},o.attributesForFile=function(e){return new g.Hash({filename:e.name,filesize:e.size,contentType:e.type})},o.fromJSON=function(e){return new this(e)},o.prototype.getAttribute=function(e){return this.attributes.get(e)},o.prototype.hasAttribute=function(e){return this.attributes.has(e)},o.prototype.getAttributes=function(){return this.attributes.toObject()},o.prototype.setAttributes=function(e){var a,d,i;return e==null&&(e={}),a=this.attributes.merge(e),this.attributes.isEqualTo(a)?void 0:(this.attributes=a,this.didChangeAttributes(),(d=this.previewDelegate)!=null&&typeof d.attachmentDidChangeAttributes=="function"&&d.attachmentDidChangeAttributes(this),(i=this.delegate)!=null&&typeof i.attachmentDidChangeAttributes=="function"?i.attachmentDidChangeAttributes(this):void 0)},o.prototype.didChangeAttributes=function(){return this.isPreviewable()?this.preloadURL():void 0},o.prototype.isPending=function(){return this.file!=null&&!(this.getURL()||this.getHref())},o.prototype.isPreviewable=function(){return this.attributes.has("previewable")?this.attributes.get("previewable"):this.constructor.previewablePattern.test(this.getContentType())},o.prototype.getType=function(){return this.hasContent()?"content":this.isPreviewable()?"preview":"file"},o.prototype.getURL=function(){return this.attributes.get("url")},o.prototype.getHref=function(){return this.attributes.get("href")},o.prototype.getFilename=function(){var e;return(e=this.attributes.get("filename"))!=null?e:""},o.prototype.getFilesize=function(){return this.attributes.get("filesize")},o.prototype.getFormattedFilesize=function(){var e;return e=this.attributes.get("filesize"),typeof e=="number"?g.config.fileSize.formatter(e):""},o.prototype.getExtension=function(){var e;return(e=this.getFilename().match(/\.(\w+)$/))!=null?e[1].toLowerCase():void 0},o.prototype.getContentType=function(){return this.attributes.get("contentType")},o.prototype.hasContent=function(){return this.attributes.has("content")},o.prototype.getContent=function(){return this.attributes.get("content")},o.prototype.getWidth=function(){return this.attributes.get("width")},o.prototype.getHeight=function(){return this.attributes.get("height")},o.prototype.getFile=function(){return this.file},o.prototype.setFile=function(e){return this.file=e,this.isPreviewable()?this.preloadFile():void 0},o.prototype.releaseFile=function(){return this.releasePreloadedFile(),this.file=null},o.prototype.getUploadProgress=function(){var e;return(e=this.uploadProgress)!=null?e:0},o.prototype.setUploadProgress=function(e){var a;return this.uploadProgress!==e?(this.uploadProgress=e,(a=this.uploadProgressDelegate)!=null&&typeof a.attachmentDidChangeUploadProgress=="function"?a.attachmentDidChangeUploadProgress(this):void 0):void 0},o.prototype.toJSON=function(){return this.getAttributes()},o.prototype.getCacheKey=function(){return[o.__super__.getCacheKey.apply(this,arguments),this.attributes.getCacheKey(),this.getPreviewURL()].join("/")},o.prototype.getPreviewURL=function(){return this.previewURL||this.preloadingURL},o.prototype.setPreviewURL=function(e){var a,d;return e!==this.getPreviewURL()?(this.previewURL=e,(a=this.previewDelegate)!=null&&typeof a.attachmentDidChangeAttributes=="function"&&a.attachmentDidChangeAttributes(this),(d=this.delegate)!=null&&typeof d.attachmentDidChangePreviewURL=="function"?d.attachmentDidChangePreviewURL(this):void 0):void 0},o.prototype.preloadURL=function(){return this.preload(this.getURL(),this.releaseFile)},o.prototype.preloadFile=function(){return this.file?(this.fileObjectURL=URL.createObjectURL(this.file),this.preload(this.fileObjectURL)):void 0},o.prototype.releasePreloadedFile=function(){return this.fileObjectURL?(URL.revokeObjectURL(this.fileObjectURL),this.fileObjectURL=null):void 0},o.prototype.preload=function(e,a){var d;return e&&e!==this.getPreviewURL()?(this.preloadingURL=e,d=new g.ImagePreloadOperation(e),d.then(function(i){return function(u){var s,n;return n=u.width,s=u.height,i.getWidth()&&i.getHeight()||i.setAttributes({width:n,height:s}),i.preloadingURL=null,i.setPreviewURL(e),typeof a=="function"?a():void 0}}(this)).catch(function(i){return function(){return i.preloadingURL=null,typeof a=="function"?a():void 0}}(this))):void 0},o}(g.Object)}.call(this),function(){var x=function(y,h){function o(){this.constructor=y}for(var e in h)b.call(h,e)&&(y[e]=h[e]);return o.prototype=h.prototype,y.prototype=new o,y.__super__=h.prototype,y},b={}.hasOwnProperty;g.Piece=function(y){function h(o,e){e==null&&(e={}),h.__super__.constructor.apply(this,arguments),this.attributes=g.Hash.box(e)}return x(h,y),h.types={},h.registerType=function(o,e){return e.type=o,this.types[o]=e},h.fromJSON=function(o){var e;return(e=this.types[o.type])?e.fromJSON(o):void 0},h.prototype.copyWithAttributes=function(o){return new this.constructor(this.getValue(),o)},h.prototype.copyWithAdditionalAttributes=function(o){return this.copyWithAttributes(this.attributes.merge(o))},h.prototype.copyWithoutAttribute=function(o){return this.copyWithAttributes(this.attributes.remove(o))},h.prototype.copy=function(){return this.copyWithAttributes(this.attributes)},h.prototype.getAttribute=function(o){return this.attributes.get(o)},h.prototype.getAttributesHash=function(){return this.attributes},h.prototype.getAttributes=function(){return this.attributes.toObject()},h.prototype.getCommonAttributes=function(){var o,e,a;return(a=pieceList.getPieceAtIndex(0))?(o=a.attributes,e=o.getKeys(),pieceList.eachPiece(function(d){return e=o.getKeysCommonToHash(d.attributes),o=o.slice(e)}),o.toObject()):{}},h.prototype.hasAttribute=function(o){return this.attributes.has(o)},h.prototype.hasSameStringValueAsPiece=function(o){return o!=null&&this.toString()===o.toString()},h.prototype.hasSameAttributesAsPiece=function(o){return o!=null&&(this.attributes===o.attributes||this.attributes.isEqualTo(o.attributes))},h.prototype.isBlockBreak=function(){return!1},h.prototype.isEqualTo=function(o){return h.__super__.isEqualTo.apply(this,arguments)||this.hasSameConstructorAs(o)&&this.hasSameStringValueAsPiece(o)&&this.hasSameAttributesAsPiece(o)},h.prototype.isEmpty=function(){return this.length===0},h.prototype.isSerializable=function(){return!0},h.prototype.toJSON=function(){return{type:this.constructor.type,attributes:this.getAttributes()}},h.prototype.contentsForInspection=function(){return{type:this.constructor.type,attributes:this.attributes.inspect()}},h.prototype.canBeGrouped=function(){return this.hasAttribute("href")},h.prototype.canBeGroupedWith=function(o){return this.getAttribute("href")===o.getAttribute("href")},h.prototype.getLength=function(){return this.length},h.prototype.canBeConsolidatedWith=function(){return!1},h}(g.Object)}.call(this),function(){var x=function(y,h){function o(){this.constructor=y}for(var e in h)b.call(h,e)&&(y[e]=h[e]);return o.prototype=h.prototype,y.prototype=new o,y.__super__=h.prototype,y},b={}.hasOwnProperty;g.Piece.registerType("attachment",g.AttachmentPiece=function(y){function h(o){this.attachment=o,h.__super__.constructor.apply(this,arguments),this.length=1,this.ensureAttachmentExclusivelyHasAttribute("href"),this.attachment.hasContent()||this.removeProhibitedAttributes()}return x(h,y),h.fromJSON=function(o){return new this(g.Attachment.fromJSON(o.attachment),o.attributes)},h.permittedAttributes=["caption","presentation"],h.prototype.ensureAttachmentExclusivelyHasAttribute=function(o){return this.hasAttribute(o)?(this.attachment.hasAttribute(o)||this.attachment.setAttributes(this.attributes.slice(o)),this.attributes=this.attributes.remove(o)):void 0},h.prototype.removeProhibitedAttributes=function(){var o;return o=this.attributes.slice(this.constructor.permittedAttributes),o.isEqualTo(this.attributes)?void 0:this.attributes=o},h.prototype.getValue=function(){return this.attachment},h.prototype.isSerializable=function(){return!this.attachment.isPending()},h.prototype.getCaption=function(){var o;return(o=this.attributes.get("caption"))!=null?o:""},h.prototype.isEqualTo=function(o){var e;return h.__super__.isEqualTo.apply(this,arguments)&&this.attachment.id===(o!=null&&(e=o.attachment)!=null?e.id:void 0)},h.prototype.toString=function(){return g.OBJECT_REPLACEMENT_CHARACTER},h.prototype.toJSON=function(){var o;return o=h.__super__.toJSON.apply(this,arguments),o.attachment=this.attachment,o},h.prototype.getCacheKey=function(){return[h.__super__.getCacheKey.apply(this,arguments),this.attachment.getCacheKey()].join("/")},h.prototype.toConsole=function(){return JSON.stringify(this.toString())},h}(g.Piece))}.call(this),function(){var x,b=function(h,o){function e(){this.constructor=h}for(var a in o)y.call(o,a)&&(h[a]=o[a]);return e.prototype=o.prototype,h.prototype=new e,h.__super__=o.prototype,h},y={}.hasOwnProperty;x=g.normalizeNewlines,g.Piece.registerType("string",g.StringPiece=function(h){function o(e){o.__super__.constructor.apply(this,arguments),this.string=x(e),this.length=this.string.length}return b(o,h),o.fromJSON=function(e){return new this(e.string,e.attributes)},o.prototype.getValue=function(){return this.string},o.prototype.toString=function(){return this.string.toString()},o.prototype.isBlockBreak=function(){return this.toString()===` +`&&this.getAttribute("blockBreak")===!0},o.prototype.toJSON=function(){var e;return e=o.__super__.toJSON.apply(this,arguments),e.string=this.string,e},o.prototype.canBeConsolidatedWith=function(e){return e!=null&&this.hasSameConstructorAs(e)&&this.hasSameAttributesAsPiece(e)},o.prototype.consolidateWith=function(e){return new this.constructor(this.toString()+e.toString(),this.attributes)},o.prototype.splitAtOffset=function(e){var a,d;return e===0?(a=null,d=this):e===this.length?(a=this,d=null):(a=new this.constructor(this.string.slice(0,e),this.attributes),d=new this.constructor(this.string.slice(e),this.attributes)),[a,d]},o.prototype.toConsole=function(){var e;return e=this.string,e.length>15&&(e=e.slice(0,14)+"\u2026"),JSON.stringify(e.toString())},o}(g.Piece))}.call(this),function(){var x,b=function(o,e){function a(){this.constructor=o}for(var d in e)y.call(e,d)&&(o[d]=e[d]);return a.prototype=e.prototype,o.prototype=new a,o.__super__=e.prototype,o},y={}.hasOwnProperty,h=[].slice;x=g.spliceArray,g.SplittableList=function(o){function e(u){u==null&&(u=[]),e.__super__.constructor.apply(this,arguments),this.objects=u.slice(0),this.length=this.objects.length}var a,d,i;return b(e,o),e.box=function(u){return u instanceof this?u:new this(u)},e.prototype.indexOf=function(u){return this.objects.indexOf(u)},e.prototype.splice=function(){var u;return u=1<=arguments.length?h.call(arguments,0):[],new this.constructor(x.apply(null,[this.objects].concat(h.call(u))))},e.prototype.eachObject=function(u){var s,n,p,c,v,t;for(v=this.objects,t=[],n=s=0,p=v.length;p>s;n=++s)c=v[n],t.push(u(c,n));return t},e.prototype.insertObjectAtIndex=function(u,s){return this.splice(s,0,u)},e.prototype.insertSplittableListAtIndex=function(u,s){return this.splice.apply(this,[s,0].concat(h.call(u.objects)))},e.prototype.insertSplittableListAtPosition=function(u,s){var n,p,c;return c=this.splitObjectAtPosition(s),p=c[0],n=c[1],new this.constructor(p).insertSplittableListAtIndex(u,n)},e.prototype.editObjectAtIndex=function(u,s){return this.replaceObjectAtIndex(s(this.objects[u]),u)},e.prototype.replaceObjectAtIndex=function(u,s){return this.splice(s,1,u)},e.prototype.removeObjectAtIndex=function(u){return this.splice(u,1)},e.prototype.getObjectAtIndex=function(u){return this.objects[u]},e.prototype.getSplittableListInRange=function(u){var s,n,p,c;return p=this.splitObjectsAtRange(u),n=p[0],s=p[1],c=p[2],new this.constructor(n.slice(s,c+1))},e.prototype.selectSplittableList=function(u){var s,n;return n=function(){var p,c,v,t;for(v=this.objects,t=[],p=0,c=v.length;c>p;p++)s=v[p],u(s)&&t.push(s);return t}.call(this),new this.constructor(n)},e.prototype.removeObjectsInRange=function(u){var s,n,p,c;return p=this.splitObjectsAtRange(u),n=p[0],s=p[1],c=p[2],new this.constructor(n).splice(s,c-s+1)},e.prototype.transformObjectsInRange=function(u,s){var n,p,c,v,t,r,l;return t=this.splitObjectsAtRange(u),v=t[0],p=t[1],r=t[2],l=function(){var A,f,m;for(m=[],n=A=0,f=v.length;f>A;n=++A)c=v[n],m.push(n>=p&&r>=n?s(c):c);return m}(),new this.constructor(l)},e.prototype.splitObjectsAtRange=function(u){var s,n,p,c,v,t;return c=this.splitObjectAtPosition(i(u)),n=c[0],s=c[1],p=c[2],v=new this.constructor(n).splitObjectAtPosition(a(u)+p),n=v[0],t=v[1],[n,s,t-1]},e.prototype.getObjectAtPosition=function(u){var s,n,p;return p=this.findIndexAndOffsetAtPosition(u),s=p.index,n=p.offset,this.objects[s]},e.prototype.splitObjectAtPosition=function(u){var s,n,p,c,v,t,r,l,A,f;return t=this.findIndexAndOffsetAtPosition(u),s=t.index,v=t.offset,c=this.objects.slice(0),s!=null?v===0?(A=s,f=0):(p=this.getObjectAtIndex(s),r=p.splitAtOffset(v),n=r[0],l=r[1],c.splice(s,1,n,l),A=s+1,f=n.getLength()-v):(A=c.length,f=0),[c,A,f]},e.prototype.consolidate=function(){var u,s,n,p,c,v;for(p=[],c=this.objects[0],v=this.objects.slice(1),u=0,s=v.length;s>u;u++)n=v[u],typeof c.canBeConsolidatedWith=="function"&&c.canBeConsolidatedWith(n)?c=c.consolidateWith(n):(p.push(c),c=n);return c!=null&&p.push(c),new this.constructor(p)},e.prototype.consolidateFromIndexToIndex=function(u,s){var n,p,c;return p=this.objects.slice(0),c=p.slice(u,s+1),n=new this.constructor(c).consolidate().toArray(),this.splice.apply(this,[u,c.length].concat(h.call(n)))},e.prototype.findIndexAndOffsetAtPosition=function(u){var s,n,p,c,v,t,r;for(s=0,r=this.objects,p=n=0,c=r.length;c>n;p=++n){if(t=r[p],v=s+t.getLength(),u>=s&&v>u)return{index:p,offset:u-s};s=v}return{index:null,offset:null}},e.prototype.findPositionAtIndexAndOffset=function(u,s){var n,p,c,v,t,r;for(t=0,r=this.objects,n=p=0,c=r.length;c>p;n=++p)if(v=r[n],u>n)t+=v.getLength();else if(n===u){t+=s;break}return t},e.prototype.getEndPosition=function(){var u,s;return this.endPosition!=null?this.endPosition:this.endPosition=function(){var n,p,c;for(s=0,c=this.objects,n=0,p=c.length;p>n;n++)u=c[n],s+=u.getLength();return s}.call(this)},e.prototype.toString=function(){return this.objects.join("")},e.prototype.toArray=function(){return this.objects.slice(0)},e.prototype.toJSON=function(){return this.toArray()},e.prototype.isEqualTo=function(u){return e.__super__.isEqualTo.apply(this,arguments)||d(this.objects,u?.objects)},d=function(u,s){var n,p,c,v,t;if(s==null&&(s=[]),u.length!==s.length)return!1;for(t=!0,p=n=0,c=u.length;c>n;p=++n)v=u[p],t&&!v.isEqualTo(s[p])&&(t=!1);return t},e.prototype.contentsForInspection=function(){var u;return{objects:"["+function(){var s,n,p,c;for(p=this.objects,c=[],s=0,n=p.length;n>s;s++)u=p[s],c.push(u.inspect());return c}.call(this).join(", ")+"]"}},i=function(u){return u[0]},a=function(u){return u[1]},e}(g.Object)}.call(this),function(){var x=function(y,h){function o(){this.constructor=y}for(var e in h)b.call(h,e)&&(y[e]=h[e]);return o.prototype=h.prototype,y.prototype=new o,y.__super__=h.prototype,y},b={}.hasOwnProperty;g.Text=function(y){function h(o){var e;o==null&&(o=[]),h.__super__.constructor.apply(this,arguments),this.pieceList=new g.SplittableList(function(){var a,d,i;for(i=[],a=0,d=o.length;d>a;a++)e=o[a],e.isEmpty()||i.push(e);return i}())}return x(h,y),h.textForAttachmentWithAttributes=function(o,e){var a;return a=new g.AttachmentPiece(o,e),new this([a])},h.textForStringWithAttributes=function(o,e){var a;return a=new g.StringPiece(o,e),new this([a])},h.fromJSON=function(o){var e,a;return a=function(){var d,i,u;for(u=[],d=0,i=o.length;i>d;d++)e=o[d],u.push(g.Piece.fromJSON(e));return u}(),new this(a)},h.prototype.copy=function(){return this.copyWithPieceList(this.pieceList)},h.prototype.copyWithPieceList=function(o){return new this.constructor(o.consolidate().toArray())},h.prototype.copyUsingObjectMap=function(o){var e,a;return a=function(){var d,i,u,s,n;for(u=this.getPieces(),n=[],d=0,i=u.length;i>d;d++)e=u[d],n.push((s=o.find(e))!=null?s:e);return n}.call(this),new this.constructor(a)},h.prototype.appendText=function(o){return this.insertTextAtPosition(o,this.getLength())},h.prototype.insertTextAtPosition=function(o,e){return this.copyWithPieceList(this.pieceList.insertSplittableListAtPosition(o.pieceList,e))},h.prototype.removeTextAtRange=function(o){return this.copyWithPieceList(this.pieceList.removeObjectsInRange(o))},h.prototype.replaceTextAtRange=function(o,e){return this.removeTextAtRange(e).insertTextAtPosition(o,e[0])},h.prototype.moveTextFromRangeToPosition=function(o,e){var a,d;if(!(o[0]<=e&&e<=o[1]))return d=this.getTextAtRange(o),a=d.getLength(),o[0]a;a++)e=i[a],u.push(e.getAttributes());return u}.call(this),g.Hash.fromCommonAttributesOfObjects(o).toObject()},h.prototype.getCommonAttributesAtRange=function(o){var e;return(e=this.getTextAtRange(o).getCommonAttributes())!=null?e:{}},h.prototype.getExpandedRangeForAttributeAtOffset=function(o,e){var a,d,i;for(a=i=e,d=this.getLength();a>0&&this.getCommonAttributesAtRange([a-1,i])[o];)a--;for(;d>i&&this.getCommonAttributesAtRange([e,i+1])[o];)i++;return[a,i]},h.prototype.getTextAtRange=function(o){return this.copyWithPieceList(this.pieceList.getSplittableListInRange(o))},h.prototype.getStringAtRange=function(o){return this.pieceList.getSplittableListInRange(o).toString()},h.prototype.getStringAtPosition=function(o){return this.getStringAtRange([o,o+1])},h.prototype.startsWithString=function(o){return this.getStringAtRange([0,o.length])===o},h.prototype.endsWithString=function(o){var e;return e=this.getLength(),this.getStringAtRange([e-o.length,e])===o},h.prototype.getAttachmentPieces=function(){var o,e,a,d,i;for(d=this.pieceList.toArray(),i=[],o=0,e=d.length;e>o;o++)a=d[o],a.attachment!=null&&i.push(a);return i},h.prototype.getAttachments=function(){var o,e,a,d,i;for(d=this.getAttachmentPieces(),i=[],o=0,e=d.length;e>o;o++)a=d[o],i.push(a.attachment);return i},h.prototype.getAttachmentAndPositionById=function(o){var e,a,d,i,u,s;for(i=0,u=this.pieceList.toArray(),e=0,a=u.length;a>e;e++){if(d=u[e],((s=d.attachment)!=null?s.id:void 0)===o)return{attachment:d.attachment,position:i};i+=d.length}return{attachment:null,position:null}},h.prototype.getAttachmentById=function(o){var e,a,d;return d=this.getAttachmentAndPositionById(o),e=d.attachment,a=d.position,e},h.prototype.getRangeOfAttachment=function(o){var e,a;return a=this.getAttachmentAndPositionById(o.id),o=a.attachment,e=a.position,o!=null?[e,e+1]:void 0},h.prototype.updateAttributesForAttachment=function(o,e){var a;return(a=this.getRangeOfAttachment(e))?this.addAttributesAtRange(o,a):this},h.prototype.getLength=function(){return this.pieceList.getEndPosition()},h.prototype.isEmpty=function(){return this.getLength()===0},h.prototype.isEqualTo=function(o){var e;return h.__super__.isEqualTo.apply(this,arguments)||(o!=null&&(e=o.pieceList)!=null?e.isEqualTo(this.pieceList):void 0)},h.prototype.isBlockBreak=function(){return this.getLength()===1&&this.pieceList.getObjectAtIndex(0).isBlockBreak()},h.prototype.eachPiece=function(o){return this.pieceList.eachObject(o)},h.prototype.getPieces=function(){return this.pieceList.toArray()},h.prototype.getPieceAtPosition=function(o){return this.pieceList.getObjectAtPosition(o)},h.prototype.contentsForInspection=function(){return{pieceList:this.pieceList.inspect()}},h.prototype.toSerializableText=function(){var o;return o=this.pieceList.selectSplittableList(function(e){return e.isSerializable()}),this.copyWithPieceList(o)},h.prototype.toString=function(){return this.pieceList.toString()},h.prototype.toJSON=function(){return this.pieceList.toJSON()},h.prototype.toConsole=function(){var o;return JSON.stringify(function(){var e,a,d,i;for(d=this.pieceList.toArray(),i=[],e=0,a=d.length;a>e;e++)o=d[e],i.push(JSON.parse(o.toConsole()));return i}.call(this))},h.prototype.getDirection=function(){return g.getDirection(this.toString())},h.prototype.isRTL=function(){return this.getDirection()==="rtl"},h}(g.Object)}.call(this),function(){var x,b,y,h,o,e=function(u,s){function n(){this.constructor=u}for(var p in s)a.call(s,p)&&(u[p]=s[p]);return n.prototype=s.prototype,u.prototype=new n,u.__super__=s.prototype,u},a={}.hasOwnProperty,d=[].indexOf||function(u){for(var s=0,n=this.length;n>s;s++)if(s in this&&this[s]===u)return s;return-1},i=[].slice;x=g.arraysAreEqual,o=g.spliceArray,y=g.getBlockConfig,b=g.getBlockAttributeNames,h=g.getListAttributeNames,g.Block=function(u){function s(m,C){m==null&&(m=new g.Text),C==null&&(C=[]),s.__super__.constructor.apply(this,arguments),this.text=p(m),this.attributes=C}var n,p,c,v,t,r,l,A,f;return e(s,u),s.fromJSON=function(m){var C;return C=g.Text.fromJSON(m.text),new this(C,m.attributes)},s.prototype.isEmpty=function(){return this.text.isBlockBreak()},s.prototype.isEqualTo=function(m){return s.__super__.isEqualTo.apply(this,arguments)||this.text.isEqualTo(m?.text)&&x(this.attributes,m?.attributes)},s.prototype.copyWithText=function(m){return new this.constructor(m,this.attributes)},s.prototype.copyWithoutText=function(){return this.copyWithText(null)},s.prototype.copyWithAttributes=function(m){return new this.constructor(this.text,m)},s.prototype.copyWithoutAttributes=function(){return this.copyWithAttributes(null)},s.prototype.copyUsingObjectMap=function(m){var C;return this.copyWithText((C=m.find(this.text))?C:this.text.copyUsingObjectMap(m))},s.prototype.addAttribute=function(m){var C;return C=this.attributes.concat(v(m)),this.copyWithAttributes(C)},s.prototype.removeAttribute=function(m){var C,S;return S=y(m).listAttribute,C=r(r(this.attributes,m),S),this.copyWithAttributes(C)},s.prototype.removeLastAttribute=function(){return this.removeAttribute(this.getLastAttribute())},s.prototype.getLastAttribute=function(){return t(this.attributes)},s.prototype.getAttributes=function(){return this.attributes.slice(0)},s.prototype.getAttributeLevel=function(){return this.attributes.length},s.prototype.getAttributeAtLevel=function(m){return this.attributes[m-1]},s.prototype.hasAttribute=function(m){return d.call(this.attributes,m)>=0},s.prototype.hasAttributes=function(){return this.getAttributeLevel()>0},s.prototype.getLastNestableAttribute=function(){return t(this.getNestableAttributes())},s.prototype.getNestableAttributes=function(){var m,C,S,L,O;for(L=this.attributes,O=[],C=0,S=L.length;S>C;C++)m=L[C],y(m).nestable&&O.push(m);return O},s.prototype.getNestingLevel=function(){return this.getNestableAttributes().length},s.prototype.decreaseNestingLevel=function(){var m;return(m=this.getLastNestableAttribute())?this.removeAttribute(m):this},s.prototype.increaseNestingLevel=function(){var m,C,S;return(m=this.getLastNestableAttribute())?(S=this.attributes.lastIndexOf(m),C=o.apply(null,[this.attributes,S+1,0].concat(i.call(v(m)))),this.copyWithAttributes(C)):this},s.prototype.getListItemAttributes=function(){var m,C,S,L,O;for(L=this.attributes,O=[],C=0,S=L.length;S>C;C++)m=L[C],y(m).listAttribute&&O.push(m);return O},s.prototype.isListItem=function(){var m;return(m=y(this.getLastAttribute()))!=null?m.listAttribute:void 0},s.prototype.isTerminalBlock=function(){var m;return(m=y(this.getLastAttribute()))!=null?m.terminal:void 0},s.prototype.breaksOnReturn=function(){var m;return(m=y(this.getLastAttribute()))!=null?m.breakOnReturn:void 0},s.prototype.findLineBreakInDirectionFromPosition=function(m,C){var S,L;return L=this.toString(),S=function(){switch(m){case"forward":return L.indexOf(` +`,C);case"backward":return L.slice(0,C).lastIndexOf(` +`)}}(),S!==-1?S:void 0},s.prototype.contentsForInspection=function(){return{text:this.text.inspect(),attributes:this.attributes}},s.prototype.toString=function(){return this.text.toString()},s.prototype.toJSON=function(){return{text:this.text,attributes:this.attributes}},s.prototype.getDirection=function(){return this.text.getDirection()},s.prototype.isRTL=function(){return this.text.isRTL()},s.prototype.getLength=function(){return this.text.getLength()},s.prototype.canBeConsolidatedWith=function(m){return!this.hasAttributes()&&!m.hasAttributes()&&this.getDirection()===m.getDirection()},s.prototype.consolidateWith=function(m){var C,S;return C=g.Text.textForStringWithAttributes(` +`),S=this.getTextWithoutBlockBreak().appendText(C),this.copyWithText(S.appendText(m.text))},s.prototype.splitAtOffset=function(m){var C,S;return m===0?(C=null,S=this):m===this.getLength()?(C=this,S=null):(C=this.copyWithText(this.text.getTextAtRange([0,m])),S=this.copyWithText(this.text.getTextAtRange([m,this.getLength()]))),[C,S]},s.prototype.getBlockBreakPosition=function(){return this.text.getLength()-1},s.prototype.getTextWithoutBlockBreak=function(){return l(this.text)?this.text.getTextAtRange([0,this.getBlockBreakPosition()]):this.text.copy()},s.prototype.canBeGrouped=function(m){return this.attributes[m]},s.prototype.canBeGroupedWith=function(m,C){var S,L,O,D;return O=m.getAttributes(),L=O[C],S=this.attributes[C],!(S!==L||y(S).group===!1&&(D=O[C+1],d.call(h(),D)<0)||this.getDirection()!==m.getDirection()&&!m.isEmpty())},p=function(m){return m=f(m),m=n(m)},f=function(m){var C,S,L,O,D,R;return O=!1,R=m.getPieces(),S=2<=R.length?i.call(R,0,C=R.length-1):(C=0,[]),L=R[C++],L==null?m:(S=function(){var E,w,k;for(k=[],E=0,w=S.length;w>E;E++)D=S[E],D.isBlockBreak()?(O=!0,k.push(A(D))):k.push(D);return k}(),O?new g.Text(i.call(S).concat([L])):m)},c=g.Text.textForStringWithAttributes(` +`,{blockBreak:!0}),n=function(m){return l(m)?m:m.appendText(c)},l=function(m){var C,S;return S=m.getLength(),S===0?!1:(C=m.getTextAtRange([S-1,S]),C.isBlockBreak())},A=function(m){return m.copyWithoutAttribute("blockBreak")},v=function(m){var C;return C=y(m).listAttribute,C!=null?[C,m]:[m]},t=function(m){return m.slice(-1)[0]},r=function(m,C){var S;return S=m.lastIndexOf(C),S===-1?m:o(m,S,1)},s}(g.Object)}.call(this),function(){var x,b,y,h=function(d,i){function u(){this.constructor=d}for(var s in i)o.call(i,s)&&(d[s]=i[s]);return u.prototype=i.prototype,d.prototype=new u,d.__super__=i.prototype,d},o={}.hasOwnProperty,e=[].indexOf||function(d){for(var i=0,u=this.length;u>i;i++)if(i in this&&this[i]===d)return i;return-1},a=[].slice;b=g.tagName,y=g.walkTree,x=g.nodeIsAttachmentElement,g.HTMLSanitizer=function(d){function i(c,v){var t;t=v??{},this.allowedAttributes=t.allowedAttributes,this.forbiddenProtocols=t.forbiddenProtocols,this.forbiddenElements=t.forbiddenElements,this.allowedAttributes==null&&(this.allowedAttributes=u),this.forbiddenProtocols==null&&(this.forbiddenProtocols=n),this.forbiddenElements==null&&(this.forbiddenElements=s),this.body=p(c)}var u,s,n,p;return h(i,d),u="style href src width height class".split(" "),n="javascript:".split(" "),s="script iframe".split(" "),i.sanitize=function(c,v){var t;return t=new this(c,v),t.sanitize(),t},i.prototype.sanitize=function(){return this.sanitizeElements(),this.normalizeListElementNesting()},i.prototype.getHTML=function(){return this.body.innerHTML},i.prototype.getBody=function(){return this.body},i.prototype.sanitizeElements=function(){var c,v,t,r,l;for(l=y(this.body),r=[];l.nextNode();)switch(t=l.currentNode,t.nodeType){case Node.ELEMENT_NODE:this.elementIsRemovable(t)?r.push(t):this.sanitizeElement(t);break;case Node.COMMENT_NODE:r.push(t)}for(c=0,v=r.length;v>c;c++)t=r[c],g.removeNode(t);return this.body},i.prototype.sanitizeElement=function(c){var v,t,r,l,A;for(c.hasAttribute("href")&&(l=c.protocol,e.call(this.forbiddenProtocols,l)>=0&&c.removeAttribute("href")),A=a.call(c.attributes),v=0,t=A.length;t>v;v++)r=A[v].name,e.call(this.allowedAttributes,r)>=0||r.indexOf("data-trix")===0||c.removeAttribute(r);return c},i.prototype.normalizeListElementNesting=function(){var c,v,t,r,l;for(l=a.call(this.body.querySelectorAll("ul,ol")),c=0,v=l.length;v>c;c++)t=l[c],(r=t.previousElementSibling)&&b(r)==="li"&&r.appendChild(t);return this.body},i.prototype.elementIsRemovable=function(c){return c?.nodeType===Node.ELEMENT_NODE?this.elementIsForbidden(c)||this.elementIsntSerializable(c):void 0},i.prototype.elementIsForbidden=function(c){var v;return v=b(c),e.call(this.forbiddenElements,v)>=0},i.prototype.elementIsntSerializable=function(c){return c.getAttribute("data-trix-serialize")==="false"&&!x(c)},p=function(c){var v,t,r,l,A;for(c==null&&(c=""),c=c.replace(/<\/html[^>]*>[^]*$/i,""),v=document.implementation.createHTMLDocument(""),v.documentElement.innerHTML=c,A=v.head.querySelectorAll("style"),r=0,l=A.length;l>r;r++)t=A[r],v.body.appendChild(t);return v.body},i}(g.BasicObject)}.call(this),function(){var x,b,y,h,o,e,a,d,i,u,s,n=function(v,t){function r(){this.constructor=v}for(var l in t)p.call(t,l)&&(v[l]=t[l]);return r.prototype=t.prototype,v.prototype=new r,v.__super__=t.prototype,v},p={}.hasOwnProperty,c=[].indexOf||function(v){for(var t=0,r=this.length;r>t;t++)if(t in this&&this[t]===v)return t;return-1};x=g.arraysAreEqual,e=g.makeElement,u=g.tagName,o=g.getBlockTagNames,s=g.walkTree,h=g.findClosestElementFromNode,y=g.elementContainsNode,a=g.nodeIsAttachmentElement,d=g.normalizeSpaces,b=g.breakableWhitespacePattern,i=g.squishBreakableWhitespace,g.HTMLParser=function(v){function t(w,k){this.html=w,this.referenceElement=(k??{}).referenceElement,this.blocks=[],this.blockElements=[],this.processedElements=[]}var r,l,A,f,m,C,S,L,O,D,R,E;return n(t,v),t.parse=function(w,k){var T;return T=new this(w,k),T.parse(),T},t.prototype.getDocument=function(){return g.Document.fromJSON(this.blocks)},t.prototype.parse=function(){var w,k;try{for(this.createHiddenContainer(),w=g.HTMLSanitizer.sanitize(this.html).getHTML(),this.containerElement.innerHTML=w,k=s(this.containerElement,{usingFilter:S});k.nextNode();)this.processNode(k.currentNode);return this.translateBlockElementMarginsToNewlines()}finally{this.removeHiddenContainer()}},t.prototype.createHiddenContainer=function(){return this.referenceElement?(this.containerElement=this.referenceElement.cloneNode(!1),this.containerElement.removeAttribute("id"),this.containerElement.setAttribute("data-trix-internal",""),this.containerElement.style.display="none",this.referenceElement.parentNode.insertBefore(this.containerElement,this.referenceElement.nextSibling)):(this.containerElement=e({tagName:"div",style:{display:"none"}}),document.body.appendChild(this.containerElement))},t.prototype.removeHiddenContainer=function(){return g.removeNode(this.containerElement)},S=function(w){return u(w)==="style"?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},t.prototype.processNode=function(w){switch(w.nodeType){case Node.TEXT_NODE:if(!this.isInsignificantTextNode(w))return this.appendBlockForTextNode(w),this.processTextNode(w);break;case Node.ELEMENT_NODE:return this.appendBlockForElement(w),this.processElement(w)}},t.prototype.appendBlockForTextNode=function(w){var k,T,N;return T=w.parentNode,T===this.currentBlockElement&&this.isBlockElement(w.previousSibling)?this.appendStringWithAttributes(` +`):T!==this.containerElement&&!this.isBlockElement(T)||(k=this.getBlockAttributes(T),x(k,(N=this.currentBlock)!=null?N.attributes:void 0))?void 0:(this.currentBlock=this.appendBlockForAttributesWithElement(k,T),this.currentBlockElement=T)},t.prototype.appendBlockForElement=function(w){var k,T,N,P;if(N=this.isBlockElement(w),T=y(this.currentBlockElement,w),N&&!this.isBlockElement(w.firstChild)){if((!this.isInsignificantTextNode(w.firstChild)||!this.isBlockElement(w.firstElementChild))&&(k=this.getBlockAttributes(w),w.firstChild))return T&&x(k,this.currentBlock.attributes)?this.appendStringWithAttributes(` +`):(this.currentBlock=this.appendBlockForAttributesWithElement(k,w),this.currentBlockElement=w)}else if(this.currentBlockElement&&!T&&!N)return(P=this.findParentBlockElement(w))?this.appendBlockForElement(P):(this.currentBlock=this.appendEmptyBlock(),this.currentBlockElement=null)},t.prototype.findParentBlockElement=function(w){var k;for(k=w.parentElement;k&&k!==this.containerElement;){if(this.isBlockElement(k)&&c.call(this.blockElements,k)>=0)return k;k=k.parentElement}return null},t.prototype.processTextNode=function(w){var k,T;return T=w.data,l(w.parentNode)||(T=i(T),R((k=w.previousSibling)!=null?k.textContent:void 0)&&(T=m(T))),this.appendStringWithAttributes(T,this.getTextAttributes(w.parentNode))},t.prototype.processElement=function(w){var k,T,N,P,_;if(a(w))return k=L(w,"attachment"),Object.keys(k).length&&(P=this.getTextAttributes(w),this.appendAttachmentWithAttributes(k,P),w.innerHTML=""),this.processedElements.push(w);switch(u(w)){case"br":return this.isExtraBR(w)||this.isBlockElement(w.nextSibling)||this.appendStringWithAttributes(` +`,this.getTextAttributes(w)),this.processedElements.push(w);case"img":k={url:w.getAttribute("src"),contentType:"image"},N=f(w);for(T in N)_=N[T],k[T]=_;return this.appendAttachmentWithAttributes(k,this.getTextAttributes(w)),this.processedElements.push(w);case"tr":if(w.parentNode.firstChild!==w)return this.appendStringWithAttributes(` +`);break;case"td":if(w.parentNode.firstChild!==w)return this.appendStringWithAttributes(" | ")}},t.prototype.appendBlockForAttributesWithElement=function(w,k){var T;return this.blockElements.push(k),T=r(w),this.blocks.push(T),T},t.prototype.appendEmptyBlock=function(){return this.appendBlockForAttributesWithElement([],null)},t.prototype.appendStringWithAttributes=function(w,k){return this.appendPiece(D(w,k))},t.prototype.appendAttachmentWithAttributes=function(w,k){return this.appendPiece(O(w,k))},t.prototype.appendPiece=function(w){return this.blocks.length===0&&this.appendEmptyBlock(),this.blocks[this.blocks.length-1].text.push(w)},t.prototype.appendStringToTextAtIndex=function(w,k){var T,N;return N=this.blocks[k].text,T=N[N.length-1],T?.type==="string"?T.string+=w:N.push(D(w))},t.prototype.prependStringToTextAtIndex=function(w,k){var T,N;return N=this.blocks[k].text,T=N[0],T?.type==="string"?T.string=w+T.string:N.unshift(D(w))},D=function(w,k){var T;return k==null&&(k={}),T="string",w=d(w),{string:w,attributes:k,type:T}},O=function(w,k){var T;return k==null&&(k={}),T="attachment",{attachment:w,attributes:k,type:T}},r=function(w){var k;return w==null&&(w={}),k=[],{text:k,attributes:w}},t.prototype.getTextAttributes=function(w){var k,T,N,P,_,F,B,M,U,H,z,j;N={},U=g.config.textAttributes;for(k in U)if(_=U[k],_.tagName&&h(w,{matchingSelector:_.tagName,untilNode:this.containerElement}))N[k]=!0;else if(_.parser){if(j=_.parser(w)){for(T=!1,H=this.findBlockElementAncestors(w),F=0,M=H.length;M>F;F++)if(P=H[F],_.parser(P)===j){T=!0;break}T||(N[k]=j)}}else _.styleProperty&&(j=w.style[_.styleProperty])&&(N[k]=j);if(a(w)){z=L(w,"attributes");for(B in z)j=z[B],N[B]=j}return N},t.prototype.getBlockAttributes=function(w){var k,T,N,P;for(T=[];w&&w!==this.containerElement;){P=g.config.blockAttributes;for(k in P)N=P[k],N.parse!==!1&&u(w)===N.tagName&&(typeof N.test=="function"&&N.test(w)||!N.test)&&(T.push(k),N.listAttribute&&T.push(N.listAttribute));w=w.parentNode}return T.reverse()},t.prototype.findBlockElementAncestors=function(w){var k,T;for(k=[];w&&w!==this.containerElement;)T=u(w),c.call(o(),T)>=0&&k.push(w),w=w.parentNode;return k},L=function(w,k){try{return JSON.parse(w.getAttribute("data-trix-"+k))}catch{return{}}},f=function(w){var k,T,N;return N=w.getAttribute("width"),T=w.getAttribute("height"),k={},N&&(k.width=parseInt(N,10)),T&&(k.height=parseInt(T,10)),k},t.prototype.isBlockElement=function(w){var k;if(w?.nodeType===Node.ELEMENT_NODE&&!a(w)&&!h(w,{matchingSelector:"td",untilNode:this.containerElement}))return k=u(w),c.call(o(),k)>=0||window.getComputedStyle(w).display==="block"},t.prototype.isInsignificantTextNode=function(w){var k,T,N;if(w?.nodeType===Node.TEXT_NODE&&E(w.data)&&(T=w.parentNode,N=w.previousSibling,k=w.nextSibling,(!C(T.previousSibling)||this.isBlockElement(T.previousSibling))&&!l(T)))return!N||this.isBlockElement(N)||!k||this.isBlockElement(k)},t.prototype.isExtraBR=function(w){return u(w)==="br"&&this.isBlockElement(w.parentNode)&&w.parentNode.lastChild===w},l=function(w){var k;return k=window.getComputedStyle(w).whiteSpace,k==="pre"||k==="pre-wrap"||k==="pre-line"},C=function(w){return w&&!R(w.textContent)},t.prototype.translateBlockElementMarginsToNewlines=function(){var w,k,T,N,P,_,F,B;for(k=this.getMarginOfDefaultBlockElement(),F=this.blocks,B=[],N=T=0,P=F.length;P>T;N=++T)w=F[N],(_=this.getMarginOfBlockElementAtIndex(N))&&(_.top>2*k.top&&this.prependStringToTextAtIndex(` +`,N),B.push(_.bottom>2*k.bottom?this.appendStringToTextAtIndex(` +`,N):void 0));return B},t.prototype.getMarginOfBlockElementAtIndex=function(w){var k,T;return!(k=this.blockElements[w])||!k.textContent||(T=u(k),c.call(o(),T)>=0||c.call(this.processedElements,k)>=0)?void 0:A(k)},t.prototype.getMarginOfDefaultBlockElement=function(){var w;return w=e(g.config.blockAttributes.default.tagName),this.containerElement.appendChild(w),A(w)},A=function(w){var k;return k=window.getComputedStyle(w),k.display==="block"?{top:parseInt(k.marginTop),bottom:parseInt(k.marginBottom)}:void 0},m=function(w){return w.replace(RegExp("^"+b.source+"+"),"")},E=function(w){return RegExp("^"+b.source+"*$").test(w)},R=function(w){return/\s$/.test(w)},t}(g.BasicObject)}.call(this),function(){var x,b,y,h,o=function(i,u){function s(){this.constructor=i}for(var n in u)e.call(u,n)&&(i[n]=u[n]);return s.prototype=u.prototype,i.prototype=new s,i.__super__=u.prototype,i},e={}.hasOwnProperty,a=[].slice,d=[].indexOf||function(i){for(var u=0,s=this.length;s>u;u++)if(u in this&&this[u]===i)return u;return-1};x=g.arraysAreEqual,y=g.normalizeRange,h=g.rangeIsCollapsed,b=g.getBlockConfig,g.Document=function(i){function u(n){n==null&&(n=[]),u.__super__.constructor.apply(this,arguments),n.length===0&&(n=[new g.Block]),this.blockList=g.SplittableList.box(n)}var s;return o(u,i),u.fromJSON=function(n){var p,c;return c=function(){var v,t,r;for(r=[],v=0,t=n.length;t>v;v++)p=n[v],r.push(g.Block.fromJSON(p));return r}(),new this(c)},u.fromHTML=function(n,p){return g.HTMLParser.parse(n,p).getDocument()},u.fromString=function(n,p){var c;return c=g.Text.textForStringWithAttributes(n,p),new this([new g.Block(c)])},u.prototype.isEmpty=function(){var n;return this.blockList.length===1&&(n=this.getBlockAtIndex(0),n.isEmpty()&&!n.hasAttributes())},u.prototype.copy=function(n){var p;return n==null&&(n={}),p=n.consolidateBlocks?this.blockList.consolidate().toArray():this.blockList.toArray(),new this.constructor(p)},u.prototype.copyUsingObjectsFromDocument=function(n){var p;return p=new g.ObjectMap(n.getObjects()),this.copyUsingObjectMap(p)},u.prototype.copyUsingObjectMap=function(n){var p,c,v;return c=function(){var t,r,l,A;for(l=this.getBlocks(),A=[],t=0,r=l.length;r>t;t++)p=l[t],A.push((v=n.find(p))?v:p.copyUsingObjectMap(n));return A}.call(this),new this.constructor(c)},u.prototype.copyWithBaseBlockAttributes=function(n){var p,c,v;return n==null&&(n=[]),v=function(){var t,r,l,A;for(l=this.getBlocks(),A=[],t=0,r=l.length;r>t;t++)c=l[t],p=n.concat(c.getAttributes()),A.push(c.copyWithAttributes(p));return A}.call(this),new this.constructor(v)},u.prototype.replaceBlock=function(n,p){var c;return c=this.blockList.indexOf(n),c===-1?this:new this.constructor(this.blockList.replaceObjectAtIndex(p,c))},u.prototype.insertDocumentAtRange=function(n,p){var c,v,t,r,l,A,f;return v=n.blockList,l=(p=y(p))[0],A=this.locationFromPosition(l),t=A.index,r=A.offset,f=this,c=this.getBlockAtPosition(l),h(p)&&c.isEmpty()&&!c.hasAttributes()?f=new this.constructor(f.blockList.removeObjectAtIndex(t)):c.getBlockBreakPosition()===r&&l++,f=f.removeTextAtRange(p),new this.constructor(f.blockList.insertSplittableListAtPosition(v,l))},u.prototype.mergeDocumentAtRange=function(n,p){var c,v,t,r,l,A,f,m,C,S,L,O;return L=(p=y(p))[0],S=this.locationFromPosition(L),v=this.getBlockAtIndex(S.index).getAttributes(),c=n.getBaseBlockAttributes(),O=v.slice(-c.length),x(c,O)?(f=v.slice(0,-c.length),A=n.copyWithBaseBlockAttributes(f)):A=n.copy({consolidateBlocks:!0}).copyWithBaseBlockAttributes(v),t=A.getBlockCount(),r=A.getBlockAtIndex(0),x(v,r.getAttributes())?(l=r.getTextWithoutBlockBreak(),C=this.insertTextAtRange(l,p),t>1&&(A=new this.constructor(A.getBlocks().slice(1)),m=L+l.getLength(),C=C.insertDocumentAtRange(A,m))):C=this.insertDocumentAtRange(A,p),C},u.prototype.insertTextAtRange=function(n,p){var c,v,t,r,l;return l=(p=y(p))[0],r=this.locationFromPosition(l),v=r.index,t=r.offset,c=this.removeTextAtRange(p),new this.constructor(c.blockList.editObjectAtIndex(v,function(A){return A.copyWithText(A.text.insertTextAtPosition(n,t))}))},u.prototype.removeTextAtRange=function(n){var p,c,v,t,r,l,A,f,m,C,S,L,O,D,R,E,w,k,T,N,P;return C=n=y(n),f=C[0],k=C[1],h(n)?this:(S=this.locationRangeFromRange(n),l=S[0],E=S[1],r=l.index,A=l.offset,t=this.getBlockAtIndex(r),R=E.index,w=E.offset,D=this.getBlockAtIndex(R),L=k-f===1&&t.getBlockBreakPosition()===A&&D.getBlockBreakPosition()!==w&&D.text.getStringAtPosition(w)===` +`,L?v=this.blockList.editObjectAtIndex(R,function(_){return _.copyWithText(_.text.removeTextAtRange([w,w+1]))}):(m=t.text.getTextAtRange([0,A]),T=D.text.getTextAtRange([w,D.getLength()]),N=m.appendText(T),O=r!==R&&A===0,P=O&&t.getAttributeLevel()>=D.getAttributeLevel(),c=P?D.copyWithText(N):t.copyWithText(N),p=R+1-r,v=this.blockList.splice(r,p,c)),new this.constructor(v))},u.prototype.moveTextFromRangeToPosition=function(n,p){var c,v,t,r,l,A,f,m,C,S;return A=n=y(n),C=A[0],t=A[1],p>=C&&t>=p?this:(v=this.getDocumentAtRange(n),m=this.removeTextAtRange(n),l=p>C,l&&(p-=v.getLength()),f=v.getBlocks(),r=f[0],c=2<=f.length?a.call(f,1):[],c.length===0?(S=r.getTextWithoutBlockBreak(),l&&(p+=1)):S=r.text,m=m.insertTextAtRange(S,p),c.length===0?m:(v=new this.constructor(c),p+=S.getLength(),m.insertDocumentAtRange(v,p)))},u.prototype.addAttributeAtRange=function(n,p,c){var v;return v=this.blockList,this.eachBlockAtRange(c,function(t,r,l){return v=v.editObjectAtIndex(l,function(){return b(n)?t.addAttribute(n,p):r[0]===r[1]?t:t.copyWithText(t.text.addAttributeAtRange(n,p,r))})}),new this.constructor(v)},u.prototype.addAttribute=function(n,p){var c;return c=this.blockList,this.eachBlock(function(v,t){return c=c.editObjectAtIndex(t,function(){return v.addAttribute(n,p)})}),new this.constructor(c)},u.prototype.removeAttributeAtRange=function(n,p){var c;return c=this.blockList,this.eachBlockAtRange(p,function(v,t,r){return b(n)?c=c.editObjectAtIndex(r,function(){return v.removeAttribute(n)}):t[0]!==t[1]?c=c.editObjectAtIndex(r,function(){return v.copyWithText(v.text.removeAttributeAtRange(n,t))}):void 0}),new this.constructor(c)},u.prototype.updateAttributesForAttachment=function(n,p){var c,v,t,r;return t=(v=this.getRangeOfAttachment(p))[0],c=this.locationFromPosition(t).index,r=this.getTextAtIndex(c),new this.constructor(this.blockList.editObjectAtIndex(c,function(l){return l.copyWithText(r.updateAttributesForAttachment(n,p))}))},u.prototype.removeAttributeForAttachment=function(n,p){var c;return c=this.getRangeOfAttachment(p),this.removeAttributeAtRange(n,c)},u.prototype.insertBlockBreakAtRange=function(n){var p,c,v,t;return t=(n=y(n))[0],v=this.locationFromPosition(t).offset,c=this.removeTextAtRange(n),v===0&&(p=[new g.Block]),new this.constructor(c.blockList.insertSplittableListAtPosition(new g.SplittableList(p),t))},u.prototype.applyBlockAttributeAtRange=function(n,p,c){var v,t,r,l;return r=this.expandRangeToLineBreaksAndSplitBlocks(c),t=r.document,c=r.range,v=b(n),v.listAttribute?(t=t.removeLastListAttributeAtRange(c,{exceptAttributeName:n}),l=t.convertLineBreaksToBlockBreaksInRange(c),t=l.document,c=l.range):t=v.exclusive?t.removeBlockAttributesAtRange(c):v.terminal?t.removeLastTerminalAttributeAtRange(c):t.consolidateBlocksAtRange(c),t.addAttributeAtRange(n,p,c)},u.prototype.removeLastListAttributeAtRange=function(n,p){var c;return p==null&&(p={}),c=this.blockList,this.eachBlockAtRange(n,function(v,t,r){var l;if((l=v.getLastAttribute())&&b(l).listAttribute&&l!==p.exceptAttributeName)return c=c.editObjectAtIndex(r,function(){return v.removeAttribute(l)})}),new this.constructor(c)},u.prototype.removeLastTerminalAttributeAtRange=function(n){var p;return p=this.blockList,this.eachBlockAtRange(n,function(c,v,t){var r;if((r=c.getLastAttribute())&&b(r).terminal)return p=p.editObjectAtIndex(t,function(){return c.removeAttribute(r)})}),new this.constructor(p)},u.prototype.removeBlockAttributesAtRange=function(n){var p;return p=this.blockList,this.eachBlockAtRange(n,function(c,v,t){return c.hasAttributes()?p=p.editObjectAtIndex(t,function(){return c.copyWithoutAttributes()}):void 0}),new this.constructor(p)},u.prototype.expandRangeToLineBreaksAndSplitBlocks=function(n){var p,c,v,t,r,l,A,f,m;return l=n=y(n),m=l[0],t=l[1],f=this.locationFromPosition(m),v=this.locationFromPosition(t),p=this,A=p.getBlockAtIndex(f.index),(f.offset=A.findLineBreakInDirectionFromPosition("backward",f.offset))!=null&&(r=p.positionFromLocation(f),p=p.insertBlockBreakAtRange([r,r+1]),v.index+=1,v.offset-=p.getBlockAtIndex(f.index).getLength(),f.index+=1),f.offset=0,v.offset===0&&v.index>f.index?(v.index-=1,v.offset=p.getBlockAtIndex(v.index).getBlockBreakPosition()):(c=p.getBlockAtIndex(v.index),c.text.getStringAtRange([v.offset-1,v.offset])===` +`?v.offset-=1:v.offset=c.findLineBreakInDirectionFromPosition("forward",v.offset),v.offset!==c.getBlockBreakPosition()&&(r=p.positionFromLocation(v),p=p.insertBlockBreakAtRange([r,r+1]))),m=p.positionFromLocation(f),t=p.positionFromLocation(v),n=y([m,t]),{document:p,range:n}},u.prototype.convertLineBreaksToBlockBreaksInRange=function(n){var p,c,v;return c=(n=y(n))[0],v=this.getStringAtRange(n).slice(0,-1),p=this,v.replace(/.*?\n/g,function(t){return c+=t.length,p=p.insertBlockBreakAtRange([c-1,c])}),{document:p,range:n}},u.prototype.consolidateBlocksAtRange=function(n){var p,c,v,t,r;return v=n=y(n),r=v[0],c=v[1],t=this.locationFromPosition(r).index,p=this.locationFromPosition(c).index,new this.constructor(this.blockList.consolidateFromIndexToIndex(t,p))},u.prototype.getDocumentAtRange=function(n){var p;return n=y(n),p=this.blockList.getSplittableListInRange(n).toArray(),new this.constructor(p)},u.prototype.getStringAtRange=function(n){var p,c,v;return v=n=y(n),c=v[v.length-1],c!==this.getLength()&&(p=-1),this.getDocumentAtRange(n).toString().slice(0,p)},u.prototype.getBlockAtIndex=function(n){return this.blockList.getObjectAtIndex(n)},u.prototype.getBlockAtPosition=function(n){var p;return p=this.locationFromPosition(n).index,this.getBlockAtIndex(p)},u.prototype.getTextAtIndex=function(n){var p;return(p=this.getBlockAtIndex(n))!=null?p.text:void 0},u.prototype.getTextAtPosition=function(n){var p;return p=this.locationFromPosition(n).index,this.getTextAtIndex(p)},u.prototype.getPieceAtPosition=function(n){var p,c,v;return v=this.locationFromPosition(n),p=v.index,c=v.offset,this.getTextAtIndex(p).getPieceAtPosition(c)},u.prototype.getCharacterAtPosition=function(n){var p,c,v;return v=this.locationFromPosition(n),p=v.index,c=v.offset,this.getTextAtIndex(p).getStringAtRange([c,c+1])},u.prototype.getLength=function(){return this.blockList.getEndPosition()},u.prototype.getBlocks=function(){return this.blockList.toArray()},u.prototype.getBlockCount=function(){return this.blockList.length},u.prototype.getEditCount=function(){return this.editCount},u.prototype.eachBlock=function(n){return this.blockList.eachObject(n)},u.prototype.eachBlockAtRange=function(n,p){var c,v,t,r,l,A,f,m,C,S,L,O;if(A=n=y(n),L=A[0],t=A[1],S=this.locationFromPosition(L),v=this.locationFromPosition(t),S.index===v.index)return c=this.getBlockAtIndex(S.index),O=[S.offset,v.offset],p(c,O,S.index);for(C=[],l=r=f=S.index,m=v.index;m>=f?m>=r:r>=m;l=m>=f?++r:--r)(c=this.getBlockAtIndex(l))?(O=function(){switch(l){case S.index:return[S.offset,c.text.getLength()];case v.index:return[0,v.offset];default:return[0,c.text.getLength()]}}(),C.push(p(c,O,l))):C.push(void 0);return C},u.prototype.getCommonAttributesAtRange=function(n){var p,c,v;return c=(n=y(n))[0],h(n)?this.getCommonAttributesAtPosition(c):(v=[],p=[],this.eachBlockAtRange(n,function(t,r){return r[0]!==r[1]?(v.push(t.text.getCommonAttributesAtRange(r)),p.push(s(t))):void 0}),g.Hash.fromCommonAttributesOfObjects(v).merge(g.Hash.fromCommonAttributesOfObjects(p)).toObject())},u.prototype.getCommonAttributesAtPosition=function(n){var p,c,v,t,r,l,A,f,m,C;if(m=this.locationFromPosition(n),r=m.index,f=m.offset,v=this.getBlockAtIndex(r),!v)return{};t=s(v),p=v.text.getAttributesAtPosition(f),c=v.text.getAttributesAtPosition(f-1),l=function(){var S,L;S=g.config.textAttributes,L=[];for(A in S)C=S[A],C.inheritable&&L.push(A);return L}();for(A in c)C=c[A],(C===p[A]||d.call(l,A)>=0)&&(t[A]=C);return t},u.prototype.getRangeOfCommonAttributeAtPosition=function(n,p){var c,v,t,r,l,A,f,m,C;return l=this.locationFromPosition(p),t=l.index,r=l.offset,C=this.getTextAtIndex(t),A=C.getExpandedRangeForAttributeAtOffset(n,r),m=A[0],v=A[1],f=this.positionFromLocation({index:t,offset:m}),c=this.positionFromLocation({index:t,offset:v}),y([f,c])},u.prototype.getBaseBlockAttributes=function(){var n,p,c,v,t,r,l;for(n=this.getBlockAtIndex(0).getAttributes(),c=v=1,l=this.getBlockCount();l>=1?l>v:v>l;c=l>=1?++v:--v)p=this.getBlockAtIndex(c).getAttributes(),r=Math.min(n.length,p.length),n=function(){var A,f,m;for(m=[],t=A=0,f=r;(f>=0?f>A:A>f)&&p[t]===n[t];t=f>=0?++A:--A)m.push(p[t]);return m}();return n},s=function(n){var p,c;return c={},(p=n.getLastAttribute())&&(c[p]=!0),c},u.prototype.getAttachmentById=function(n){var p,c,v,t;for(t=this.getAttachments(),c=0,v=t.length;v>c;c++)if(p=t[c],p.id===n)return p},u.prototype.getAttachmentPieces=function(){var n;return n=[],this.blockList.eachObject(function(p){var c;return c=p.text,n=n.concat(c.getAttachmentPieces())}),n},u.prototype.getAttachments=function(){var n,p,c,v,t;for(v=this.getAttachmentPieces(),t=[],n=0,p=v.length;p>n;n++)c=v[n],t.push(c.attachment);return t},u.prototype.getRangeOfAttachment=function(n){var p,c,v,t,r,l,A;for(t=0,r=this.blockList.toArray(),c=p=0,v=r.length;v>p;c=++p){if(l=r[c].text,A=l.getRangeOfAttachment(n))return y([t+A[0],t+A[1]]);t+=l.getLength()}},u.prototype.getLocationRangeOfAttachment=function(n){var p;return p=this.getRangeOfAttachment(n),this.locationRangeFromRange(p)},u.prototype.getAttachmentPieceForAttachment=function(n){var p,c,v,t;for(t=this.getAttachmentPieces(),p=0,c=t.length;c>p;p++)if(v=t[p],v.attachment===n)return v},u.prototype.findRangesForBlockAttribute=function(n){var p,c,v,t,r,l,A;for(r=0,l=[],A=this.getBlocks(),c=0,v=A.length;v>c;c++)p=A[c],t=p.getLength(),p.hasAttribute(n)&&l.push([r,r+t]),r+=t;return l},u.prototype.findRangesForTextAttribute=function(n,p){var c,v,t,r,l,A,f,m,C,S;for(S=(p??{}).withValue,A=0,f=[],m=[],r=function(L){return S!=null?L.getAttribute(n)===S:L.hasAttribute(n)},C=this.getPieces(),c=0,v=C.length;v>c;c++)l=C[c],t=l.getLength(),r(l)&&(f[1]===A?f[1]=A+t:m.push(f=[A,A+t])),A+=t;return m},u.prototype.locationFromPosition=function(n){var p,c;return c=this.blockList.findIndexAndOffsetAtPosition(Math.max(0,n)),c.index!=null?c:(p=this.getBlocks(),{index:p.length-1,offset:p[p.length-1].getLength()})},u.prototype.positionFromLocation=function(n){return this.blockList.findPositionAtIndexAndOffset(n.index,n.offset)},u.prototype.locationRangeFromPosition=function(n){return y(this.locationFromPosition(n))},u.prototype.locationRangeFromRange=function(n){var p,c,v,t;if(n=y(n))return t=n[0],c=n[1],v=this.locationFromPosition(t),p=this.locationFromPosition(c),y([v,p])},u.prototype.rangeFromLocationRange=function(n){var p,c;return n=y(n),p=this.positionFromLocation(n[0]),h(n)||(c=this.positionFromLocation(n[1])),y([p,c])},u.prototype.isEqualTo=function(n){return this.blockList.isEqualTo(n?.blockList)},u.prototype.getTexts=function(){var n,p,c,v,t;for(v=this.getBlocks(),t=[],p=0,c=v.length;c>p;p++)n=v[p],t.push(n.text);return t},u.prototype.getPieces=function(){var n,p,c,v,t;for(c=[],v=this.getTexts(),n=0,p=v.length;p>n;n++)t=v[n],c.push.apply(c,t.getPieces());return c},u.prototype.getObjects=function(){return this.getBlocks().concat(this.getTexts()).concat(this.getPieces())},u.prototype.toSerializableDocument=function(){var n;return n=[],this.blockList.eachObject(function(p){return n.push(p.copyWithText(p.text.toSerializableText()))}),new this.constructor(n)},u.prototype.toString=function(){return this.blockList.toString()},u.prototype.toJSON=function(){return this.blockList.toJSON()},u.prototype.toConsole=function(){var n;return JSON.stringify(function(){var p,c,v,t;for(v=this.blockList.toArray(),t=[],p=0,c=v.length;c>p;p++)n=v[p],t.push(JSON.parse(n.text.toConsole()));return t}.call(this))},u}(g.Object)}.call(this),function(){g.LineBreakInsertion=function(){function x(b){var y;this.composition=b,this.document=this.composition.document,y=this.composition.getSelectedRange(),this.startPosition=y[0],this.endPosition=y[1],this.startLocation=this.document.locationFromPosition(this.startPosition),this.endLocation=this.document.locationFromPosition(this.endPosition),this.block=this.document.getBlockAtIndex(this.endLocation.index),this.breaksOnReturn=this.block.breaksOnReturn(),this.previousCharacter=this.block.text.getStringAtPosition(this.endLocation.offset-1),this.nextCharacter=this.block.text.getStringAtPosition(this.endLocation.offset)}return x.prototype.shouldInsertBlockBreak=function(){return this.block.hasAttributes()&&this.block.isListItem()&&!this.block.isEmpty()?this.startLocation.offset!==0:this.breaksOnReturn&&this.nextCharacter!==` +`},x.prototype.shouldBreakFormattedBlock=function(){return this.block.hasAttributes()&&!this.block.isListItem()&&(this.breaksOnReturn&&this.nextCharacter===` +`||this.previousCharacter===` +`)},x.prototype.shouldDecreaseListLevel=function(){return this.block.hasAttributes()&&this.block.isListItem()&&this.block.isEmpty()},x.prototype.shouldPrependListItem=function(){return this.block.isListItem()&&this.startLocation.offset===0&&!this.block.isEmpty()},x.prototype.shouldRemoveLastBlockAttribute=function(){return this.block.hasAttributes()&&!this.block.isListItem()&&this.block.isEmpty()},x}()}.call(this),function(){var x,b,y,h,o,e,a,d,i,u,s=function(p,c){function v(){this.constructor=p}for(var t in c)n.call(c,t)&&(p[t]=c[t]);return v.prototype=c.prototype,p.prototype=new v,p.__super__=c.prototype,p},n={}.hasOwnProperty;e=g.normalizeRange,i=g.rangesAreEqual,d=g.rangeIsCollapsed,a=g.objectsAreEqual,x=g.arrayStartsWith,u=g.summarizeArrayChange,y=g.getAllAttributeNames,h=g.getBlockConfig,o=g.getTextConfig,b=g.extend,g.Composition=function(p){function c(){this.document=new g.Document,this.attachments=[],this.currentAttributes={},this.revision=0}var v;return s(c,p),c.prototype.setDocument=function(t){var r;return t.isEqualTo(this.document)?void 0:(this.document=t,this.refreshAttachments(),this.revision++,(r=this.delegate)!=null&&typeof r.compositionDidChangeDocument=="function"?r.compositionDidChangeDocument(t):void 0)},c.prototype.getSnapshot=function(){return{document:this.document,selectedRange:this.getSelectedRange()}},c.prototype.loadSnapshot=function(t){var r,l,A,f;return r=t.document,f=t.selectedRange,(l=this.delegate)!=null&&typeof l.compositionWillLoadSnapshot=="function"&&l.compositionWillLoadSnapshot(),this.setDocument(r??new g.Document),this.setSelection(f??[0,0]),(A=this.delegate)!=null&&typeof A.compositionDidLoadSnapshot=="function"?A.compositionDidLoadSnapshot():void 0},c.prototype.insertText=function(t,r){var l,A,f,m;return m=(r??{updatePosition:!0}).updatePosition,A=this.getSelectedRange(),this.setDocument(this.document.insertTextAtRange(t,A)),f=A[0],l=f+t.getLength(),m&&this.setSelection(l),this.notifyDelegateOfInsertionAtRange([f,l])},c.prototype.insertBlock=function(t){var r;return t==null&&(t=new g.Block),r=new g.Document([t]),this.insertDocument(r)},c.prototype.insertDocument=function(t){var r,l,A;return t==null&&(t=new g.Document),l=this.getSelectedRange(),this.setDocument(this.document.insertDocumentAtRange(t,l)),A=l[0],r=A+t.getLength(),this.setSelection(r),this.notifyDelegateOfInsertionAtRange([A,r])},c.prototype.insertString=function(t,r){var l,A;return l=this.getCurrentTextAttributes(),A=g.Text.textForStringWithAttributes(t,l),this.insertText(A,r)},c.prototype.insertBlockBreak=function(){var t,r,l;return r=this.getSelectedRange(),this.setDocument(this.document.insertBlockBreakAtRange(r)),l=r[0],t=l+1,this.setSelection(t),this.notifyDelegateOfInsertionAtRange([l,t])},c.prototype.insertLineBreak=function(){var t,r;return r=new g.LineBreakInsertion(this),r.shouldDecreaseListLevel()?(this.decreaseListLevel(),this.setSelection(r.startPosition)):r.shouldPrependListItem()?(t=new g.Document([r.block.copyWithoutText()]),this.insertDocument(t)):r.shouldInsertBlockBreak()?this.insertBlockBreak():r.shouldRemoveLastBlockAttribute()?this.removeLastBlockAttribute():r.shouldBreakFormattedBlock()?this.breakFormattedBlock(r):this.insertString(` +`)},c.prototype.insertHTML=function(t){var r,l,A,f;return r=g.Document.fromHTML(t),A=this.getSelectedRange(),this.setDocument(this.document.mergeDocumentAtRange(r,A)),f=A[0],l=f+r.getLength()-1,this.setSelection(l),this.notifyDelegateOfInsertionAtRange([f,l])},c.prototype.replaceHTML=function(t){var r,l,A;return r=g.Document.fromHTML(t).copyUsingObjectsFromDocument(this.document),l=this.getLocationRange({strict:!1}),A=this.document.rangeFromLocationRange(l),this.setDocument(r),this.setSelection(A)},c.prototype.insertFile=function(t){return this.insertFiles([t])},c.prototype.insertFiles=function(t){var r,l,A,f,m,C;for(l=[],f=0,m=t.length;m>f;f++)A=t[f],(C=this.delegate)!=null&&C.compositionShouldAcceptFile(A)&&(r=g.Attachment.attachmentForFile(A),l.push(r));return this.insertAttachments(l)},c.prototype.insertAttachment=function(t){return this.insertAttachments([t])},c.prototype.insertAttachments=function(t){var r,l,A,f,m,C,S,L,O;for(L=new g.Text,f=0,m=t.length;m>f;f++)r=t[f],O=r.getType(),C=(S=g.config.attachments[O])!=null?S.presentation:void 0,A=this.getCurrentTextAttributes(),C&&(A.presentation=C),l=g.Text.textForAttachmentWithAttributes(r,A),L=L.appendText(l);return this.insertText(L)},c.prototype.shouldManageDeletingInDirection=function(t){var r;if(r=this.getLocationRange(),d(r)){if(t==="backward"&&r[0].offset===0||this.shouldManageMovingCursorInDirection(t))return!0}else if(r[0].index!==r[1].index)return!0;return!1},c.prototype.deleteInDirection=function(t,r){var l,A,f,m,C,S,L,O;return m=(r??{}).length,C=this.getLocationRange(),S=this.getSelectedRange(),L=d(S),L?f=t==="backward"&&C[0].offset===0:O=C[0].index!==C[1].index,f&&this.canDecreaseBlockAttributeLevel()&&(A=this.getBlock(),A.isListItem()?this.decreaseListLevel():this.decreaseBlockAttributeLevel(),this.setSelection(S[0]),A.isEmpty())?!1:(L&&(S=this.getExpandedRangeInDirection(t,{length:m}),t==="backward"&&(l=this.getAttachmentAtRange(S))),l?(this.editAttachment(l),!1):(this.setDocument(this.document.removeTextAtRange(S)),this.setSelection(S[0]),f||O?!1:void 0))},c.prototype.moveTextFromRange=function(t){var r;return r=this.getSelectedRange()[0],this.setDocument(this.document.moveTextFromRangeToPosition(t,r)),this.setSelection(r)},c.prototype.removeAttachment=function(t){var r;return(r=this.document.getRangeOfAttachment(t))?(this.stopEditingAttachment(),this.setDocument(this.document.removeTextAtRange(r)),this.setSelection(r[0])):void 0},c.prototype.removeLastBlockAttribute=function(){var t,r,l,A;return l=this.getSelectedRange(),A=l[0],r=l[1],t=this.document.getBlockAtPosition(r),this.removeCurrentAttribute(t.getLastAttribute()),this.setSelection(A)},v=" ",c.prototype.insertPlaceholder=function(){return this.placeholderPosition=this.getPosition(),this.insertString(v)},c.prototype.selectPlaceholder=function(){return this.placeholderPosition!=null?(this.setSelectedRange([this.placeholderPosition,this.placeholderPosition+v.length]),this.getSelectedRange()):void 0},c.prototype.forgetPlaceholder=function(){return this.placeholderPosition=null},c.prototype.hasCurrentAttribute=function(t){var r;return r=this.currentAttributes[t],r!=null&&r!==!1},c.prototype.toggleCurrentAttribute=function(t){var r;return(r=!this.currentAttributes[t])?this.setCurrentAttribute(t,r):this.removeCurrentAttribute(t)},c.prototype.canSetCurrentAttribute=function(t){return h(t)?this.canSetCurrentBlockAttribute(t):this.canSetCurrentTextAttribute(t)},c.prototype.canSetCurrentTextAttribute=function(){var t,r,l,A,f;if(r=this.getSelectedDocument()){for(f=r.getAttachments(),l=0,A=f.length;A>l;l++)if(t=f[l],!t.hasContent())return!1;return!0}},c.prototype.canSetCurrentBlockAttribute=function(){var t;if(t=this.getBlock())return!t.isTerminalBlock()},c.prototype.setCurrentAttribute=function(t,r){return h(t)?this.setBlockAttribute(t,r):(this.setTextAttribute(t,r),this.currentAttributes[t]=r,this.notifyDelegateOfCurrentAttributesChange())},c.prototype.setTextAttribute=function(t,r){var l,A,f,m;if(A=this.getSelectedRange())return f=A[0],l=A[1],f!==l?this.setDocument(this.document.addAttributeAtRange(t,r,A)):t==="href"?(m=g.Text.textForStringWithAttributes(r,{href:r}),this.insertText(m)):void 0},c.prototype.setBlockAttribute=function(t,r){var l,A;if(A=this.getSelectedRange())return this.canSetCurrentAttribute(t)?(l=this.getBlock(),this.setDocument(this.document.applyBlockAttributeAtRange(t,r,A)),this.setSelection(A)):void 0},c.prototype.removeCurrentAttribute=function(t){return h(t)?(this.removeBlockAttribute(t),this.updateCurrentAttributes()):(this.removeTextAttribute(t),delete this.currentAttributes[t],this.notifyDelegateOfCurrentAttributesChange())},c.prototype.removeTextAttribute=function(t){var r;if(r=this.getSelectedRange())return this.setDocument(this.document.removeAttributeAtRange(t,r))},c.prototype.removeBlockAttribute=function(t){var r;if(r=this.getSelectedRange())return this.setDocument(this.document.removeAttributeAtRange(t,r))},c.prototype.canDecreaseNestingLevel=function(){var t;return((t=this.getBlock())!=null?t.getNestingLevel():void 0)>0},c.prototype.canIncreaseNestingLevel=function(){var t,r,l;if(t=this.getBlock())return(l=h(t.getLastNestableAttribute()))!=null&&l.listAttribute?(r=this.getPreviousBlock())?x(r.getListItemAttributes(),t.getListItemAttributes()):void 0:t.getNestingLevel()>0},c.prototype.decreaseNestingLevel=function(){var t;if(t=this.getBlock())return this.setDocument(this.document.replaceBlock(t,t.decreaseNestingLevel()))},c.prototype.increaseNestingLevel=function(){var t;if(t=this.getBlock())return this.setDocument(this.document.replaceBlock(t,t.increaseNestingLevel()))},c.prototype.canDecreaseBlockAttributeLevel=function(){var t;return((t=this.getBlock())!=null?t.getAttributeLevel():void 0)>0},c.prototype.decreaseBlockAttributeLevel=function(){var t,r;return(t=(r=this.getBlock())!=null?r.getLastAttribute():void 0)?this.removeCurrentAttribute(t):void 0},c.prototype.decreaseListLevel=function(){var t,r,l,A,f,m;for(m=this.getSelectedRange()[0],f=this.document.locationFromPosition(m).index,l=f,t=this.getBlock().getAttributeLevel();(r=this.document.getBlockAtIndex(l+1))&&r.isListItem()&&r.getAttributeLevel()>t;)l++;return m=this.document.positionFromLocation({index:f,offset:0}),A=this.document.positionFromLocation({index:l,offset:0}),this.setDocument(this.document.removeLastListAttributeAtRange([m,A]))},c.prototype.updateCurrentAttributes=function(){var t,r,l,A,f,m;if(m=this.getSelectedRange({ignoreLock:!0})){for(r=this.document.getCommonAttributesAtRange(m),f=y(),l=0,A=f.length;A>l;l++)t=f[l],r[t]||this.canSetCurrentAttribute(t)||(r[t]=!1);if(!a(r,this.currentAttributes))return this.currentAttributes=r,this.notifyDelegateOfCurrentAttributesChange()}},c.prototype.getCurrentAttributes=function(){return b.call({},this.currentAttributes)},c.prototype.getCurrentTextAttributes=function(){var t,r,l,A;t={},l=this.currentAttributes;for(r in l)A=l[r],A!==!1&&o(r)&&(t[r]=A);return t},c.prototype.freezeSelection=function(){return this.setCurrentAttribute("frozen",!0)},c.prototype.thawSelection=function(){return this.removeCurrentAttribute("frozen")},c.prototype.hasFrozenSelection=function(){return this.hasCurrentAttribute("frozen")},c.proxyMethod("getSelectionManager().getPointRange"),c.proxyMethod("getSelectionManager().setLocationRangeFromPointRange"),c.proxyMethod("getSelectionManager().createLocationRangeFromDOMRange"),c.proxyMethod("getSelectionManager().locationIsCursorTarget"),c.proxyMethod("getSelectionManager().selectionIsExpanded"),c.proxyMethod("delegate?.getSelectionManager"),c.prototype.setSelection=function(t){var r,l;return r=this.document.locationRangeFromRange(t),(l=this.delegate)!=null?l.compositionDidRequestChangingSelectionToLocationRange(r):void 0},c.prototype.getSelectedRange=function(){var t;return(t=this.getLocationRange())?this.document.rangeFromLocationRange(t):void 0},c.prototype.setSelectedRange=function(t){var r;return r=this.document.locationRangeFromRange(t),this.getSelectionManager().setLocationRange(r)},c.prototype.getPosition=function(){var t;return(t=this.getLocationRange())?this.document.positionFromLocation(t[0]):void 0},c.prototype.getLocationRange=function(t){var r,l;return(r=(l=this.targetLocationRange)!=null?l:this.getSelectionManager().getLocationRange(t))!=null?r:e({index:0,offset:0})},c.prototype.withTargetLocationRange=function(t,r){var l;this.targetLocationRange=t;try{l=r()}finally{this.targetLocationRange=null}return l},c.prototype.withTargetRange=function(t,r){var l;return l=this.document.locationRangeFromRange(t),this.withTargetLocationRange(l,r)},c.prototype.withTargetDOMRange=function(t,r){var l;return l=this.createLocationRangeFromDOMRange(t,{strict:!1}),this.withTargetLocationRange(l,r)},c.prototype.getExpandedRangeInDirection=function(t,r){var l,A,f,m;return A=(r??{}).length,f=this.getSelectedRange(),m=f[0],l=f[1],t==="backward"?A?m-=A:m=this.translateUTF16PositionFromOffset(m,-1):A?l+=A:l=this.translateUTF16PositionFromOffset(l,1),e([m,l])},c.prototype.shouldManageMovingCursorInDirection=function(t){var r;return this.editingAttachment?!0:(r=this.getExpandedRangeInDirection(t),this.getAttachmentAtRange(r)!=null)},c.prototype.moveCursorInDirection=function(t){var r,l,A,f;return this.editingAttachment?A=this.document.getRangeOfAttachment(this.editingAttachment):(f=this.getSelectedRange(),A=this.getExpandedRangeInDirection(t),l=!i(f,A)),this.setSelectedRange(t==="backward"?A[0]:A[1]),l&&(r=this.getAttachmentAtRange(A))?this.editAttachment(r):void 0},c.prototype.expandSelectionInDirection=function(t,r){var l,A;return l=(r??{}).length,A=this.getExpandedRangeInDirection(t,{length:l}),this.setSelectedRange(A)},c.prototype.expandSelectionForEditing=function(){return this.hasCurrentAttribute("href")?this.expandSelectionAroundCommonAttribute("href"):void 0},c.prototype.expandSelectionAroundCommonAttribute=function(t){var r,l;return r=this.getPosition(),l=this.document.getRangeOfCommonAttributeAtPosition(t,r),this.setSelectedRange(l)},c.prototype.selectionContainsAttachments=function(){var t;return((t=this.getSelectedAttachments())!=null?t.length:void 0)>0},c.prototype.selectionIsInCursorTarget=function(){return this.editingAttachment||this.positionIsCursorTarget(this.getPosition())},c.prototype.positionIsCursorTarget=function(t){var r;return(r=this.document.locationFromPosition(t))?this.locationIsCursorTarget(r):void 0},c.prototype.positionIsBlockBreak=function(t){var r;return(r=this.document.getPieceAtPosition(t))!=null?r.isBlockBreak():void 0},c.prototype.getSelectedDocument=function(){var t;return(t=this.getSelectedRange())?this.document.getDocumentAtRange(t):void 0},c.prototype.getSelectedAttachments=function(){var t;return(t=this.getSelectedDocument())!=null?t.getAttachments():void 0},c.prototype.getAttachments=function(){return this.attachments.slice(0)},c.prototype.refreshAttachments=function(){var t,r,l,A,f,m,C,S,L,O,D,R;for(l=this.document.getAttachments(),S=u(this.attachments,l),t=S.added,D=S.removed,this.attachments=l,A=0,m=D.length;m>A;A++)r=D[A],r.delegate=null,(L=this.delegate)!=null&&typeof L.compositionDidRemoveAttachment=="function"&&L.compositionDidRemoveAttachment(r);for(R=[],f=0,C=t.length;C>f;f++)r=t[f],r.delegate=this,R.push((O=this.delegate)!=null&&typeof O.compositionDidAddAttachment=="function"?O.compositionDidAddAttachment(r):void 0);return R},c.prototype.attachmentDidChangeAttributes=function(t){var r;return this.revision++,(r=this.delegate)!=null&&typeof r.compositionDidEditAttachment=="function"?r.compositionDidEditAttachment(t):void 0},c.prototype.attachmentDidChangePreviewURL=function(t){var r;return this.revision++,(r=this.delegate)!=null&&typeof r.compositionDidChangeAttachmentPreviewURL=="function"?r.compositionDidChangeAttachmentPreviewURL(t):void 0},c.prototype.editAttachment=function(t,r){var l;if(t!==this.editingAttachment)return this.stopEditingAttachment(),this.editingAttachment=t,(l=this.delegate)!=null&&typeof l.compositionDidStartEditingAttachment=="function"?l.compositionDidStartEditingAttachment(this.editingAttachment,r):void 0},c.prototype.stopEditingAttachment=function(){var t;if(this.editingAttachment)return(t=this.delegate)!=null&&typeof t.compositionDidStopEditingAttachment=="function"&&t.compositionDidStopEditingAttachment(this.editingAttachment),this.editingAttachment=null},c.prototype.updateAttributesForAttachment=function(t,r){return this.setDocument(this.document.updateAttributesForAttachment(t,r))},c.prototype.removeAttributeForAttachment=function(t,r){return this.setDocument(this.document.removeAttributeForAttachment(t,r))},c.prototype.breakFormattedBlock=function(t){var r,l,A,f,m;return l=t.document,r=t.block,f=t.startPosition,m=[f-1,f],r.getBlockBreakPosition()===t.startLocation.offset?(r.breaksOnReturn()&&t.nextCharacter===` +`?f+=1:l=l.removeTextAtRange(m),m=[f,f]):t.nextCharacter===` +`?t.previousCharacter===` +`?m=[f-1,f+1]:(m=[f,f+1],f+=1):t.startLocation.offset-1!==0&&(f+=1),A=new g.Document([r.removeLastAttribute().copyWithoutText()]),this.setDocument(l.insertDocumentAtRange(A,m)),this.setSelection(f)},c.prototype.getPreviousBlock=function(){var t,r;return(r=this.getLocationRange())&&(t=r[0].index,t>0)?this.document.getBlockAtIndex(t-1):void 0},c.prototype.getBlock=function(){var t;return(t=this.getLocationRange())?this.document.getBlockAtIndex(t[0].index):void 0},c.prototype.getAttachmentAtRange=function(t){var r;return r=this.document.getDocumentAtRange(t),r.toString()===g.OBJECT_REPLACEMENT_CHARACTER+` +`?r.getAttachments()[0]:void 0},c.prototype.notifyDelegateOfCurrentAttributesChange=function(){var t;return(t=this.delegate)!=null&&typeof t.compositionDidChangeCurrentAttributes=="function"?t.compositionDidChangeCurrentAttributes(this.currentAttributes):void 0},c.prototype.notifyDelegateOfInsertionAtRange=function(t){var r;return(r=this.delegate)!=null&&typeof r.compositionDidPerformInsertionAtRange=="function"?r.compositionDidPerformInsertionAtRange(t):void 0},c.prototype.translateUTF16PositionFromOffset=function(t,r){var l,A;return A=this.document.toUTF16String(),l=A.offsetFromUCS2Offset(t),A.offsetToUCS2Offset(l+r)},c}(g.BasicObject)}.call(this),function(){var x=function(y,h){function o(){this.constructor=y}for(var e in h)b.call(h,e)&&(y[e]=h[e]);return o.prototype=h.prototype,y.prototype=new o,y.__super__=h.prototype,y},b={}.hasOwnProperty;g.UndoManager=function(y){function h(e){this.composition=e,this.undoEntries=[],this.redoEntries=[]}var o;return x(h,y),h.prototype.recordUndoEntry=function(e,a){var d,i,u,s,n;return s=a??{},i=s.context,d=s.consolidatable,u=this.undoEntries.slice(-1)[0],d&&o(u,e,i)?void 0:(n=this.createEntry({description:e,context:i}),this.undoEntries.push(n),this.redoEntries=[])},h.prototype.undo=function(){var e,a;return(a=this.undoEntries.pop())?(e=this.createEntry(a),this.redoEntries.push(e),this.composition.loadSnapshot(a.snapshot)):void 0},h.prototype.redo=function(){var e,a;return(e=this.redoEntries.pop())?(a=this.createEntry(e),this.undoEntries.push(a),this.composition.loadSnapshot(e.snapshot)):void 0},h.prototype.canUndo=function(){return this.undoEntries.length>0},h.prototype.canRedo=function(){return this.redoEntries.length>0},h.prototype.createEntry=function(e){var a,d,i;return i=e??{},d=i.description,a=i.context,{description:d?.toString(),context:JSON.stringify(a),snapshot:this.composition.getSnapshot()}},o=function(e,a,d){return e?.description===a?.toString()&&e?.context===JSON.stringify(d)},h}(g.BasicObject)}.call(this),function(){var x;g.attachmentGalleryFilter=function(b){var y;return y=new x(b),y.perform(),y.getSnapshot()},x=function(){function b(e){this.document=e.document,this.selectedRange=e.selectedRange}var y,h,o;return y="attachmentGallery",h="presentation",o="gallery",b.prototype.perform=function(){return this.removeBlockAttribute(),this.applyBlockAttribute()},b.prototype.getSnapshot=function(){return{document:this.document,selectedRange:this.selectedRange}},b.prototype.removeBlockAttribute=function(){var e,a,d,i,u;for(i=this.findRangesOfBlocks(),u=[],e=0,a=i.length;a>e;e++)d=i[e],u.push(this.document=this.document.removeAttributeAtRange(y,d));return u},b.prototype.applyBlockAttribute=function(){var e,a,d,i,u,s;for(d=0,u=this.findRangesOfPieces(),s=[],e=0,a=u.length;a>e;e++)i=u[e],i[1]-i[0]>1&&(i[0]+=d,i[1]+=d,this.document.getCharacterAtPosition(i[1])!==` +`&&(this.document=this.document.insertBlockBreakAtRange(i[1]),i[1]a;a++)e=o[a],this.manageAttachment(e)}return x(h,y),h.prototype.getAttachments=function(){var o,e,a,d;a=this.managedAttachments,d=[];for(e in a)o=a[e],d.push(o);return d},h.prototype.manageAttachment=function(o){var e,a;return(e=this.managedAttachments)[a=o.id]!=null?e[a]:e[a]=new g.ManagedAttachment(this,o)},h.prototype.attachmentIsManaged=function(o){return o.id in this.managedAttachments},h.prototype.requestRemovalOfAttachment=function(o){var e;return this.attachmentIsManaged(o)&&(e=this.delegate)!=null&&typeof e.attachmentManagerDidRequestRemovalOfAttachment=="function"?e.attachmentManagerDidRequestRemovalOfAttachment(o):void 0},h.prototype.unmanageAttachment=function(o){var e;return e=this.managedAttachments[o.id],delete this.managedAttachments[o.id],e},h}(g.BasicObject)}.call(this),function(){var x,b,y,h,o,e,a,d,i,u,s;x=g.elementContainsNode,b=g.findChildIndexOfNode,o=g.nodeIsBlockStart,e=g.nodeIsBlockStartComment,h=g.nodeIsBlockContainer,a=g.nodeIsCursorTarget,d=g.nodeIsEmptyTextNode,i=g.nodeIsTextNode,y=g.nodeIsAttachmentElement,u=g.tagName,s=g.walkTree,g.LocationMapper=function(){function n(r){this.element=r}var p,c,v,t;return n.prototype.findLocationFromContainerAndOffset=function(r,l,A){var f,m,C,S,L,O,D;for(O=(A??{strict:!0}).strict,m=0,C=!1,S={index:0,offset:0},(f=this.findAttachmentElementParentForNode(r))&&(r=f.parentNode,l=b(f)),D=s(this.element,{usingFilter:v});D.nextNode();){if(L=D.currentNode,L===r&&i(r)){a(L)||(S.offset+=l);break}if(L.parentNode===r){if(m++===l)break}else if(!x(r,L)&&m>0)break;o(L,{strict:O})?(C&&S.index++,S.offset=0,C=!0):S.offset+=c(L)}return S},n.prototype.findContainerAndOffsetFromLocation=function(r){var l,A,f,m,C;if(r.index===0&&r.offset===0){for(l=this.element,m=0;l.firstChild;)if(l=l.firstChild,h(l)){m=1;break}return[l,m]}if(C=this.findNodeAndOffsetFromLocation(r),A=C[0],f=C[1],A){if(i(A))c(A)===0?(l=A.parentNode.parentNode,m=b(A.parentNode),a(A,{name:"right"})&&m++):(l=A,m=r.offset-f);else{if(l=A.parentNode,!o(A.previousSibling)&&!h(l))for(;A===l.lastChild&&(A=l,l=l.parentNode,!h(l)););m=b(A),r.offset!==0&&m++}return[l,m]}},n.prototype.findNodeAndOffsetFromLocation=function(r){var l,A,f,m,C,S,L,O;for(L=0,O=this.getSignificantNodesForIndex(r.index),A=0,f=O.length;f>A;A++){if(l=O[A],m=c(l),r.offset<=L+m)if(i(l)){if(C=l,S=L,r.offset===S&&a(C))break}else C||(C=l,S=L);if(L+=m,L>r.offset)break}return[C,S]},n.prototype.findAttachmentElementParentForNode=function(r){for(;r&&r!==this.element;){if(y(r))return r;r=r.parentNode}},n.prototype.getSignificantNodesForIndex=function(r){var l,A,f,m,C;for(f=[],C=s(this.element,{usingFilter:p}),m=!1;C.nextNode();)if(A=C.currentNode,e(A)){if(typeof l<"u"&&l!==null?l++:l=0,l===r)m=!0;else if(m)break}else m&&f.push(A);return f},c=function(r){var l;return r.nodeType===Node.TEXT_NODE?a(r)?0:(l=r.textContent,l.length):u(r)==="br"||y(r)?1:0},p=function(r){return t(r)===NodeFilter.FILTER_ACCEPT?v(r):NodeFilter.FILTER_REJECT},t=function(r){return d(r)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},v=function(r){return y(r.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},n}()}.call(this),function(){var x,b,y=[].slice;x=g.getDOMRange,b=g.setDOMRange,g.PointMapper=function(){function h(){}return h.prototype.createDOMRangeFromPoint=function(o){var e,a,d,i,u,s,n,p;if(n=o.x,p=o.y,document.caretPositionFromPoint)return u=document.caretPositionFromPoint(n,p),d=u.offsetNode,a=u.offset,e=document.createRange(),e.setStart(d,a),e;if(document.caretRangeFromPoint)return document.caretRangeFromPoint(n,p);if(document.body.createTextRange){i=x();try{s=document.body.createTextRange(),s.moveToPoint(n,p),s.select()}catch{}return e=x(),b(i),e}},h.prototype.getClientRectsForDOMRange=function(o){var e,a,d;return a=y.call(o.getClientRects()),d=a[0],e=a[a.length-1],[d,e]},h}()}.call(this),function(){var x,b=function(e,a){return function(){return e.apply(a,arguments)}},y=function(e,a){function d(){this.constructor=e}for(var i in a)h.call(a,i)&&(e[i]=a[i]);return d.prototype=a.prototype,e.prototype=new d,e.__super__=a.prototype,e},h={}.hasOwnProperty,o=[].indexOf||function(e){for(var a=0,d=this.length;d>a;a++)if(a in this&&this[a]===e)return a;return-1};x=g.getDOMRange,g.SelectionChangeObserver=function(e){function a(){this.run=b(this.run,this),this.update=b(this.update,this),this.selectionManagers=[]}var d;return y(a,e),a.prototype.start=function(){return this.started?void 0:(this.started=!0,"onselectionchange"in document?document.addEventListener("selectionchange",this.update,!0):this.run())},a.prototype.stop=function(){return this.started?(this.started=!1,document.removeEventListener("selectionchange",this.update,!0)):void 0},a.prototype.registerSelectionManager=function(i){return o.call(this.selectionManagers,i)<0?(this.selectionManagers.push(i),this.start()):void 0},a.prototype.unregisterSelectionManager=function(i){var u;return this.selectionManagers=function(){var s,n,p,c;for(p=this.selectionManagers,c=[],s=0,n=p.length;n>s;s++)u=p[s],u!==i&&c.push(u);return c}.call(this),this.selectionManagers.length===0?this.stop():void 0},a.prototype.notifySelectionManagersOfSelectionChange=function(){var i,u,s,n,p;for(s=this.selectionManagers,n=[],i=0,u=s.length;u>i;i++)p=s[i],n.push(p.selectionDidChange());return n},a.prototype.update=function(){var i;return i=x(),d(i,this.domRange)?void 0:(this.domRange=i,this.notifySelectionManagersOfSelectionChange())},a.prototype.reset=function(){return this.domRange=null,this.update()},a.prototype.run=function(){return this.started?(this.update(),requestAnimationFrame(this.run)):void 0},d=function(i,u){return i?.startContainer===u?.startContainer&&i?.startOffset===u?.startOffset&&i?.endContainer===u?.endContainer&&i?.endOffset===u?.endOffset},a}(g.BasicObject),g.selectionChangeObserver==null&&(g.selectionChangeObserver=new g.SelectionChangeObserver)}.call(this),function(){var x,b,y,h,o,e,a,d,i,u,s=function(c,v){return function(){return c.apply(v,arguments)}},n=function(c,v){function t(){this.constructor=c}for(var r in v)p.call(v,r)&&(c[r]=v[r]);return t.prototype=v.prototype,c.prototype=new t,c.__super__=v.prototype,c},p={}.hasOwnProperty;y=g.getDOMSelection,b=g.getDOMRange,u=g.setDOMRange,x=g.elementContainsNode,e=g.nodeIsCursorTarget,o=g.innerElementIsActive,h=g.handleEvent,a=g.normalizeRange,d=g.rangeIsCollapsed,i=g.rangesAreEqual,g.SelectionManager=function(c){function v(t){this.element=t,this.selectionDidChange=s(this.selectionDidChange,this),this.didMouseDown=s(this.didMouseDown,this),this.locationMapper=new g.LocationMapper(this.element),this.pointMapper=new g.PointMapper,this.lockCount=0,h("mousedown",{onElement:this.element,withCallback:this.didMouseDown})}return n(v,c),v.prototype.getLocationRange=function(t){var r,l;return t==null&&(t={}),r=t.strict===!1?this.createLocationRangeFromDOMRange(b(),{strict:!1}):t.ignoreLock?this.currentLocationRange:(l=this.lockedLocationRange)!=null?l:this.currentLocationRange},v.prototype.setLocationRange=function(t){var r;if(!this.lockedLocationRange)return t=a(t),(r=this.createDOMRangeFromLocationRange(t))?(u(r),this.updateCurrentLocationRange(t)):void 0},v.prototype.setLocationRangeFromPointRange=function(t){var r,l;return t=a(t),l=this.getLocationAtPoint(t[0]),r=this.getLocationAtPoint(t[1]),this.setLocationRange([l,r])},v.prototype.getClientRectAtLocationRange=function(t){var r;return(r=this.createDOMRangeFromLocationRange(t))?this.getClientRectsForDOMRange(r)[1]:void 0},v.prototype.locationIsCursorTarget=function(t){var r,l,A;return A=this.findNodeAndOffsetFromLocation(t),r=A[0],l=A[1],e(r)},v.prototype.lock=function(){return this.lockCount++===0?(this.updateCurrentLocationRange(),this.lockedLocationRange=this.getLocationRange()):void 0},v.prototype.unlock=function(){var t;return--this.lockCount===0&&(t=this.lockedLocationRange,this.lockedLocationRange=null,t!=null)?this.setLocationRange(t):void 0},v.prototype.clearSelection=function(){var t;return(t=y())!=null?t.removeAllRanges():void 0},v.prototype.selectionIsCollapsed=function(){var t;return((t=b())!=null?t.collapsed:void 0)===!0},v.prototype.selectionIsExpanded=function(){return!this.selectionIsCollapsed()},v.prototype.createLocationRangeFromDOMRange=function(t,r){var l,A;if(t!=null&&this.domRangeWithinElement(t)&&(A=this.findLocationFromContainerAndOffset(t.startContainer,t.startOffset,r)))return t.collapsed||(l=this.findLocationFromContainerAndOffset(t.endContainer,t.endOffset,r)),a([A,l])},v.proxyMethod("locationMapper.findLocationFromContainerAndOffset"),v.proxyMethod("locationMapper.findContainerAndOffsetFromLocation"),v.proxyMethod("locationMapper.findNodeAndOffsetFromLocation"),v.proxyMethod("pointMapper.createDOMRangeFromPoint"),v.proxyMethod("pointMapper.getClientRectsForDOMRange"),v.prototype.didMouseDown=function(){return this.pauseTemporarily()},v.prototype.pauseTemporarily=function(){var t,r,l,A;return this.paused=!0,r=function(f){return function(){var m,C,S;for(f.paused=!1,clearTimeout(A),C=0,S=l.length;S>C;C++)m=l[C],m.destroy();return x(document,f.element)?f.selectionDidChange():void 0}}(this),A=setTimeout(r,200),l=function(){var f,m,C,S;for(C=["mousemove","keydown"],S=[],f=0,m=C.length;m>f;f++)t=C[f],S.push(h(t,{onElement:document,withCallback:r}));return S}()},v.prototype.selectionDidChange=function(){return this.paused||o(this.element)?void 0:this.updateCurrentLocationRange()},v.prototype.updateCurrentLocationRange=function(t){var r;return(t??(t=this.createLocationRangeFromDOMRange(b())))&&!i(t,this.currentLocationRange)?(this.currentLocationRange=t,(r=this.delegate)!=null&&typeof r.locationRangeDidChange=="function"?r.locationRangeDidChange(this.currentLocationRange.slice(0)):void 0):void 0},v.prototype.createDOMRangeFromLocationRange=function(t){var r,l,A,f;return A=this.findContainerAndOffsetFromLocation(t[0]),l=d(t)?A:(f=this.findContainerAndOffsetFromLocation(t[1]))!=null?f:A,A!=null&&l!=null?(r=document.createRange(),r.setStart.apply(r,A),r.setEnd.apply(r,l),r):void 0},v.prototype.getLocationAtPoint=function(t){var r,l;return(r=this.createDOMRangeFromPoint(t))&&(l=this.createLocationRangeFromDOMRange(r))!=null?l[0]:void 0},v.prototype.domRangeWithinElement=function(t){return t.collapsed?x(this.element,t.startContainer):x(this.element,t.startContainer)&&x(this.element,t.endContainer)},v}(g.BasicObject)}.call(this),function(){var x,b,y,h,o=function(d,i){function u(){this.constructor=d}for(var s in i)e.call(i,s)&&(d[s]=i[s]);return u.prototype=i.prototype,d.prototype=new u,d.__super__=i.prototype,d},e={}.hasOwnProperty,a=[].slice;y=g.rangeIsCollapsed,h=g.rangesAreEqual,b=g.objectsAreEqual,x=g.getBlockConfig,g.EditorController=function(d){function i(s){var n,p;this.editorElement=s.editorElement,n=s.document,p=s.html,this.selectionManager=new g.SelectionManager(this.editorElement),this.selectionManager.delegate=this,this.composition=new g.Composition,this.composition.delegate=this,this.attachmentManager=new g.AttachmentManager(this.composition.getAttachments()),this.attachmentManager.delegate=this,this.inputController=new g["Level"+g.config.input.getLevel()+"InputController"](this.editorElement),this.inputController.delegate=this,this.inputController.responder=this.composition,this.compositionController=new g.CompositionController(this.editorElement,this.composition),this.compositionController.delegate=this,this.toolbarController=new g.ToolbarController(this.editorElement.toolbarElement),this.toolbarController.delegate=this,this.editor=new g.Editor(this.composition,this.selectionManager,this.editorElement),n!=null?this.editor.loadDocument(n):this.editor.loadHTML(p)}var u;return o(i,d),i.prototype.registerSelectionManager=function(){return g.selectionChangeObserver.registerSelectionManager(this.selectionManager)},i.prototype.unregisterSelectionManager=function(){return g.selectionChangeObserver.unregisterSelectionManager(this.selectionManager)},i.prototype.render=function(){return this.compositionController.render()},i.prototype.reparse=function(){return this.composition.replaceHTML(this.editorElement.innerHTML)},i.prototype.compositionDidChangeDocument=function(){return this.notifyEditorElement("document-change"),this.handlingInput?void 0:this.render()},i.prototype.compositionDidChangeCurrentAttributes=function(s){return this.currentAttributes=s,this.toolbarController.updateAttributes(this.currentAttributes),this.updateCurrentActions(),this.notifyEditorElement("attributes-change",{attributes:this.currentAttributes})},i.prototype.compositionDidPerformInsertionAtRange=function(s){return this.pasting?this.pastedRange=s:void 0},i.prototype.compositionShouldAcceptFile=function(s){return this.notifyEditorElement("file-accept",{file:s})},i.prototype.compositionDidAddAttachment=function(s){var n;return n=this.attachmentManager.manageAttachment(s),this.notifyEditorElement("attachment-add",{attachment:n})},i.prototype.compositionDidEditAttachment=function(s){var n;return this.compositionController.rerenderViewForObject(s),n=this.attachmentManager.manageAttachment(s),this.notifyEditorElement("attachment-edit",{attachment:n}),this.notifyEditorElement("change")},i.prototype.compositionDidChangeAttachmentPreviewURL=function(s){return this.compositionController.invalidateViewForObject(s),this.notifyEditorElement("change")},i.prototype.compositionDidRemoveAttachment=function(s){var n;return n=this.attachmentManager.unmanageAttachment(s),this.notifyEditorElement("attachment-remove",{attachment:n})},i.prototype.compositionDidStartEditingAttachment=function(s,n){return this.attachmentLocationRange=this.composition.document.getLocationRangeOfAttachment(s),this.compositionController.installAttachmentEditorForAttachment(s,n),this.selectionManager.setLocationRange(this.attachmentLocationRange)},i.prototype.compositionDidStopEditingAttachment=function(){return this.compositionController.uninstallAttachmentEditor(),this.attachmentLocationRange=null},i.prototype.compositionDidRequestChangingSelectionToLocationRange=function(s){return!this.loadingSnapshot||this.isFocused()?(this.requestedLocationRange=s,this.compositionRevisionWhenLocationRangeRequested=this.composition.revision,this.handlingInput?void 0:this.render()):void 0},i.prototype.compositionWillLoadSnapshot=function(){return this.loadingSnapshot=!0},i.prototype.compositionDidLoadSnapshot=function(){return this.compositionController.refreshViewCache(),this.render(),this.loadingSnapshot=!1},i.prototype.getSelectionManager=function(){return this.selectionManager},i.proxyMethod("getSelectionManager().setLocationRange"),i.proxyMethod("getSelectionManager().getLocationRange"),i.prototype.attachmentManagerDidRequestRemovalOfAttachment=function(s){return this.removeAttachment(s)},i.prototype.compositionControllerWillSyncDocumentView=function(){return this.inputController.editorWillSyncDocumentView(),this.selectionManager.lock(),this.selectionManager.clearSelection()},i.prototype.compositionControllerDidSyncDocumentView=function(){return this.inputController.editorDidSyncDocumentView(),this.selectionManager.unlock(),this.updateCurrentActions(),this.notifyEditorElement("sync")},i.prototype.compositionControllerDidRender=function(){return this.requestedLocationRange!=null&&(this.compositionRevisionWhenLocationRangeRequested===this.composition.revision&&this.selectionManager.setLocationRange(this.requestedLocationRange),this.requestedLocationRange=null,this.compositionRevisionWhenLocationRangeRequested=null),this.renderedCompositionRevision!==this.composition.revision&&(this.runEditorFilters(),this.composition.updateCurrentAttributes(),this.notifyEditorElement("render")),this.renderedCompositionRevision=this.composition.revision},i.prototype.compositionControllerDidFocus=function(){return this.isFocusedInvisibly()&&this.setLocationRange({index:0,offset:0}),this.toolbarController.hideDialog(),this.notifyEditorElement("focus")},i.prototype.compositionControllerDidBlur=function(){return this.notifyEditorElement("blur")},i.prototype.compositionControllerDidSelectAttachment=function(s,n){return this.toolbarController.hideDialog(),this.composition.editAttachment(s,n)},i.prototype.compositionControllerDidRequestDeselectingAttachment=function(s){var n,p;return n=(p=this.attachmentLocationRange)!=null?p:this.composition.document.getLocationRangeOfAttachment(s),this.selectionManager.setLocationRange(n[1])},i.prototype.compositionControllerWillUpdateAttachment=function(s){return this.editor.recordUndoEntry("Edit Attachment",{context:s.id,consolidatable:!0})},i.prototype.compositionControllerDidRequestRemovalOfAttachment=function(s){return this.removeAttachment(s)},i.prototype.inputControllerWillHandleInput=function(){return this.handlingInput=!0,this.requestedRender=!1},i.prototype.inputControllerDidRequestRender=function(){return this.requestedRender=!0},i.prototype.inputControllerDidHandleInput=function(){return this.handlingInput=!1,this.requestedRender?(this.requestedRender=!1,this.render()):void 0},i.prototype.inputControllerDidAllowUnhandledInput=function(){return this.notifyEditorElement("change")},i.prototype.inputControllerDidRequestReparse=function(){return this.reparse()},i.prototype.inputControllerWillPerformTyping=function(){return this.recordTypingUndoEntry()},i.prototype.inputControllerWillPerformFormatting=function(s){return this.recordFormattingUndoEntry(s)},i.prototype.inputControllerWillCutText=function(){return this.editor.recordUndoEntry("Cut")},i.prototype.inputControllerWillPaste=function(s){return this.editor.recordUndoEntry("Paste"),this.pasting=!0,this.notifyEditorElement("before-paste",{paste:s})},i.prototype.inputControllerDidPaste=function(s){return s.range=this.pastedRange,this.pastedRange=null,this.pasting=null,this.notifyEditorElement("paste",{paste:s})},i.prototype.inputControllerWillMoveText=function(){return this.editor.recordUndoEntry("Move")},i.prototype.inputControllerWillAttachFiles=function(){return this.editor.recordUndoEntry("Drop Files")},i.prototype.inputControllerWillPerformUndo=function(){return this.editor.undo()},i.prototype.inputControllerWillPerformRedo=function(){return this.editor.redo()},i.prototype.inputControllerDidReceiveKeyboardCommand=function(s){return this.toolbarController.applyKeyboardCommand(s)},i.prototype.inputControllerDidStartDrag=function(){return this.locationRangeBeforeDrag=this.selectionManager.getLocationRange()},i.prototype.inputControllerDidReceiveDragOverPoint=function(s){return this.selectionManager.setLocationRangeFromPointRange(s)},i.prototype.inputControllerDidCancelDrag=function(){return this.selectionManager.setLocationRange(this.locationRangeBeforeDrag),this.locationRangeBeforeDrag=null},i.prototype.locationRangeDidChange=function(s){return this.composition.updateCurrentAttributes(),this.updateCurrentActions(),this.attachmentLocationRange&&!h(this.attachmentLocationRange,s)&&this.composition.stopEditingAttachment(),this.notifyEditorElement("selection-change")},i.prototype.toolbarDidClickButton=function(){return this.getLocationRange()?void 0:this.setLocationRange({index:0,offset:0})},i.prototype.toolbarDidInvokeAction=function(s){return this.invokeAction(s)},i.prototype.toolbarDidToggleAttribute=function(s){return this.recordFormattingUndoEntry(s),this.composition.toggleCurrentAttribute(s),this.render(),this.selectionFrozen?void 0:this.editorElement.focus()},i.prototype.toolbarDidUpdateAttribute=function(s,n){return this.recordFormattingUndoEntry(s),this.composition.setCurrentAttribute(s,n),this.render(),this.selectionFrozen?void 0:this.editorElement.focus()},i.prototype.toolbarDidRemoveAttribute=function(s){return this.recordFormattingUndoEntry(s),this.composition.removeCurrentAttribute(s),this.render(),this.selectionFrozen?void 0:this.editorElement.focus()},i.prototype.toolbarWillShowDialog=function(){return this.composition.expandSelectionForEditing(),this.freezeSelection()},i.prototype.toolbarDidShowDialog=function(s){return this.notifyEditorElement("toolbar-dialog-show",{dialogName:s})},i.prototype.toolbarDidHideDialog=function(s){return this.thawSelection(),this.editorElement.focus(),this.notifyEditorElement("toolbar-dialog-hide",{dialogName:s})},i.prototype.freezeSelection=function(){return this.selectionFrozen?void 0:(this.selectionManager.lock(),this.composition.freezeSelection(),this.selectionFrozen=!0,this.render())},i.prototype.thawSelection=function(){return this.selectionFrozen?(this.composition.thawSelection(),this.selectionManager.unlock(),this.selectionFrozen=!1,this.render()):void 0},i.prototype.actions={undo:{test:function(){return this.editor.canUndo()},perform:function(){return this.editor.undo()}},redo:{test:function(){return this.editor.canRedo()},perform:function(){return this.editor.redo()}},link:{test:function(){return this.editor.canActivateAttribute("href")}},increaseNestingLevel:{test:function(){return this.editor.canIncreaseNestingLevel()},perform:function(){return this.editor.increaseNestingLevel()&&this.render()}},decreaseNestingLevel:{test:function(){return this.editor.canDecreaseNestingLevel()},perform:function(){return this.editor.decreaseNestingLevel()&&this.render()}},attachFiles:{test:function(){return!0},perform:function(){return g.config.input.pickFiles(this.editor.insertFiles)}}},i.prototype.canInvokeAction=function(s){var n,p;return this.actionIsExternal(s)?!0:!!((n=this.actions[s])!=null&&(p=n.test)!=null&&p.call(this))},i.prototype.invokeAction=function(s){var n,p;return this.actionIsExternal(s)?this.notifyEditorElement("action-invoke",{actionName:s}):(n=this.actions[s])!=null&&(p=n.perform)!=null?p.call(this):void 0},i.prototype.actionIsExternal=function(s){return/^x-./.test(s)},i.prototype.getCurrentActions=function(){var s,n;n={};for(s in this.actions)n[s]=this.canInvokeAction(s);return n},i.prototype.updateCurrentActions=function(){var s;return s=this.getCurrentActions(),b(s,this.currentActions)?void 0:(this.currentActions=s,this.toolbarController.updateActions(this.currentActions),this.notifyEditorElement("actions-change",{actions:this.currentActions}))},i.prototype.runEditorFilters=function(){var s,n,p,c,v,t,r,l;for(l=this.composition.getSnapshot(),v=this.editor.filters,p=0,c=v.length;c>p;p++)n=v[p],s=l.document,r=l.selectedRange,l=(t=n.call(this.editor,l))!=null?t:{},l.document==null&&(l.document=s),l.selectedRange==null&&(l.selectedRange=r);return u(l,this.composition.getSnapshot())?void 0:this.composition.loadSnapshot(l)},u=function(s,n){return h(s.selectedRange,n.selectedRange)&&s.document.isEqualTo(n.document)},i.prototype.updateInputElement=function(){var s,n;return s=this.compositionController.getSerializableElement(),n=g.serializeToContentType(s,"text/html"),this.editorElement.setInputElementValue(n)},i.prototype.notifyEditorElement=function(s,n){switch(s){case"document-change":this.documentChangedSinceLastRender=!0;break;case"render":this.documentChangedSinceLastRender&&(this.documentChangedSinceLastRender=!1,this.notifyEditorElement("change"));break;case"change":case"attachment-add":case"attachment-edit":case"attachment-remove":this.updateInputElement()}return this.editorElement.notify(s,n)},i.prototype.removeAttachment=function(s){return this.editor.recordUndoEntry("Delete Attachment"),this.composition.removeAttachment(s),this.render()},i.prototype.recordFormattingUndoEntry=function(s){var n,p;return n=x(s),p=this.selectionManager.getLocationRange(),n||!y(p)?this.editor.recordUndoEntry("Formatting",{context:this.getUndoContext(),consolidatable:!0}):void 0},i.prototype.recordTypingUndoEntry=function(){return this.editor.recordUndoEntry("Typing",{context:this.getUndoContext(this.currentAttributes),consolidatable:!0})},i.prototype.getUndoContext=function(){var s;return s=1<=arguments.length?a.call(arguments,0):[],[this.getLocationContext(),this.getTimeContext()].concat(a.call(s))},i.prototype.getLocationContext=function(){var s;return s=this.selectionManager.getLocationRange(),y(s)?s[0].index:s},i.prototype.getTimeContext=function(){return g.config.undoInterval>0?Math.floor(new Date().getTime()/g.config.undoInterval):0},i.prototype.isFocused=function(){var s;return this.editorElement===((s=this.editorElement.ownerDocument)!=null?s.activeElement:void 0)},i.prototype.isFocusedInvisibly=function(){return this.isFocused()&&!this.getLocationRange()},i}(g.Controller)}.call(this),function(){var x,b,y,h,o,e,a,d=[].indexOf||function(i){for(var u=0,s=this.length;s>u;u++)if(u in this&&this[u]===i)return u;return-1};b=g.browser,e=g.makeElement,a=g.triggerEvent,h=g.handleEvent,o=g.handleEventOnce,y=g.findClosestElementFromNode,x=g.AttachmentView.attachmentSelector,g.registerElement("trix-editor",function(){var i,u,s,n,p,c,v,t,r;return v=0,u=function(l){return!document.querySelector(":focus")&&l.hasAttribute("autofocus")&&document.querySelector("[autofocus]")===l?l.focus():void 0},t=function(l){return l.hasAttribute("contenteditable")?void 0:(l.setAttribute("contenteditable",""),o("focus",{onElement:l,withCallback:function(){return s(l)}}))},s=function(l){return p(l),r(l)},p=function(l){return typeof document.queryCommandSupported=="function"&&document.queryCommandSupported("enableObjectResizing")?(document.execCommand("enableObjectResizing",!1,!1),h("mscontrolselect",{onElement:l,preventDefault:!0})):void 0},r=function(){var l;return typeof document.queryCommandSupported=="function"&&document.queryCommandSupported("DefaultParagraphSeparator")&&(l=g.config.blockAttributes.default.tagName,l==="div"||l==="p")?document.execCommand("DefaultParagraphSeparator",!1,l):void 0},i=function(l){return l.hasAttribute("role")?void 0:l.setAttribute("role","textbox")},c=function(l){var A;if(!l.hasAttribute("aria-label")&&!l.hasAttribute("aria-labelledby"))return(A=function(){var f,m,C;return C=function(){var S,L,O,D;for(O=l.labels,D=[],S=0,L=O.length;L>S;S++)f=O[S],f.contains(l)||D.push(f.textContent);return D}(),(m=C.join(" "))?l.setAttribute("aria-label",m):l.removeAttribute("aria-label")})(),h("focus",{onElement:l,withCallback:A})},n=function(){return b.forcesObjectResizing?{display:"inline",width:"auto"}:{display:"inline-block",width:"1px"}}(),{defaultCSS:`%t { + display: block; +} + +%t:empty:not(:focus)::before { + content: attr(placeholder); + color: graytext; + cursor: text; + pointer-events: none; +} + +%t a[contenteditable=false] { + cursor: text; +} + +%t img { + max-width: 100%; + height: auto; +} + +%t `+x+` figcaption textarea { + resize: none; +} + +%t `+x+` figcaption textarea.trix-autoresize-clone { + position: absolute; + left: -9999px; + max-height: 0px; +} + +%t `+x+` figcaption[data-trix-placeholder]:empty::before { + content: attr(data-trix-placeholder); + color: graytext; +} + +%t [data-trix-cursor-target] { + display: `+n.display+` !important; + width: `+n.width+` !important; + padding: 0 !important; + margin: 0 !important; + border: none !important; +} + +%t [data-trix-cursor-target=left] { + vertical-align: top !important; + margin-left: -1px !important; +} + +%t [data-trix-cursor-target=right] { + vertical-align: bottom !important; + margin-right: -1px !important; +}`,trixId:{get:function(){return this.hasAttribute("trix-id")?this.getAttribute("trix-id"):(this.setAttribute("trix-id",++v),this.trixId)}},labels:{get:function(){var l,A,f;return A=[],this.id&&this.ownerDocument&&A.push.apply(A,this.ownerDocument.querySelectorAll("label[for='"+this.id+"']")),(l=y(this,{matchingSelector:"label"}))&&((f=l.control)===this||f===null)&&A.push(l),A}},toolbarElement:{get:function(){var l,A,f;return this.hasAttribute("toolbar")?(A=this.ownerDocument)!=null?A.getElementById(this.getAttribute("toolbar")):void 0:this.parentNode?(f="trix-toolbar-"+this.trixId,this.setAttribute("toolbar",f),l=e("trix-toolbar",{id:f}),this.parentNode.insertBefore(l,this),l):void 0}},inputElement:{get:function(){var l,A,f;return this.hasAttribute("input")?(f=this.ownerDocument)!=null?f.getElementById(this.getAttribute("input")):void 0:this.parentNode?(A="trix-input-"+this.trixId,this.setAttribute("input",A),l=e("input",{type:"hidden",id:A}),this.parentNode.insertBefore(l,this.nextElementSibling),l):void 0}},editor:{get:function(){var l;return(l=this.editorController)!=null?l.editor:void 0}},name:{get:function(){var l;return(l=this.inputElement)!=null?l.name:void 0}},value:{get:function(){var l;return(l=this.inputElement)!=null?l.value:void 0},set:function(l){var A;return this.defaultValue=l,(A=this.editor)!=null?A.loadHTML(this.defaultValue):void 0}},notify:function(l,A){return this.editorController?a("trix-"+l,{onElement:this,attributes:A}):void 0},setInputElementValue:function(l){var A;return(A=this.inputElement)!=null?A.value=l:void 0},initialize:function(){return this.hasAttribute("data-trix-internal")?void 0:(t(this),i(this),c(this))},connect:function(){return this.hasAttribute("data-trix-internal")?void 0:(this.editorController||(a("trix-before-initialize",{onElement:this}),this.editorController=new g.EditorController({editorElement:this,html:this.defaultValue=this.value}),requestAnimationFrame(function(l){return function(){return a("trix-initialize",{onElement:l})}}(this))),this.editorController.registerSelectionManager(),this.registerResetListener(),this.registerClickListener(),u(this))},disconnect:function(){var l;return(l=this.editorController)!=null&&l.unregisterSelectionManager(),this.unregisterResetListener(),this.unregisterClickListener()},registerResetListener:function(){return this.resetListener=this.resetBubbled.bind(this),window.addEventListener("reset",this.resetListener,!1)},unregisterResetListener:function(){return window.removeEventListener("reset",this.resetListener,!1)},registerClickListener:function(){return this.clickListener=this.clickBubbled.bind(this),window.addEventListener("click",this.clickListener,!1)},unregisterClickListener:function(){return window.removeEventListener("click",this.clickListener,!1)},resetBubbled:function(l){var A;if(!l.defaultPrevented&&l.target===((A=this.inputElement)!=null?A.form:void 0))return this.reset()},clickBubbled:function(l){var A;if(!(l.defaultPrevented||this.contains(l.target)||!(A=y(l.target,{matchingSelector:"label"}))||d.call(this.labels,A)<0))return this.focus()},reset:function(){return this.value=this.defaultValue}}}())}.call(this),function(){}.call(this)}).call(this),typeof V=="object"&&V.exports?V.exports=g:typeof define=="function"&&define.amd&&define(g)}.call(q)});var W=ut(Q(),1);W.default.config.blockAttributes.default.tagName="p";W.default.config.blockAttributes.default.breakOnReturn=!0;W.default.config.blockAttributes.heading={tagName:"h2",terminal:!0,breakOnReturn:!0,group:!1};W.default.config.blockAttributes.subHeading={tagName:"h3",terminal:!0,breakOnReturn:!0,group:!1};W.default.config.textAttributes.underline={style:{textDecoration:"underline"},inheritable:!0,parser:I=>window.getComputedStyle(I).textDecoration.includes("underline")};W.default.Block.prototype.breaksOnReturn=function(){let I=this.getLastAttribute();return W.default.getBlockConfig(I||"default")?.breakOnReturn??!1};W.default.LineBreakInsertion.prototype.shouldInsertBlockBreak=function(){return this.block.hasAttributes()&&this.block.isListItem()&&!this.block.isEmpty()?this.startLocation.offset>0:this.shouldBreakFormattedBlock()?!1:this.breaksOnReturn};function ct({state:I}){return{state:I,init:function(){this.$refs.trix?.editor?.loadHTML(this.state),this.$watch("state",()=>{document.activeElement!==this.$refs.trix&&this.$refs.trix?.editor?.loadHTML(this.state)})}}}export{ct as default}; diff --git a/public/js/filament/forms/components/select.js b/public/js/filament/forms/components/select.js new file mode 100644 index 000000000..7b3c78f09 --- /dev/null +++ b/public/js/filament/forms/components/select.js @@ -0,0 +1,6 @@ +var lt=Object.create;var Ge=Object.defineProperty;var ct=Object.getOwnPropertyDescriptor;var ut=Object.getOwnPropertyNames;var ht=Object.getPrototypeOf,dt=Object.prototype.hasOwnProperty;var ft=(se,ie)=>()=>(ie||se((ie={exports:{}}).exports,ie),ie.exports);var pt=(se,ie,X,me)=>{if(ie&&typeof ie=="object"||typeof ie=="function")for(let j of ut(ie))!dt.call(se,j)&&j!==X&&Ge(se,j,{get:()=>ie[j],enumerable:!(me=ct(ie,j))||me.enumerable});return se};var mt=(se,ie,X)=>(X=se!=null?lt(ht(se)):{},pt(ie||!se||!se.__esModule?Ge(X,"default",{value:se,enumerable:!0}):X,se));var $e=ft((Ae,Ye)=>{(function(ie,X){typeof Ae=="object"&&typeof Ye=="object"?Ye.exports=X():typeof define=="function"&&define.amd?define([],X):typeof Ae=="object"?Ae.Choices=X():ie.Choices=X()})(window,function(){return function(){"use strict";var se={282:function(j,i,b){Object.defineProperty(i,"__esModule",{value:!0}),i.clearChoices=i.activateChoices=i.filterChoices=i.addChoice=void 0;var _=b(883),h=function(c){var l=c.value,O=c.label,L=c.id,y=c.groupId,D=c.disabled,k=c.elementId,Q=c.customProperties,Z=c.placeholder,ne=c.keyCode;return{type:_.ACTION_TYPES.ADD_CHOICE,value:l,label:O,id:L,groupId:y,disabled:D,elementId:k,customProperties:Q,placeholder:Z,keyCode:ne}};i.addChoice=h;var d=function(c){return{type:_.ACTION_TYPES.FILTER_CHOICES,results:c}};i.filterChoices=d;var a=function(c){return c===void 0&&(c=!0),{type:_.ACTION_TYPES.ACTIVATE_CHOICES,active:c}};i.activateChoices=a;var r=function(){return{type:_.ACTION_TYPES.CLEAR_CHOICES}};i.clearChoices=r},783:function(j,i,b){Object.defineProperty(i,"__esModule",{value:!0}),i.addGroup=void 0;var _=b(883),h=function(d){var a=d.value,r=d.id,c=d.active,l=d.disabled;return{type:_.ACTION_TYPES.ADD_GROUP,value:a,id:r,active:c,disabled:l}};i.addGroup=h},464:function(j,i,b){Object.defineProperty(i,"__esModule",{value:!0}),i.highlightItem=i.removeItem=i.addItem=void 0;var _=b(883),h=function(r){var c=r.value,l=r.label,O=r.id,L=r.choiceId,y=r.groupId,D=r.customProperties,k=r.placeholder,Q=r.keyCode;return{type:_.ACTION_TYPES.ADD_ITEM,value:c,label:l,id:O,choiceId:L,groupId:y,customProperties:D,placeholder:k,keyCode:Q}};i.addItem=h;var d=function(r,c){return{type:_.ACTION_TYPES.REMOVE_ITEM,id:r,choiceId:c}};i.removeItem=d;var a=function(r,c){return{type:_.ACTION_TYPES.HIGHLIGHT_ITEM,id:r,highlighted:c}};i.highlightItem=a},137:function(j,i,b){Object.defineProperty(i,"__esModule",{value:!0}),i.setIsLoading=i.resetTo=i.clearAll=void 0;var _=b(883),h=function(){return{type:_.ACTION_TYPES.CLEAR_ALL}};i.clearAll=h;var d=function(r){return{type:_.ACTION_TYPES.RESET_TO,state:r}};i.resetTo=d;var a=function(r){return{type:_.ACTION_TYPES.SET_IS_LOADING,isLoading:r}};i.setIsLoading=a},373:function(j,i,b){var _=this&&this.__spreadArray||function(g,e,t){if(t||arguments.length===2)for(var n=0,s=e.length,v;n=0?this._store.getGroupById(v):null;return this._store.dispatch((0,l.highlightItem)(n,!0)),t&&this.passedElement.triggerEvent(y.EVENTS.highlightItem,{id:n,value:M,label:f,groupValue:u&&u.value?u.value:null}),this},g.prototype.unhighlightItem=function(e){if(!e||!e.id)return this;var t=e.id,n=e.groupId,s=n===void 0?-1:n,v=e.value,P=v===void 0?"":v,M=e.label,K=M===void 0?"":M,f=s>=0?this._store.getGroupById(s):null;return this._store.dispatch((0,l.highlightItem)(t,!1)),this.passedElement.triggerEvent(y.EVENTS.highlightItem,{id:t,value:P,label:K,groupValue:f&&f.value?f.value:null}),this},g.prototype.highlightAll=function(){var e=this;return this._store.items.forEach(function(t){return e.highlightItem(t)}),this},g.prototype.unhighlightAll=function(){var e=this;return this._store.items.forEach(function(t){return e.unhighlightItem(t)}),this},g.prototype.removeActiveItemsByValue=function(e){var t=this;return this._store.activeItems.filter(function(n){return n.value===e}).forEach(function(n){return t._removeItem(n)}),this},g.prototype.removeActiveItems=function(e){var t=this;return this._store.activeItems.filter(function(n){var s=n.id;return s!==e}).forEach(function(n){return t._removeItem(n)}),this},g.prototype.removeHighlightedItems=function(e){var t=this;return e===void 0&&(e=!1),this._store.highlightedActiveItems.forEach(function(n){t._removeItem(n),e&&t._triggerChange(n.value)}),this},g.prototype.showDropdown=function(e){var t=this;return this.dropdown.isActive?this:(requestAnimationFrame(function(){t.dropdown.show(),t.containerOuter.open(t.dropdown.distanceFromTopWindow),!e&&t._canSearch&&t.input.focus(),t.passedElement.triggerEvent(y.EVENTS.showDropdown,{})}),this)},g.prototype.hideDropdown=function(e){var t=this;return this.dropdown.isActive?(requestAnimationFrame(function(){t.dropdown.hide(),t.containerOuter.close(),!e&&t._canSearch&&(t.input.removeActiveDescendant(),t.input.blur()),t.passedElement.triggerEvent(y.EVENTS.hideDropdown,{})}),this):this},g.prototype.getValue=function(e){e===void 0&&(e=!1);var t=this._store.activeItems.reduce(function(n,s){var v=e?s.value:s;return n.push(v),n},[]);return this._isSelectOneElement?t[0]:t},g.prototype.setValue=function(e){var t=this;return this.initialised?(e.forEach(function(n){return t._setChoiceOrItem(n)}),this):this},g.prototype.setChoiceByValue=function(e){var t=this;if(!this.initialised||this._isTextElement)return this;var n=Array.isArray(e)?e:[e];return n.forEach(function(s){return t._findAndSelectChoiceByValue(s)}),this},g.prototype.setChoices=function(e,t,n,s){var v=this;if(e===void 0&&(e=[]),t===void 0&&(t="value"),n===void 0&&(n="label"),s===void 0&&(s=!1),!this.initialised)throw new ReferenceError("setChoices was called on a non-initialized instance of Choices");if(!this._isSelectElement)throw new TypeError("setChoices can't be used with INPUT based Choices");if(typeof t!="string"||!t)throw new TypeError("value parameter must be a name of 'value' field in passed objects");if(s&&this.clearChoices(),typeof e=="function"){var P=e(this);if(typeof Promise=="function"&&P instanceof Promise)return new Promise(function(M){return requestAnimationFrame(M)}).then(function(){return v._handleLoadingState(!0)}).then(function(){return P}).then(function(M){return v.setChoices(M,t,n,s)}).catch(function(M){v.config.silent||console.error(M)}).then(function(){return v._handleLoadingState(!1)}).then(function(){return v});if(!Array.isArray(P))throw new TypeError(".setChoices first argument function must return either array of choices or Promise, got: ".concat(typeof P));return this.setChoices(P,t,n,!1)}if(!Array.isArray(e))throw new TypeError(".setChoices must be called either with array of choices with a function resulting into Promise of array of choices");return this.containerOuter.removeLoadingState(),this._startLoading(),e.forEach(function(M){if(M.choices)v._addGroup({id:M.id?parseInt("".concat(M.id),10):null,group:M,valueKey:t,labelKey:n});else{var K=M;v._addChoice({value:K[t],label:K[n],isSelected:!!K.selected,isDisabled:!!K.disabled,placeholder:!!K.placeholder,customProperties:K.customProperties})}}),this._stopLoading(),this},g.prototype.clearChoices=function(){return this._store.dispatch((0,r.clearChoices)()),this},g.prototype.clearStore=function(){return this._store.dispatch((0,O.clearAll)()),this},g.prototype.clearInput=function(){var e=!this._isSelectOneElement;return this.input.clear(e),!this._isTextElement&&this._canSearch&&(this._isSearching=!1,this._store.dispatch((0,r.activateChoices)(!0))),this},g.prototype._render=function(){if(!this._store.isLoading()){this._currentState=this._store.state;var e=this._currentState.choices!==this._prevState.choices||this._currentState.groups!==this._prevState.groups||this._currentState.items!==this._prevState.items,t=this._isSelectElement,n=this._currentState.items!==this._prevState.items;e&&(t&&this._renderChoices(),n&&this._renderItems(),this._prevState=this._currentState)}},g.prototype._renderChoices=function(){var e=this,t=this._store,n=t.activeGroups,s=t.activeChoices,v=document.createDocumentFragment();if(this.choiceList.clear(),this.config.resetScrollPosition&&requestAnimationFrame(function(){return e.choiceList.scrollToTop()}),n.length>=1&&!this._isSearching){var P=s.filter(function(C){return C.placeholder===!0&&C.groupId===-1});P.length>=1&&(v=this._createChoicesFragment(P,v)),v=this._createGroupsFragment(n,s,v)}else s.length>=1&&(v=this._createChoicesFragment(s,v));if(v.childNodes&&v.childNodes.length>0){var M=this._store.activeItems,K=this._canAddItem(M,this.input.value);if(K.response)this.choiceList.append(v),this._highlightChoice();else{var f=this._getTemplate("notice",K.notice);this.choiceList.append(f)}}else{var u=void 0,f=void 0;this._isSearching?(f=typeof this.config.noResultsText=="function"?this.config.noResultsText():this.config.noResultsText,u=this._getTemplate("notice",f,"no-results")):(f=typeof this.config.noChoicesText=="function"?this.config.noChoicesText():this.config.noChoicesText,u=this._getTemplate("notice",f,"no-choices")),this.choiceList.append(u)}},g.prototype._renderItems=function(){var e=this._store.activeItems||[];this.itemList.clear();var t=this._createItemsFragment(e);t.childNodes&&this.itemList.append(t)},g.prototype._createGroupsFragment=function(e,t,n){var s=this;n===void 0&&(n=document.createDocumentFragment());var v=function(P){return t.filter(function(M){return s._isSelectOneElement?M.groupId===P.id:M.groupId===P.id&&(s.config.renderSelectedChoices==="always"||!M.selected)})};return this.config.shouldSort&&e.sort(this.config.sorter),e.forEach(function(P){var M=v(P);if(M.length>=1){var K=s._getTemplate("choiceGroup",P);n.appendChild(K),s._createChoicesFragment(M,n,!0)}}),n},g.prototype._createChoicesFragment=function(e,t,n){var s=this;t===void 0&&(t=document.createDocumentFragment()),n===void 0&&(n=!1);var v=this.config,P=v.renderSelectedChoices,M=v.searchResultLimit,K=v.renderChoiceLimit,f=this._isSearching?k.sortByScore:this.config.sorter,u=function(z){var ee=P==="auto"?s._isSelectOneElement||!z.selected:!0;if(ee){var ae=s._getTemplate("choice",z,s.config.itemSelectText);t.appendChild(ae)}},C=e;P==="auto"&&!this._isSelectOneElement&&(C=e.filter(function(z){return!z.selected}));var Y=C.reduce(function(z,ee){return ee.placeholder?z.placeholderChoices.push(ee):z.normalChoices.push(ee),z},{placeholderChoices:[],normalChoices:[]}),V=Y.placeholderChoices,U=Y.normalChoices;(this.config.shouldSort||this._isSearching)&&U.sort(f);var $=C.length,W=this._isSelectOneElement?_(_([],V,!0),U,!0):U;this._isSearching?$=M:K&&K>0&&!n&&($=K);for(var J=0;J<$;J+=1)W[J]&&u(W[J]);return t},g.prototype._createItemsFragment=function(e,t){var n=this;t===void 0&&(t=document.createDocumentFragment());var s=this.config,v=s.shouldSortItems,P=s.sorter,M=s.removeItemButton;v&&!this._isSelectOneElement&&e.sort(P),this._isTextElement?this.passedElement.value=e.map(function(f){var u=f.value;return u}).join(this.config.delimiter):this.passedElement.options=e;var K=function(f){var u=n._getTemplate("item",f,M);t.appendChild(u)};return e.forEach(K),t},g.prototype._triggerChange=function(e){e!=null&&this.passedElement.triggerEvent(y.EVENTS.change,{value:e})},g.prototype._selectPlaceholderChoice=function(e){this._addItem({value:e.value,label:e.label,choiceId:e.id,groupId:e.groupId,placeholder:e.placeholder}),this._triggerChange(e.value)},g.prototype._handleButtonAction=function(e,t){if(!(!e||!t||!this.config.removeItems||!this.config.removeItemButton)){var n=t.parentNode&&t.parentNode.dataset.id,s=n&&e.find(function(v){return v.id===parseInt(n,10)});s&&(this._removeItem(s),this._triggerChange(s.value),this._isSelectOneElement&&this._store.placeholderChoice&&this._selectPlaceholderChoice(this._store.placeholderChoice))}},g.prototype._handleItemAction=function(e,t,n){var s=this;if(n===void 0&&(n=!1),!(!e||!t||!this.config.removeItems||this._isSelectOneElement)){var v=t.dataset.id;e.forEach(function(P){P.id===parseInt("".concat(v),10)&&!P.highlighted?s.highlightItem(P):!n&&P.highlighted&&s.unhighlightItem(P)}),this.input.focus()}},g.prototype._handleChoiceAction=function(e,t){if(!(!e||!t)){var n=t.dataset.id,s=n&&this._store.getChoiceById(n);if(s){var v=e[0]&&e[0].keyCode?e[0].keyCode:void 0,P=this.dropdown.isActive;if(s.keyCode=v,this.passedElement.triggerEvent(y.EVENTS.choice,{choice:s}),!s.selected&&!s.disabled){var M=this._canAddItem(e,s.value);M.response&&(this._addItem({value:s.value,label:s.label,choiceId:s.id,groupId:s.groupId,customProperties:s.customProperties,placeholder:s.placeholder,keyCode:s.keyCode}),this._triggerChange(s.value))}this.clearInput(),P&&this._isSelectOneElement&&(this.hideDropdown(!0),this.containerOuter.focus())}}},g.prototype._handleBackspace=function(e){if(!(!this.config.removeItems||!e)){var t=e[e.length-1],n=e.some(function(s){return s.highlighted});this.config.editItems&&!n&&t?(this.input.value=t.value,this.input.setWidth(),this._removeItem(t),this._triggerChange(t.value)):(n||this.highlightItem(t,!1),this.removeHighlightedItems(!0))}},g.prototype._startLoading=function(){this._store.dispatch((0,O.setIsLoading)(!0))},g.prototype._stopLoading=function(){this._store.dispatch((0,O.setIsLoading)(!1))},g.prototype._handleLoadingState=function(e){e===void 0&&(e=!0);var t=this.itemList.getChild(".".concat(this.config.classNames.placeholder));e?(this.disable(),this.containerOuter.addLoadingState(),this._isSelectOneElement?t?t.innerHTML=this.config.loadingText:(t=this._getTemplate("placeholder",this.config.loadingText),t&&this.itemList.append(t)):this.input.placeholder=this.config.loadingText):(this.enable(),this.containerOuter.removeLoadingState(),this._isSelectOneElement?t&&(t.innerHTML=this._placeholderValue||""):this.input.placeholder=this._placeholderValue||"")},g.prototype._handleSearch=function(e){if(this.input.isFocussed){var t=this._store.choices,n=this.config,s=n.searchFloor,v=n.searchChoices,P=t.some(function(K){return!K.active});if(e!==null&&typeof e<"u"&&e.length>=s){var M=v?this._searchChoices(e):0;this.passedElement.triggerEvent(y.EVENTS.search,{value:e,resultCount:M})}else P&&(this._isSearching=!1,this._store.dispatch((0,r.activateChoices)(!0)))}},g.prototype._canAddItem=function(e,t){var n=!0,s=typeof this.config.addItemText=="function"?this.config.addItemText(t):this.config.addItemText;if(!this._isSelectOneElement){var v=(0,k.existsInArray)(e,t);this.config.maxItemCount>0&&this.config.maxItemCount<=e.length&&(n=!1,s=typeof this.config.maxItemText=="function"?this.config.maxItemText(this.config.maxItemCount):this.config.maxItemText),!this.config.duplicateItemsAllowed&&v&&n&&(n=!1,s=typeof this.config.uniqueItemText=="function"?this.config.uniqueItemText(t):this.config.uniqueItemText),this._isTextElement&&this.config.addItems&&n&&typeof this.config.addItemFilter=="function"&&!this.config.addItemFilter(t)&&(n=!1,s=typeof this.config.customAddItemText=="function"?this.config.customAddItemText(t):this.config.customAddItemText)}return{response:n,notice:s}},g.prototype._searchChoices=function(e){var t=typeof e=="string"?e.trim():e,n=typeof this._currentValue=="string"?this._currentValue.trim():this._currentValue;if(t.length<1&&t==="".concat(n," "))return 0;var s=this._store.searchableChoices,v=t,P=Object.assign(this.config.fuseOptions,{keys:_([],this.config.searchFields,!0),includeMatches:!0}),M=new a.default(s,P),K=M.search(v);return this._currentValue=t,this._highlightPosition=0,this._isSearching=!0,this._store.dispatch((0,r.filterChoices)(K)),K.length},g.prototype._addEventListeners=function(){var e=document.documentElement;e.addEventListener("touchend",this._onTouchEnd,!0),this.containerOuter.element.addEventListener("keydown",this._onKeyDown,!0),this.containerOuter.element.addEventListener("mousedown",this._onMouseDown,!0),e.addEventListener("click",this._onClick,{passive:!0}),e.addEventListener("touchmove",this._onTouchMove,{passive:!0}),this.dropdown.element.addEventListener("mouseover",this._onMouseOver,{passive:!0}),this._isSelectOneElement&&(this.containerOuter.element.addEventListener("focus",this._onFocus,{passive:!0}),this.containerOuter.element.addEventListener("blur",this._onBlur,{passive:!0})),this.input.element.addEventListener("keyup",this._onKeyUp,{passive:!0}),this.input.element.addEventListener("focus",this._onFocus,{passive:!0}),this.input.element.addEventListener("blur",this._onBlur,{passive:!0}),this.input.element.form&&this.input.element.form.addEventListener("reset",this._onFormReset,{passive:!0}),this.input.addEventListeners()},g.prototype._removeEventListeners=function(){var e=document.documentElement;e.removeEventListener("touchend",this._onTouchEnd,!0),this.containerOuter.element.removeEventListener("keydown",this._onKeyDown,!0),this.containerOuter.element.removeEventListener("mousedown",this._onMouseDown,!0),e.removeEventListener("click",this._onClick),e.removeEventListener("touchmove",this._onTouchMove),this.dropdown.element.removeEventListener("mouseover",this._onMouseOver),this._isSelectOneElement&&(this.containerOuter.element.removeEventListener("focus",this._onFocus),this.containerOuter.element.removeEventListener("blur",this._onBlur)),this.input.element.removeEventListener("keyup",this._onKeyUp),this.input.element.removeEventListener("focus",this._onFocus),this.input.element.removeEventListener("blur",this._onBlur),this.input.element.form&&this.input.element.form.removeEventListener("reset",this._onFormReset),this.input.removeEventListeners()},g.prototype._onKeyDown=function(e){var t=e.keyCode,n=this._store.activeItems,s=this.input.isFocussed,v=this.dropdown.isActive,P=this.itemList.hasChildren(),M=String.fromCharCode(t),K=/[^\x00-\x1F]/.test(M),f=y.KEY_CODES.BACK_KEY,u=y.KEY_CODES.DELETE_KEY,C=y.KEY_CODES.ENTER_KEY,Y=y.KEY_CODES.A_KEY,V=y.KEY_CODES.ESC_KEY,U=y.KEY_CODES.UP_KEY,$=y.KEY_CODES.DOWN_KEY,W=y.KEY_CODES.PAGE_UP_KEY,J=y.KEY_CODES.PAGE_DOWN_KEY;switch(!this._isTextElement&&!v&&K&&(this.showDropdown(),this.input.isFocussed||(this.input.value+=e.key.toLowerCase())),t){case Y:return this._onSelectKey(e,P);case C:return this._onEnterKey(e,n,v);case V:return this._onEscapeKey(v);case U:case W:case $:case J:return this._onDirectionKey(e,v);case u:case f:return this._onDeleteKey(e,n,s);default:}},g.prototype._onKeyUp=function(e){var t=e.target,n=e.keyCode,s=this.input.value,v=this._store.activeItems,P=this._canAddItem(v,s),M=y.KEY_CODES.BACK_KEY,K=y.KEY_CODES.DELETE_KEY;if(this._isTextElement){var f=P.notice&&s;if(f){var u=this._getTemplate("notice",P.notice);this.dropdown.element.innerHTML=u.outerHTML,this.showDropdown(!0)}else this.hideDropdown(!0)}else{var C=n===M||n===K,Y=C&&t&&!t.value,V=!this._isTextElement&&this._isSearching,U=this._canSearch&&P.response;Y&&V?(this._isSearching=!1,this._store.dispatch((0,r.activateChoices)(!0))):U&&this._handleSearch(this.input.rawValue)}this._canSearch=this.config.searchEnabled},g.prototype._onSelectKey=function(e,t){var n=e.ctrlKey,s=e.metaKey,v=n||s;if(v&&t){this._canSearch=!1;var P=this.config.removeItems&&!this.input.value&&this.input.element===document.activeElement;P&&this.highlightAll()}},g.prototype._onEnterKey=function(e,t,n){var s=e.target,v=y.KEY_CODES.ENTER_KEY,P=s&&s.hasAttribute("data-button");if(this._isTextElement&&s&&s.value){var M=this.input.value,K=this._canAddItem(t,M);K.response&&(this.hideDropdown(!0),this._addItem({value:M}),this._triggerChange(M),this.clearInput())}if(P&&(this._handleButtonAction(t,s),e.preventDefault()),n){var f=this.dropdown.getChild(".".concat(this.config.classNames.highlightedState));f&&(t[0]&&(t[0].keyCode=v),this._handleChoiceAction(t,f)),e.preventDefault()}else this._isSelectOneElement&&(this.showDropdown(),e.preventDefault())},g.prototype._onEscapeKey=function(e){e&&(this.hideDropdown(!0),this.containerOuter.focus())},g.prototype._onDirectionKey=function(e,t){var n=e.keyCode,s=e.metaKey,v=y.KEY_CODES.DOWN_KEY,P=y.KEY_CODES.PAGE_UP_KEY,M=y.KEY_CODES.PAGE_DOWN_KEY;if(t||this._isSelectOneElement){this.showDropdown(),this._canSearch=!1;var K=n===v||n===M?1:-1,f=s||n===M||n===P,u="[data-choice-selectable]",C=void 0;if(f)K>0?C=this.dropdown.element.querySelector("".concat(u,":last-of-type")):C=this.dropdown.element.querySelector(u);else{var Y=this.dropdown.element.querySelector(".".concat(this.config.classNames.highlightedState));Y?C=(0,k.getAdjacentEl)(Y,u,K):C=this.dropdown.element.querySelector(u)}C&&((0,k.isScrolledIntoView)(C,this.choiceList.element,K)||this.choiceList.scrollToChildElement(C,K),this._highlightChoice(C)),e.preventDefault()}},g.prototype._onDeleteKey=function(e,t,n){var s=e.target;!this._isSelectOneElement&&!s.value&&n&&(this._handleBackspace(t),e.preventDefault())},g.prototype._onTouchMove=function(){this._wasTap&&(this._wasTap=!1)},g.prototype._onTouchEnd=function(e){var t=(e||e.touches[0]).target,n=this._wasTap&&this.containerOuter.element.contains(t);if(n){var s=t===this.containerOuter.element||t===this.containerInner.element;s&&(this._isTextElement?this.input.focus():this._isSelectMultipleElement&&this.showDropdown()),e.stopPropagation()}this._wasTap=!0},g.prototype._onMouseDown=function(e){var t=e.target;if(t instanceof HTMLElement){if(E&&this.choiceList.element.contains(t)){var n=this.choiceList.element.firstElementChild,s=this._direction==="ltr"?e.offsetX>=n.offsetWidth:e.offsetX0;s&&this.unhighlightAll(),this.containerOuter.removeFocusState(),this.hideDropdown(!0)}},g.prototype._onFocus=function(e){var t,n=this,s=e.target,v=s&&this.containerOuter.element.contains(s);if(v){var P=(t={},t[y.TEXT_TYPE]=function(){s===n.input.element&&n.containerOuter.addFocusState()},t[y.SELECT_ONE_TYPE]=function(){n.containerOuter.addFocusState(),s===n.input.element&&n.showDropdown(!0)},t[y.SELECT_MULTIPLE_TYPE]=function(){s===n.input.element&&(n.showDropdown(!0),n.containerOuter.addFocusState())},t);P[this.passedElement.element.type]()}},g.prototype._onBlur=function(e){var t,n=this,s=e.target,v=s&&this.containerOuter.element.contains(s);if(v&&!this._isScrollingOnIe){var P=this._store.activeItems,M=P.some(function(f){return f.highlighted}),K=(t={},t[y.TEXT_TYPE]=function(){s===n.input.element&&(n.containerOuter.removeFocusState(),M&&n.unhighlightAll(),n.hideDropdown(!0))},t[y.SELECT_ONE_TYPE]=function(){n.containerOuter.removeFocusState(),(s===n.input.element||s===n.containerOuter.element&&!n._canSearch)&&n.hideDropdown(!0)},t[y.SELECT_MULTIPLE_TYPE]=function(){s===n.input.element&&(n.containerOuter.removeFocusState(),n.hideDropdown(!0),M&&n.unhighlightAll())},t);K[this.passedElement.element.type]()}else this._isScrollingOnIe=!1,this.input.element.focus()},g.prototype._onFormReset=function(){this._store.dispatch((0,O.resetTo)(this._initialState))},g.prototype._highlightChoice=function(e){var t=this;e===void 0&&(e=null);var n=Array.from(this.dropdown.element.querySelectorAll("[data-choice-selectable]"));if(n.length){var s=e,v=Array.from(this.dropdown.element.querySelectorAll(".".concat(this.config.classNames.highlightedState)));v.forEach(function(P){P.classList.remove(t.config.classNames.highlightedState),P.setAttribute("aria-selected","false")}),s?this._highlightPosition=n.indexOf(s):(n.length>this._highlightPosition?s=n[this._highlightPosition]:s=n[n.length-1],s||(s=n[0])),s.classList.add(this.config.classNames.highlightedState),s.setAttribute("aria-selected","true"),this.passedElement.triggerEvent(y.EVENTS.highlightChoice,{el:s}),this.dropdown.isActive&&(this.input.setActiveDescendant(s.id),this.containerOuter.setActiveDescendant(s.id))}},g.prototype._addItem=function(e){var t=e.value,n=e.label,s=n===void 0?null:n,v=e.choiceId,P=v===void 0?-1:v,M=e.groupId,K=M===void 0?-1:M,f=e.customProperties,u=f===void 0?{}:f,C=e.placeholder,Y=C===void 0?!1:C,V=e.keyCode,U=V===void 0?-1:V,$=typeof t=="string"?t.trim():t,W=this._store.items,J=s||$,z=P||-1,ee=K>=0?this._store.getGroupById(K):null,ae=W?W.length+1:1;this.config.prependValue&&($=this.config.prependValue+$.toString()),this.config.appendValue&&($+=this.config.appendValue.toString()),this._store.dispatch((0,l.addItem)({value:$,label:J,id:ae,choiceId:z,groupId:K,customProperties:u,placeholder:Y,keyCode:U})),this._isSelectOneElement&&this.removeActiveItems(ae),this.passedElement.triggerEvent(y.EVENTS.addItem,{id:ae,value:$,label:J,customProperties:u,groupValue:ee&&ee.value?ee.value:null,keyCode:U})},g.prototype._removeItem=function(e){var t=e.id,n=e.value,s=e.label,v=e.customProperties,P=e.choiceId,M=e.groupId,K=M&&M>=0?this._store.getGroupById(M):null;!t||!P||(this._store.dispatch((0,l.removeItem)(t,P)),this.passedElement.triggerEvent(y.EVENTS.removeItem,{id:t,value:n,label:s,customProperties:v,groupValue:K&&K.value?K.value:null}))},g.prototype._addChoice=function(e){var t=e.value,n=e.label,s=n===void 0?null:n,v=e.isSelected,P=v===void 0?!1:v,M=e.isDisabled,K=M===void 0?!1:M,f=e.groupId,u=f===void 0?-1:f,C=e.customProperties,Y=C===void 0?{}:C,V=e.placeholder,U=V===void 0?!1:V,$=e.keyCode,W=$===void 0?-1:$;if(!(typeof t>"u"||t===null)){var J=this._store.choices,z=s||t,ee=J?J.length+1:1,ae="".concat(this._baseId,"-").concat(this._idNames.itemChoice,"-").concat(ee);this._store.dispatch((0,r.addChoice)({id:ee,groupId:u,elementId:ae,value:t,label:z,disabled:K,customProperties:Y,placeholder:U,keyCode:W})),P&&this._addItem({value:t,label:z,choiceId:ee,customProperties:Y,placeholder:U,keyCode:W})}},g.prototype._addGroup=function(e){var t=this,n=e.group,s=e.id,v=e.valueKey,P=v===void 0?"value":v,M=e.labelKey,K=M===void 0?"label":M,f=(0,k.isType)("Object",n)?n.choices:Array.from(n.getElementsByTagName("OPTION")),u=s||Math.floor(new Date().valueOf()*Math.random()),C=n.disabled?n.disabled:!1;if(f){this._store.dispatch((0,c.addGroup)({value:n.label,id:u,active:!0,disabled:C}));var Y=function(V){var U=V.disabled||V.parentNode&&V.parentNode.disabled;t._addChoice({value:V[P],label:(0,k.isType)("Object",V)?V[K]:V.innerHTML,isSelected:V.selected,isDisabled:U,groupId:u,customProperties:V.customProperties,placeholder:V.placeholder})};f.forEach(Y)}else this._store.dispatch((0,c.addGroup)({value:n.label,id:n.id,active:!1,disabled:n.disabled}))},g.prototype._getTemplate=function(e){for(var t,n=[],s=1;s0?this.element.scrollTop+y-O:a.offsetTop;requestAnimationFrame(function(){c._animateScroll(D,r)})}},d.prototype._scrollDown=function(a,r,c){var l=(c-a)/r,O=l>1?l:1;this.element.scrollTop=a+O},d.prototype._scrollUp=function(a,r,c){var l=(a-c)/r,O=l>1?l:1;this.element.scrollTop=a-O},d.prototype._animateScroll=function(a,r){var c=this,l=_.SCROLLING_SPEED,O=this.element.scrollTop,L=!1;r>0?(this._scrollDown(O,l,a),Oa&&(L=!0)),L&&requestAnimationFrame(function(){c._animateScroll(a,r)})},d}();i.default=h},730:function(j,i,b){Object.defineProperty(i,"__esModule",{value:!0});var _=b(799),h=function(){function d(a){var r=a.element,c=a.classNames;if(this.element=r,this.classNames=c,!(r instanceof HTMLInputElement)&&!(r instanceof HTMLSelectElement))throw new TypeError("Invalid element passed");this.isDisabled=!1}return Object.defineProperty(d.prototype,"isActive",{get:function(){return this.element.dataset.choice==="active"},enumerable:!1,configurable:!0}),Object.defineProperty(d.prototype,"dir",{get:function(){return this.element.dir},enumerable:!1,configurable:!0}),Object.defineProperty(d.prototype,"value",{get:function(){return this.element.value},set:function(a){this.element.value=a},enumerable:!1,configurable:!0}),d.prototype.conceal=function(){this.element.classList.add(this.classNames.input),this.element.hidden=!0,this.element.tabIndex=-1;var a=this.element.getAttribute("style");a&&this.element.setAttribute("data-choice-orig-style",a),this.element.setAttribute("data-choice","active")},d.prototype.reveal=function(){this.element.classList.remove(this.classNames.input),this.element.hidden=!1,this.element.removeAttribute("tabindex");var a=this.element.getAttribute("data-choice-orig-style");a?(this.element.removeAttribute("data-choice-orig-style"),this.element.setAttribute("style",a)):this.element.removeAttribute("style"),this.element.removeAttribute("data-choice"),this.element.value=this.element.value},d.prototype.enable=function(){this.element.removeAttribute("disabled"),this.element.disabled=!1,this.isDisabled=!1},d.prototype.disable=function(){this.element.setAttribute("disabled",""),this.element.disabled=!0,this.isDisabled=!0},d.prototype.triggerEvent=function(a,r){(0,_.dispatchEvent)(this.element,a,r)},d}();i.default=h},541:function(j,i,b){var _=this&&this.__extends||function(){var r=function(c,l){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(O,L){O.__proto__=L}||function(O,L){for(var y in L)Object.prototype.hasOwnProperty.call(L,y)&&(O[y]=L[y])},r(c,l)};return function(c,l){if(typeof l!="function"&&l!==null)throw new TypeError("Class extends value "+String(l)+" is not a constructor or null");r(c,l);function O(){this.constructor=c}c.prototype=l===null?Object.create(l):(O.prototype=l.prototype,new O)}}(),h=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(i,"__esModule",{value:!0});var d=h(b(730)),a=function(r){_(c,r);function c(l){var O=l.element,L=l.classNames,y=l.delimiter,D=r.call(this,{element:O,classNames:L})||this;return D.delimiter=y,D}return Object.defineProperty(c.prototype,"value",{get:function(){return this.element.value},set:function(l){this.element.setAttribute("value",l),this.element.value=l},enumerable:!1,configurable:!0}),c}(d.default);i.default=a},982:function(j,i,b){var _=this&&this.__extends||function(){var r=function(c,l){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(O,L){O.__proto__=L}||function(O,L){for(var y in L)Object.prototype.hasOwnProperty.call(L,y)&&(O[y]=L[y])},r(c,l)};return function(c,l){if(typeof l!="function"&&l!==null)throw new TypeError("Class extends value "+String(l)+" is not a constructor or null");r(c,l);function O(){this.constructor=c}c.prototype=l===null?Object.create(l):(O.prototype=l.prototype,new O)}}(),h=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(i,"__esModule",{value:!0});var d=h(b(730)),a=function(r){_(c,r);function c(l){var O=l.element,L=l.classNames,y=l.template,D=r.call(this,{element:O,classNames:L})||this;return D.template=y,D}return Object.defineProperty(c.prototype,"placeholderOption",{get:function(){return this.element.querySelector('option[value=""]')||this.element.querySelector("option[placeholder]")},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"optionGroups",{get:function(){return Array.from(this.element.getElementsByTagName("OPTGROUP"))},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"options",{get:function(){return Array.from(this.element.options)},set:function(l){var O=this,L=document.createDocumentFragment(),y=function(D){var k=O.template(D);L.appendChild(k)};l.forEach(function(D){return y(D)}),this.appendDocFragment(L)},enumerable:!1,configurable:!0}),c.prototype.appendDocFragment=function(l){this.element.innerHTML="",this.element.appendChild(l)},c}(d.default);i.default=a},883:function(j,i){Object.defineProperty(i,"__esModule",{value:!0}),i.SCROLLING_SPEED=i.SELECT_MULTIPLE_TYPE=i.SELECT_ONE_TYPE=i.TEXT_TYPE=i.KEY_CODES=i.ACTION_TYPES=i.EVENTS=void 0,i.EVENTS={showDropdown:"showDropdown",hideDropdown:"hideDropdown",change:"change",choice:"choice",search:"search",addItem:"addItem",removeItem:"removeItem",highlightItem:"highlightItem",highlightChoice:"highlightChoice",unhighlightItem:"unhighlightItem"},i.ACTION_TYPES={ADD_CHOICE:"ADD_CHOICE",FILTER_CHOICES:"FILTER_CHOICES",ACTIVATE_CHOICES:"ACTIVATE_CHOICES",CLEAR_CHOICES:"CLEAR_CHOICES",ADD_GROUP:"ADD_GROUP",ADD_ITEM:"ADD_ITEM",REMOVE_ITEM:"REMOVE_ITEM",HIGHLIGHT_ITEM:"HIGHLIGHT_ITEM",CLEAR_ALL:"CLEAR_ALL",RESET_TO:"RESET_TO",SET_IS_LOADING:"SET_IS_LOADING"},i.KEY_CODES={BACK_KEY:46,DELETE_KEY:8,ENTER_KEY:13,A_KEY:65,ESC_KEY:27,UP_KEY:38,DOWN_KEY:40,PAGE_UP_KEY:33,PAGE_DOWN_KEY:34},i.TEXT_TYPE="text",i.SELECT_ONE_TYPE="select-one",i.SELECT_MULTIPLE_TYPE="select-multiple",i.SCROLLING_SPEED=4},789:function(j,i,b){Object.defineProperty(i,"__esModule",{value:!0}),i.DEFAULT_CONFIG=i.DEFAULT_CLASSNAMES=void 0;var _=b(799);i.DEFAULT_CLASSNAMES={containerOuter:"choices",containerInner:"choices__inner",input:"choices__input",inputCloned:"choices__input--cloned",list:"choices__list",listItems:"choices__list--multiple",listSingle:"choices__list--single",listDropdown:"choices__list--dropdown",item:"choices__item",itemSelectable:"choices__item--selectable",itemDisabled:"choices__item--disabled",itemChoice:"choices__item--choice",placeholder:"choices__placeholder",group:"choices__group",groupHeading:"choices__heading",button:"choices__button",activeState:"is-active",focusState:"is-focused",openState:"is-open",disabledState:"is-disabled",highlightedState:"is-highlighted",selectedState:"is-selected",flippedState:"is-flipped",loadingState:"is-loading",noResults:"has-no-results",noChoices:"has-no-choices"},i.DEFAULT_CONFIG={items:[],choices:[],silent:!1,renderChoiceLimit:-1,maxItemCount:-1,addItems:!0,addItemFilter:null,removeItems:!0,removeItemButton:!1,editItems:!1,allowHTML:!0,duplicateItemsAllowed:!0,delimiter:",",paste:!0,searchEnabled:!0,searchChoices:!0,searchFloor:1,searchResultLimit:4,searchFields:["label","value"],position:"auto",resetScrollPosition:!0,shouldSort:!0,shouldSortItems:!1,sorter:_.sortByAlpha,placeholder:!0,placeholderValue:null,searchPlaceholderValue:null,prependValue:null,appendValue:null,renderSelectedChoices:"auto",loadingText:"Loading...",noResultsText:"No results found",noChoicesText:"No choices to choose from",itemSelectText:"Press to select",uniqueItemText:"Only unique values can be added",customAddItemText:"Only values matching specific conditions can be added",addItemText:function(h){return'Press Enter to add "'.concat((0,_.sanitise)(h),'"')},maxItemText:function(h){return"Only ".concat(h," values can be added")},valueComparer:function(h,d){return h===d},fuseOptions:{includeScore:!0},labelId:"",callbackOnInit:null,callbackOnCreateTemplates:null,classNames:i.DEFAULT_CLASSNAMES}},18:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},978:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},948:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},359:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},285:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},533:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},187:function(j,i,b){var _=this&&this.__createBinding||(Object.create?function(d,a,r,c){c===void 0&&(c=r);var l=Object.getOwnPropertyDescriptor(a,r);(!l||("get"in l?!a.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:function(){return a[r]}}),Object.defineProperty(d,c,l)}:function(d,a,r,c){c===void 0&&(c=r),d[c]=a[r]}),h=this&&this.__exportStar||function(d,a){for(var r in d)r!=="default"&&!Object.prototype.hasOwnProperty.call(a,r)&&_(a,d,r)};Object.defineProperty(i,"__esModule",{value:!0}),h(b(18),i),h(b(978),i),h(b(948),i),h(b(359),i),h(b(285),i),h(b(533),i),h(b(287),i),h(b(132),i),h(b(837),i),h(b(598),i),h(b(369),i),h(b(37),i),h(b(47),i),h(b(923),i),h(b(876),i)},287:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},132:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},837:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},598:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},37:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},369:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},47:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},923:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},876:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},799:function(j,i){Object.defineProperty(i,"__esModule",{value:!0}),i.parseCustomProperties=i.diff=i.cloneObject=i.existsInArray=i.dispatchEvent=i.sortByScore=i.sortByAlpha=i.strToEl=i.sanitise=i.isScrolledIntoView=i.getAdjacentEl=i.wrap=i.isType=i.getType=i.generateId=i.generateChars=i.getRandomNumber=void 0;var b=function(E,w){return Math.floor(Math.random()*(w-E)+E)};i.getRandomNumber=b;var _=function(E){return Array.from({length:E},function(){return(0,i.getRandomNumber)(0,36).toString(36)}).join("")};i.generateChars=_;var h=function(E,w){var N=E.id||E.name&&"".concat(E.name,"-").concat((0,i.generateChars)(2))||(0,i.generateChars)(4);return N=N.replace(/(:|\.|\[|\]|,)/g,""),N="".concat(w,"-").concat(N),N};i.generateId=h;var d=function(E){return Object.prototype.toString.call(E).slice(8,-1)};i.getType=d;var a=function(E,w){return w!=null&&(0,i.getType)(w)===E};i.isType=a;var r=function(E,w){return w===void 0&&(w=document.createElement("div")),E.parentNode&&(E.nextSibling?E.parentNode.insertBefore(w,E.nextSibling):E.parentNode.appendChild(w)),w.appendChild(E)};i.wrap=r;var c=function(E,w,N){N===void 0&&(N=1);for(var g="".concat(N>0?"next":"previous","ElementSibling"),e=E[g];e;){if(e.matches(w))return e;e=e[g]}return e};i.getAdjacentEl=c;var l=function(E,w,N){if(N===void 0&&(N=1),!E)return!1;var g;return N>0?g=w.scrollTop+w.offsetHeight>=E.offsetTop+E.offsetHeight:g=E.offsetTop>=w.scrollTop,g};i.isScrolledIntoView=l;var O=function(E){return typeof E!="string"?E:E.replace(/&/g,"&").replace(/>/g,">").replace(/-1?h.map(function(y){var D=y;return D.id===parseInt("".concat(c.choiceId),10)&&(D.selected=!0),D}):h}case"REMOVE_ITEM":{var l=d;return l.choiceId&&l.choiceId>-1?h.map(function(y){var D=y;return D.id===parseInt("".concat(l.choiceId),10)&&(D.selected=!1),D}):h}case"FILTER_CHOICES":{var O=d;return h.map(function(y){var D=y;return D.active=O.results.some(function(k){var Q=k.item,Z=k.score;return Q.id===D.id?(D.score=Z,!0):!1}),D})}case"ACTIVATE_CHOICES":{var L=d;return h.map(function(y){var D=y;return D.active=L.active,D})}case"CLEAR_CHOICES":return i.defaultState;default:return h}}i.default=_},871:function(j,i){var b=this&&this.__spreadArray||function(h,d,a){if(a||arguments.length===2)for(var r=0,c=d.length,l;r0?"treeitem":"option"),Object.assign(t.dataset,{choice:"",id:Q,value:Z,selectText:d}),N?(t.classList.add(D),t.dataset.choiceDisabled="",t.setAttribute("aria-disabled","true")):(t.classList.add(L),t.dataset.choiceSelectable=""),t},input:function(_,h){var d=_.classNames,a=d.input,r=d.inputCloned,c=Object.assign(document.createElement("input"),{type:"search",name:"search_terms",className:"".concat(a," ").concat(r),autocomplete:"off",autocapitalize:"off",spellcheck:!1});return c.setAttribute("role","textbox"),c.setAttribute("aria-autocomplete","list"),c.setAttribute("aria-label",h),c},dropdown:function(_){var h=_.classNames,d=h.list,a=h.listDropdown,r=document.createElement("div");return r.classList.add(d,a),r.setAttribute("aria-expanded","false"),r},notice:function(_,h,d){var a,r=_.allowHTML,c=_.classNames,l=c.item,O=c.itemChoice,L=c.noResults,y=c.noChoices;d===void 0&&(d="");var D=[l,O];return d==="no-choices"?D.push(y):d==="no-results"&&D.push(L),Object.assign(document.createElement("div"),(a={},a[r?"innerHTML":"innerText"]=h,a.className=D.join(" "),a))},option:function(_){var h=_.label,d=_.value,a=_.customProperties,r=_.active,c=_.disabled,l=new Option(h,d,!1,r);return a&&(l.dataset.customProperties="".concat(a)),l.disabled=!!c,l}};i.default=b},996:function(j){var i=function(w){return b(w)&&!_(w)};function b(E){return!!E&&typeof E=="object"}function _(E){var w=Object.prototype.toString.call(E);return w==="[object RegExp]"||w==="[object Date]"||a(E)}var h=typeof Symbol=="function"&&Symbol.for,d=h?Symbol.for("react.element"):60103;function a(E){return E.$$typeof===d}function r(E){return Array.isArray(E)?[]:{}}function c(E,w){return w.clone!==!1&&w.isMergeableObject(E)?Z(r(E),E,w):E}function l(E,w,N){return E.concat(w).map(function(g){return c(g,N)})}function O(E,w){if(!w.customMerge)return Z;var N=w.customMerge(E);return typeof N=="function"?N:Z}function L(E){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(E).filter(function(w){return E.propertyIsEnumerable(w)}):[]}function y(E){return Object.keys(E).concat(L(E))}function D(E,w){try{return w in E}catch{return!1}}function k(E,w){return D(E,w)&&!(Object.hasOwnProperty.call(E,w)&&Object.propertyIsEnumerable.call(E,w))}function Q(E,w,N){var g={};return N.isMergeableObject(E)&&y(E).forEach(function(e){g[e]=c(E[e],N)}),y(w).forEach(function(e){k(E,e)||(D(E,e)&&N.isMergeableObject(w[e])?g[e]=O(e,N)(E[e],w[e],N):g[e]=c(w[e],N))}),g}function Z(E,w,N){N=N||{},N.arrayMerge=N.arrayMerge||l,N.isMergeableObject=N.isMergeableObject||i,N.cloneUnlessOtherwiseSpecified=c;var g=Array.isArray(w),e=Array.isArray(E),t=g===e;return t?g?N.arrayMerge(E,w,N):Q(E,w,N):c(w,N)}Z.all=function(w,N){if(!Array.isArray(w))throw new Error("first argument should be an array");return w.reduce(function(g,e){return Z(g,e,N)},{})};var ne=Z;j.exports=ne},221:function(j,i,b){b.r(i),b.d(i,{default:function(){return Se}});function _(p){return Array.isArray?Array.isArray(p):k(p)==="[object Array]"}let h=1/0;function d(p){if(typeof p=="string")return p;let o=p+"";return o=="0"&&1/p==-h?"-0":o}function a(p){return p==null?"":d(p)}function r(p){return typeof p=="string"}function c(p){return typeof p=="number"}function l(p){return p===!0||p===!1||L(p)&&k(p)=="[object Boolean]"}function O(p){return typeof p=="object"}function L(p){return O(p)&&p!==null}function y(p){return p!=null}function D(p){return!p.trim().length}function k(p){return p==null?p===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(p)}let Q="Extended search is not available",Z="Incorrect 'index' type",ne=p=>`Invalid value for key ${p}`,E=p=>`Pattern length exceeds max of ${p}.`,w=p=>`Missing ${p} property in key`,N=p=>`Property 'weight' in key '${p}' must be a positive integer`,g=Object.prototype.hasOwnProperty;class e{constructor(o){this._keys=[],this._keyMap={};let m=0;o.forEach(S=>{let I=t(S);m+=I.weight,this._keys.push(I),this._keyMap[I.id]=I,m+=I.weight}),this._keys.forEach(S=>{S.weight/=m})}get(o){return this._keyMap[o]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function t(p){let o=null,m=null,S=null,I=1,T=null;if(r(p)||_(p))S=p,o=n(p),m=s(p);else{if(!g.call(p,"name"))throw new Error(w("name"));let A=p.name;if(S=A,g.call(p,"weight")&&(I=p.weight,I<=0))throw new Error(N(A));o=n(A),m=s(A),T=p.getFn}return{path:o,id:m,weight:I,src:S,getFn:T}}function n(p){return _(p)?p:p.split(".")}function s(p){return _(p)?p.join("."):p}function v(p,o){let m=[],S=!1,I=(T,A,R)=>{if(y(T))if(!A[R])m.push(T);else{let F=A[R],H=T[F];if(!y(H))return;if(R===A.length-1&&(r(H)||c(H)||l(H)))m.push(a(H));else if(_(H)){S=!0;for(let B=0,x=H.length;Bp.score===o.score?p.idx{this._keysMap[m.id]=S})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,r(this.docs[0])?this.docs.forEach((o,m)=>{this._addString(o,m)}):this.docs.forEach((o,m)=>{this._addObject(o,m)}),this.norm.clear())}add(o){let m=this.size();r(o)?this._addString(o,m):this._addObject(o,m)}removeAt(o){this.records.splice(o,1);for(let m=o,S=this.size();m{let A=I.getFn?I.getFn(o):this.getFn(o,I.path);if(y(A)){if(_(A)){let R=[],F=[{nestedArrIndex:-1,value:A}];for(;F.length;){let{nestedArrIndex:H,value:B}=F.pop();if(y(B))if(r(B)&&!D(B)){let x={v:B,i:H,n:this.norm.get(B)};R.push(x)}else _(B)&&B.forEach((x,G)=>{F.push({nestedArrIndex:G,value:x})})}S.$[T]=R}else if(r(A)&&!D(A)){let R={v:A,n:this.norm.get(A)};S.$[T]=R}}}),this.records.push(S)}toJSON(){return{keys:this.keys,records:this.records}}}function U(p,o,{getFn:m=u.getFn,fieldNormWeight:S=u.fieldNormWeight}={}){let I=new V({getFn:m,fieldNormWeight:S});return I.setKeys(p.map(t)),I.setSources(o),I.create(),I}function $(p,{getFn:o=u.getFn,fieldNormWeight:m=u.fieldNormWeight}={}){let{keys:S,records:I}=p,T=new V({getFn:o,fieldNormWeight:m});return T.setKeys(S),T.setIndexRecords(I),T}function W(p,{errors:o=0,currentLocation:m=0,expectedLocation:S=0,distance:I=u.distance,ignoreLocation:T=u.ignoreLocation}={}){let A=o/p.length;if(T)return A;let R=Math.abs(S-m);return I?A+R/I:R?1:A}function J(p=[],o=u.minMatchCharLength){let m=[],S=-1,I=-1,T=0;for(let A=p.length;T=o&&m.push([S,I]),S=-1)}return p[T-1]&&T-S>=o&&m.push([S,T-1]),m}let z=32;function ee(p,o,m,{location:S=u.location,distance:I=u.distance,threshold:T=u.threshold,findAllMatches:A=u.findAllMatches,minMatchCharLength:R=u.minMatchCharLength,includeMatches:F=u.includeMatches,ignoreLocation:H=u.ignoreLocation}={}){if(o.length>z)throw new Error(E(z));let B=o.length,x=p.length,G=Math.max(0,Math.min(S,x)),q=T,re=G,ue=R>1||F,Ee=ue?Array(x):[],ve;for(;(ve=p.indexOf(o,re))>-1;){let he=W(o,{currentLocation:ve,expectedLocation:G,distance:I,ignoreLocation:H});if(q=Math.min(he,q),re=ve+B,ue){let ge=0;for(;ge=Ue;fe-=1){let Le=fe-1,We=m[p.charAt(Le)];if(ue&&(Ee[Le]=+!!We),Oe[fe]=(Oe[fe+1]<<1|1)&We,he&&(Oe[fe]|=(Ie[fe+1]|Ie[fe])<<1|1|Ie[fe+1]),Oe[fe]&at&&(be=W(o,{errors:he,currentLocation:Le,expectedLocation:G,distance:I,ignoreLocation:H}),be<=q)){if(q=be,re=Le,re<=G)break;Ue=Math.max(1,2*G-re)}}if(W(o,{errors:he+1,currentLocation:G,expectedLocation:G,distance:I,ignoreLocation:H})>q)break;Ie=Oe}let Ke={isMatch:re>=0,score:Math.max(.001,be)};if(ue){let he=J(Ee,R);he.length?F&&(Ke.indices=he):Ke.isMatch=!1}return Ke}function ae(p){let o={};for(let m=0,S=p.length;m{this.chunks.push({pattern:G,alphabet:ae(G),startIndex:q})},x=this.pattern.length;if(x>z){let G=0,q=x%z,re=x-q;for(;G{let{isMatch:ve,score:Ie,indices:be}=ee(o,re,ue,{location:I+Ee,distance:T,threshold:A,findAllMatches:R,minMatchCharLength:F,includeMatches:S,ignoreLocation:H});ve&&(G=!0),x+=Ie,ve&&be&&(B=[...B,...be])});let q={isMatch:G,score:G?x/this.chunks.length:1};return G&&S&&(q.indices=B),q}}class le{constructor(o){this.pattern=o}static isMultiMatch(o){return _e(o,this.multiRegex)}static isSingleMatch(o){return _e(o,this.singleRegex)}search(){}}function _e(p,o){let m=p.match(o);return m?m[1]:null}class te extends le{constructor(o){super(o)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(o){let m=o===this.pattern;return{isMatch:m,score:m?0:1,indices:[0,this.pattern.length-1]}}}class de extends le{constructor(o){super(o)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(o){let S=o.indexOf(this.pattern)===-1;return{isMatch:S,score:S?0:1,indices:[0,o.length-1]}}}class pe extends le{constructor(o){super(o)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(o){let m=o.startsWith(this.pattern);return{isMatch:m,score:m?0:1,indices:[0,this.pattern.length-1]}}}class oe extends le{constructor(o){super(o)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(o){let m=!o.startsWith(this.pattern);return{isMatch:m,score:m?0:1,indices:[0,o.length-1]}}}class Te extends le{constructor(o){super(o)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(o){let m=o.endsWith(this.pattern);return{isMatch:m,score:m?0:1,indices:[o.length-this.pattern.length,o.length-1]}}}class Pe extends le{constructor(o){super(o)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(o){let m=!o.endsWith(this.pattern);return{isMatch:m,score:m?0:1,indices:[0,o.length-1]}}}class He extends le{constructor(o,{location:m=u.location,threshold:S=u.threshold,distance:I=u.distance,includeMatches:T=u.includeMatches,findAllMatches:A=u.findAllMatches,minMatchCharLength:R=u.minMatchCharLength,isCaseSensitive:F=u.isCaseSensitive,ignoreLocation:H=u.ignoreLocation}={}){super(o),this._bitapSearch=new ce(o,{location:m,threshold:S,distance:I,includeMatches:T,findAllMatches:A,minMatchCharLength:R,isCaseSensitive:F,ignoreLocation:H})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(o){return this._bitapSearch.searchIn(o)}}class Be extends le{constructor(o){super(o)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(o){let m=0,S,I=[],T=this.pattern.length;for(;(S=o.indexOf(this.pattern,m))>-1;)m=S+T,I.push([S,m-1]);let A=!!I.length;return{isMatch:A,score:A?0:1,indices:I}}}let Me=[te,Be,pe,oe,Pe,Te,de,He],Ve=Me.length,Xe=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,Je="|";function Qe(p,o={}){return p.split(Je).map(m=>{let S=m.trim().split(Xe).filter(T=>T&&!!T.trim()),I=[];for(let T=0,A=S.length;T!!(p[Ce.AND]||p[Ce.OR]),tt=p=>!!p[je.PATH],it=p=>!_(p)&&O(p)&&!Re(p),ke=p=>({[Ce.AND]:Object.keys(p).map(o=>({[o]:p[o]}))});function xe(p,o,{auto:m=!0}={}){let S=I=>{let T=Object.keys(I),A=tt(I);if(!A&&T.length>1&&!Re(I))return S(ke(I));if(it(I)){let F=A?I[je.PATH]:T[0],H=A?I[je.PATTERN]:I[F];if(!r(H))throw new Error(ne(F));let B={keyId:s(F),pattern:H};return m&&(B.searcher=Ne(H,o)),B}let R={children:[],operator:T[0]};return T.forEach(F=>{let H=I[F];_(H)&&H.forEach(B=>{R.children.push(S(B))})}),R};return Re(p)||(p=ke(p)),S(p)}function nt(p,{ignoreFieldNorm:o=u.ignoreFieldNorm}){p.forEach(m=>{let S=1;m.matches.forEach(({key:I,norm:T,score:A})=>{let R=I?I.weight:null;S*=Math.pow(A===0&&R?Number.EPSILON:A,(R||1)*(o?1:T))}),m.score=S})}function rt(p,o){let m=p.matches;o.matches=[],y(m)&&m.forEach(S=>{if(!y(S.indices)||!S.indices.length)return;let{indices:I,value:T}=S,A={indices:I,value:T};S.key&&(A.key=S.key.src),S.idx>-1&&(A.refIndex=S.idx),o.matches.push(A)})}function st(p,o){o.score=p.score}function ot(p,o,{includeMatches:m=u.includeMatches,includeScore:S=u.includeScore}={}){let I=[];return m&&I.push(rt),S&&I.push(st),p.map(T=>{let{idx:A}=T,R={item:o[A],refIndex:A};return I.length&&I.forEach(F=>{F(T,R)}),R})}class Se{constructor(o,m={},S){this.options={...u,...m},this.options.useExtendedSearch,this._keyStore=new e(this.options.keys),this.setCollection(o,S)}setCollection(o,m){if(this._docs=o,m&&!(m instanceof V))throw new Error(Z);this._myIndex=m||U(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(o){y(o)&&(this._docs.push(o),this._myIndex.add(o))}remove(o=()=>!1){let m=[];for(let S=0,I=this._docs.length;S-1&&(F=F.slice(0,m)),ot(F,this._docs,{includeMatches:S,includeScore:I})}_searchStringList(o){let m=Ne(o,this.options),{records:S}=this._myIndex,I=[];return S.forEach(({v:T,i:A,n:R})=>{if(!y(T))return;let{isMatch:F,score:H,indices:B}=m.searchIn(T);F&&I.push({item:T,idx:A,matches:[{score:H,value:T,norm:R,indices:B}]})}),I}_searchLogical(o){let m=xe(o,this.options),S=(R,F,H)=>{if(!R.children){let{keyId:x,searcher:G}=R,q=this._findMatches({key:this._keyStore.get(x),value:this._myIndex.getValueForItemAtKeyId(F,x),searcher:G});return q&&q.length?[{idx:H,item:F,matches:q}]:[]}let B=[];for(let x=0,G=R.children.length;x{if(y(R)){let H=S(m,R,F);H.length&&(T[F]||(T[F]={idx:F,item:R,matches:[]},A.push(T[F])),H.forEach(({matches:B})=>{T[F].matches.push(...B)}))}}),A}_searchObjectList(o){let m=Ne(o,this.options),{keys:S,records:I}=this._myIndex,T=[];return I.forEach(({$:A,i:R})=>{if(!y(A))return;let F=[];S.forEach((H,B)=>{F.push(...this._findMatches({key:H,value:A[B],searcher:m}))}),F.length&&T.push({idx:R,item:A,matches:F})}),T}_findMatches({key:o,value:m,searcher:S}){if(!y(m))return[];let I=[];if(_(m))m.forEach(({v:T,i:A,n:R})=>{if(!y(T))return;let{isMatch:F,score:H,indices:B}=S.searchIn(T);F&&I.push({score:H,key:o,value:T,idx:A,norm:R,indices:B})});else{let{v:T,n:A}=m,{isMatch:R,score:F,indices:H}=S.searchIn(T);R&&I.push({score:F,key:o,value:T,norm:A,indices:H})}return I}}Se.version="6.6.2",Se.createIndex=U,Se.parseIndex=$,Se.config=u,Se.parseQuery=xe,et(qe)},791:function(j,i,b){b.r(i),b.d(i,{__DO_NOT_USE__ActionTypes:function(){return y},applyMiddleware:function(){return M},bindActionCreators:function(){return v},combineReducers:function(){return n},compose:function(){return P},createStore:function(){return w},legacy_createStore:function(){return N}});function _(f){"@babel/helpers - typeof";return _=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(u){return typeof u}:function(u){return u&&typeof Symbol=="function"&&u.constructor===Symbol&&u!==Symbol.prototype?"symbol":typeof u},_(f)}function h(f,u){if(_(f)!=="object"||f===null)return f;var C=f[Symbol.toPrimitive];if(C!==void 0){var Y=C.call(f,u||"default");if(_(Y)!=="object")return Y;throw new TypeError("@@toPrimitive must return a primitive value.")}return(u==="string"?String:Number)(f)}function d(f){var u=h(f,"string");return _(u)==="symbol"?u:String(u)}function a(f,u,C){return u=d(u),u in f?Object.defineProperty(f,u,{value:C,enumerable:!0,configurable:!0,writable:!0}):f[u]=C,f}function r(f,u){var C=Object.keys(f);if(Object.getOwnPropertySymbols){var Y=Object.getOwnPropertySymbols(f);u&&(Y=Y.filter(function(V){return Object.getOwnPropertyDescriptor(f,V).enumerable})),C.push.apply(C,Y)}return C}function c(f){for(var u=1;u"u"&&(C=u,u=void 0),typeof C<"u"){if(typeof C!="function")throw new Error(l(1));return C(w)(f,u)}if(typeof f!="function")throw new Error(l(2));var V=f,U=u,$=[],W=$,J=!1;function z(){W===$&&(W=$.slice())}function ee(){if(J)throw new Error(l(3));return U}function ae(te){if(typeof te!="function")throw new Error(l(4));if(J)throw new Error(l(5));var de=!0;return z(),W.push(te),function(){if(de){if(J)throw new Error(l(6));de=!1,z();var oe=W.indexOf(te);W.splice(oe,1),$=null}}}function ce(te){if(!D(te))throw new Error(l(7));if(typeof te.type>"u")throw new Error(l(8));if(J)throw new Error(l(9));try{J=!0,U=V(U,te)}finally{J=!1}for(var de=$=W,pe=0;pe0)return"Unexpected "+($.length>1?"keys":"key")+" "+('"'+$.join('", "')+'" found in '+U+". ")+"Expected to find one of the known reducer keys instead: "+('"'+V.join('", "')+'". Unexpected keys will be ignored.')}function t(f){Object.keys(f).forEach(function(u){var C=f[u],Y=C(void 0,{type:y.INIT});if(typeof Y>"u")throw new Error(l(12));if(typeof C(void 0,{type:y.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(l(13))})}function n(f){for(var u=Object.keys(f),C={},Y=0;Y"u"){var Te=ee&&ee.type;throw new Error(l(14))}le[te]=oe,ce=ce||oe!==pe}return ce=ce||U.length!==Object.keys(z).length,ce?le:z}}function s(f,u){return function(){return u(f.apply(this,arguments))}}function v(f,u){if(typeof f=="function")return s(f,u);if(typeof f!="object"||f===null)throw new Error(l(16));var C={};for(var Y in f){var V=f[Y];typeof V=="function"&&(C[Y]=s(V,u))}return C}function P(){for(var f=arguments.length,u=new Array(f),C=0;Cwindow.pluralize(O,e,{count:e}),noChoicesText:E,noResultsText:L,placeholderValue:k,position:Q??"auto",removeItemButton:se,renderChoiceLimit:D,searchEnabled:h,searchFields:w??["label"],searchPlaceholderValue:E,searchResultLimit:D,shouldSort:!1,searchFloor:a?0:1}),await this.refreshChoices({withInitialOptions:!0}),[null,void 0,""].includes(this.state)||this.select.setChoiceByValue(this.formatState(this.state)),this.refreshPlaceholder(),b&&this.select.showDropdown(),this.$refs.input.addEventListener("change",()=>{this.refreshPlaceholder(),!this.isStateBeingUpdated&&(this.isStateBeingUpdated=!0,this.state=this.select.getValue(!0)??null,this.$nextTick(()=>this.isStateBeingUpdated=!1))}),d&&this.$refs.input.addEventListener("showDropdown",async()=>{this.select.clearChoices(),await this.select.setChoices([{label:c,value:"",disabled:!0}]),await this.refreshChoices()}),a&&(this.$refs.input.addEventListener("search",async e=>{let t=e.detail.value?.trim();this.isSearching=!0,this.select.clearChoices(),await this.select.setChoices([{label:[null,void 0,""].includes(t)?c:ne,value:"",disabled:!0}])}),this.$refs.input.addEventListener("search",Alpine.debounce(async e=>{await this.refreshChoices({search:e.detail.value?.trim()}),this.isSearching=!1},Z))),_||window.addEventListener("filament-forms::select.refreshSelectedOptionLabel",async e=>{e.detail.livewireId===r&&e.detail.statePath===g&&await this.refreshChoices({withInitialOptions:!1})}),this.$watch("state",async()=>{this.select&&(this.refreshPlaceholder(),!this.isStateBeingUpdated&&await this.refreshChoices({withInitialOptions:!d}))})},destroy:function(){this.select.destroy(),this.select=null},refreshChoices:async function(e={}){let t=await this.getChoices(e);this.select&&(this.select.clearStore(),this.refreshPlaceholder(),this.setChoices(t),[null,void 0,""].includes(this.state)||this.select.setChoiceByValue(this.formatState(this.state)))},setChoices:function(e){this.select.setChoices(e,"value","label",!0)},getChoices:async function(e={}){let t=await this.getExistingOptions(e);return t.concat(await this.getMissingOptions(t))},getExistingOptions:async function({search:e,withInitialOptions:t}){if(t)return y;let n=[];return e!==""&&e!==null&&e!==void 0?n=await i(e):n=await j(),n.map(s=>s.choices?(s.choices=s.choices.map(v=>(v.selected=Array.isArray(this.state)?this.state.includes(v.value):this.state===v.value,v)),s):(s.selected=Array.isArray(this.state)?this.state.includes(s.value):this.state===s.value,s))},refreshPlaceholder:function(){_||(this.select._renderItems(),[null,void 0,""].includes(this.state)&&(this.$el.querySelector(".choices__list--single").innerHTML=`
${k??""}
`))},formatState:function(e){return _?(e??[]).map(t=>t?.toString()):e?.toString()},getMissingOptions:async function(e){let t=this.formatState(this.state);if([null,void 0,"",[],{}].includes(t))return{};let n=new Set;return e.forEach(s=>{if(s.choices){s.choices.forEach(v=>n.add(v.value));return}n.add(s.value)}),_?t.every(s=>n.has(s))?{}:(await me()).filter(s=>!n.has(s.value)).map(s=>(s.selected=!0,s)):n.has(t)?n:[{label:await X(),value:t,selected:!0}]}}}export{vt as default}; +/*! Bundled license information: + +choices.js/public/assets/scripts/choices.js: + (*! choices.js v10.2.0 | © 2022 Josh Johnson | https://github.com/jshjohnson/Choices#readme *) +*/ diff --git a/public/js/filament/forms/components/tags-input.js b/public/js/filament/forms/components/tags-input.js new file mode 100644 index 000000000..c19c04a13 --- /dev/null +++ b/public/js/filament/forms/components/tags-input.js @@ -0,0 +1 @@ +function i({state:a,splitKeys:n}){return{newTag:"",state:a,createTag:function(){if(this.newTag=this.newTag.trim(),this.newTag!==""){if(this.state.includes(this.newTag)){this.newTag="";return}this.state.push(this.newTag),this.newTag=""}},deleteTag:function(t){this.state=this.state.filter(e=>e!==t)},reorderTags:function(t){let e=this.state.splice(t.oldIndex,1)[0];this.state.splice(t.newIndex,0,e),this.state=[...this.state]},input:{["x-on:blur"]:"createTag()",["x-model"]:"newTag",["x-on:keydown"](t){["Enter",...n].includes(t.key)&&(t.preventDefault(),t.stopPropagation(),this.createTag())},["x-on:paste"](){this.$nextTick(()=>{if(n.length===0){this.createTag();return}let t=n.map(e=>e.replace(/[/\-\\^$*+?.()|[\]{}]/g,"\\$&")).join("|");this.newTag.split(new RegExp(t,"g")).forEach(e=>{this.newTag=e,this.createTag()})})}}}}export{i as default}; diff --git a/public/js/filament/forms/components/textarea.js b/public/js/filament/forms/components/textarea.js new file mode 100644 index 000000000..e93fa52c9 --- /dev/null +++ b/public/js/filament/forms/components/textarea.js @@ -0,0 +1 @@ +function t({initialHeight:e}){return{init:function(){this.render()},render:function(){this.$el.scrollHeight>0&&(this.$el.style.height=e+"rem",this.$el.style.height=this.$el.scrollHeight+"px")}}}export{t as default}; diff --git a/public/js/filament/notifications/notifications.js b/public/js/filament/notifications/notifications.js new file mode 100644 index 000000000..5effd39fa --- /dev/null +++ b/public/js/filament/notifications/notifications.js @@ -0,0 +1 @@ +(()=>{var O=Object.create;var $=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames;var H=Object.getPrototypeOf,W=Object.prototype.hasOwnProperty;var d=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports);var j=(i,t,e,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Y(t))!W.call(i,n)&&n!==e&&$(i,n,{get:()=>t[n],enumerable:!(s=V(t,n))||s.enumerable});return i};var J=(i,t,e)=>(e=i!=null?O(H(i)):{},j(t||!i||!i.__esModule?$(e,"default",{value:i,enumerable:!0}):e,i));var S=d((ut,_)=>{var v,g=typeof global<"u"&&(global.crypto||global.msCrypto);g&&g.getRandomValues&&(y=new Uint8Array(16),v=function(){return g.getRandomValues(y),y});var y;v||(T=new Array(16),v=function(){for(var i=0,t;i<16;i++)i&3||(t=Math.random()*4294967296),T[i]=t>>>((i&3)<<3)&255;return T});var T;_.exports=v});var C=d((ct,U)=>{var P=[];for(f=0;f<256;++f)P[f]=(f+256).toString(16).substr(1);var f;function K(i,t){var e=t||0,s=P;return s[i[e++]]+s[i[e++]]+s[i[e++]]+s[i[e++]]+"-"+s[i[e++]]+s[i[e++]]+"-"+s[i[e++]]+s[i[e++]]+"-"+s[i[e++]]+s[i[e++]]+"-"+s[i[e++]]+s[i[e++]]+s[i[e++]]+s[i[e++]]+s[i[e++]]+s[i[e++]]}U.exports=K});var R=d((lt,F)=>{var Q=S(),X=C(),a=Q(),Z=[a[0]|1,a[1],a[2],a[3],a[4],a[5]],b=(a[6]<<8|a[7])&16383,D=0,A=0;function tt(i,t,e){var s=t&&e||0,n=t||[];i=i||{};var r=i.clockseq!==void 0?i.clockseq:b,o=i.msecs!==void 0?i.msecs:new Date().getTime(),h=i.nsecs!==void 0?i.nsecs:A+1,l=o-D+(h-A)/1e4;if(l<0&&i.clockseq===void 0&&(r=r+1&16383),(l<0||o>D)&&i.nsecs===void 0&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");D=o,A=h,b=r,o+=122192928e5;var c=((o&268435455)*1e4+h)%4294967296;n[s++]=c>>>24&255,n[s++]=c>>>16&255,n[s++]=c>>>8&255,n[s++]=c&255;var u=o/4294967296*1e4&268435455;n[s++]=u>>>8&255,n[s++]=u&255,n[s++]=u>>>24&15|16,n[s++]=u>>>16&255,n[s++]=r>>>8|128,n[s++]=r&255;for(var N=i.node||Z,m=0;m<6;++m)n[s+m]=N[m];return t||X(n)}F.exports=tt});var I=d((dt,G)=>{var it=S(),et=C();function st(i,t,e){var s=t&&e||0;typeof i=="string"&&(t=i=="binary"?new Array(16):null,i=null),i=i||{};var n=i.random||(i.rng||it)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,t)for(var r=0;r<16;++r)t[s+r]=n[r];return t||et(n)}G.exports=st});var B=d((ft,z)=>{var nt=R(),M=I(),E=M;E.v1=nt;E.v4=M;z.exports=E});function k(i,t=()=>{}){let e=!1;return function(){e?t.apply(this,arguments):(e=!0,i.apply(this,arguments))}}var q=i=>{i.data("notificationComponent",({notification:t})=>({isShown:!1,computedStyle:null,transitionDuration:null,transitionEasing:null,init:function(){this.computedStyle=window.getComputedStyle(this.$el),this.transitionDuration=parseFloat(this.computedStyle.transitionDuration)*1e3,this.transitionEasing=this.computedStyle.transitionTimingFunction,this.configureTransitions(),this.configureAnimations(),t.duration&&t.duration!=="persistent"&&setTimeout(()=>this.close(),t.duration),this.isShown=!0},configureTransitions:function(){let e=this.computedStyle.display,s=()=>{i.mutateDom(()=>{this.$el.style.setProperty("display",e),this.$el.style.setProperty("visibility","visible")}),this.$el._x_isShown=!0},n=()=>{i.mutateDom(()=>{this.$el._x_isShown?this.$el.style.setProperty("visibility","hidden"):this.$el.style.setProperty("display","none")})},r=k(o=>o?s():n(),o=>{this.$el._x_toggleAndCascadeWithTransitions(this.$el,o,s,n)});i.effect(()=>r(this.isShown))},configureAnimations:function(){let e;Livewire.hook("commit",({component:s,commit:n,succeed:r,fail:o,respond:h})=>{if(!s.snapshot.data.isFilamentNotificationsComponent)return;let l=()=>this.$el.getBoundingClientRect().top,c=l();h(()=>{e=()=>{this.isShown&&this.$el.animate([{transform:`translateY(${c-l()}px)`},{transform:"translateY(0px)"}],{duration:this.transitionDuration,easing:this.transitionEasing})},this.$el.getAnimations().forEach(u=>u.finish())}),r(({snapshot:u,effect:N})=>{e()})})},close:function(){this.isShown=!1,setTimeout(()=>window.dispatchEvent(new CustomEvent("notificationClosed",{detail:{id:t.id}})),this.transitionDuration)},markAsRead:function(){window.dispatchEvent(new CustomEvent("markedNotificationAsRead",{detail:{id:t.id}}))},markAsUnread:function(){window.dispatchEvent(new CustomEvent("markedNotificationAsUnread",{detail:{id:t.id}}))}}))};var L=J(B(),1),p=class{constructor(){return this.id((0,L.v4)()),this}id(t){return this.id=t,this}title(t){return this.title=t,this}body(t){return this.body=t,this}actions(t){return this.actions=t,this}status(t){return this.status=t,this}color(t){return this.color=t,this}icon(t){return this.icon=t,this}iconColor(t){return this.iconColor=t,this}duration(t){return this.duration=t,this}seconds(t){return this.duration(t*1e3),this}persistent(){return this.duration("persistent"),this}danger(){return this.status("danger"),this}info(){return this.status("info"),this}success(){return this.status("success"),this}warning(){return this.status("warning"),this}view(t){return this.view=t,this}viewData(t){return this.viewData=t,this}send(){return window.dispatchEvent(new CustomEvent("notificationSent",{detail:{notification:this}})),this}},w=class{constructor(t){return this.name(t),this}name(t){return this.name=t,this}color(t){return this.color=t,this}dispatch(t,e){return this.event(t),this.eventData(e),this}dispatchSelf(t,e){return this.dispatch(t,e),this.dispatchDirection="self",this}dispatchTo(t,e,s){return this.dispatch(e,s),this.dispatchDirection="to",this.dispatchToComponent=t,this}emit(t,e){return this.dispatch(t,e),this}emitSelf(t,e){return this.dispatchSelf(t,e),this}emitTo(t,e,s){return this.dispatchTo(t,e,s),this}dispatchDirection(t){return this.dispatchDirection=t,this}dispatchToComponent(t){return this.dispatchToComponent=t,this}event(t){return this.event=t,this}eventData(t){return this.eventData=t,this}extraAttributes(t){return this.extraAttributes=t,this}icon(t){return this.icon=t,this}iconPosition(t){return this.iconPosition=t,this}outlined(t=!0){return this.isOutlined=t,this}disabled(t=!0){return this.isDisabled=t,this}label(t){return this.label=t,this}close(t=!0){return this.shouldClose=t,this}openUrlInNewTab(t=!0){return this.shouldOpenUrlInNewTab=t,this}size(t){return this.size=t,this}url(t){return this.url=t,this}view(t){return this.view=t,this}button(){return this.view("filament-notifications::actions.button-action"),this}grouped(){return this.view("filament-notifications::actions.grouped-action"),this}link(){return this.view("filament-notifications::actions.link-action"),this}},x=class{constructor(t){return this.actions(t),this}actions(t){return this.actions=t.map(e=>e.grouped()),this}color(t){return this.color=t,this}icon(t){return this.icon=t,this}iconPosition(t){return this.iconPosition=t,this}label(t){return this.label=t,this}tooltip(t){return this.tooltip=t,this}};window.FilamentNotificationAction=w;window.FilamentNotificationActionGroup=x;window.FilamentNotification=p;document.addEventListener("alpine:init",()=>{window.Alpine.plugin(q)});})(); diff --git a/public/js/filament/support/async-alpine.js b/public/js/filament/support/async-alpine.js new file mode 100644 index 000000000..048f75c05 --- /dev/null +++ b/public/js/filament/support/async-alpine.js @@ -0,0 +1 @@ +(()=>{(()=>{var d=Object.defineProperty,m=t=>d(t,"__esModule",{value:!0}),f=(t,e)=>{m(t);for(var i in e)d(t,i,{get:e[i],enumerable:!0})},o={};f(o,{eager:()=>g,event:()=>w,idle:()=>y,media:()=>b,visible:()=>E});var c=()=>!0,g=c,v=({component:t,argument:e})=>new Promise(i=>{if(e)window.addEventListener(e,()=>i(),{once:!0});else{let n=a=>{a.detail.id===t.id&&(window.removeEventListener("async-alpine:load",n),i())};window.addEventListener("async-alpine:load",n)}}),w=v,x=()=>new Promise(t=>{"requestIdleCallback"in window?window.requestIdleCallback(t):setTimeout(t,200)}),y=x,A=({argument:t})=>new Promise(e=>{if(!t)return console.log("Async Alpine: media strategy requires a media query. Treating as 'eager'"),e();let i=window.matchMedia(`(${t})`);i.matches?e():i.addEventListener("change",e,{once:!0})}),b=A,$=({component:t,argument:e})=>new Promise(i=>{let n=e||"0px 0px 0px 0px",a=new IntersectionObserver(r=>{r[0].isIntersecting&&(a.disconnect(),i())},{rootMargin:n});a.observe(t.el)}),E=$;function P(t){let e=q(t),i=u(e);return i.type==="method"?{type:"expression",operator:"&&",parameters:[i]}:i}function q(t){let e=/\s*([()])\s*|\s*(\|\||&&|\|)\s*|\s*((?:[^()&|]+\([^()]+\))|[^()&|]+)\s*/g,i=[],n;for(;(n=e.exec(t))!==null;){let[,a,r,s]=n;if(a!==void 0)i.push({type:"parenthesis",value:a});else if(r!==void 0)i.push({type:"operator",value:r==="|"?"&&":r});else{let p={type:"method",method:s.trim()};s.includes("(")&&(p.method=s.substring(0,s.indexOf("(")).trim(),p.argument=s.substring(s.indexOf("(")+1,s.indexOf(")"))),s.method==="immediate"&&(s.method="eager"),i.push(p)}}return i}function u(t){let e=h(t);for(;t.length>0&&(t[0].value==="&&"||t[0].value==="|"||t[0].value==="||");){let i=t.shift().value,n=h(t);e.type==="expression"&&e.operator===i?e.parameters.push(n):e={type:"expression",operator:i,parameters:[e,n]}}return e}function h(t){if(t[0].value==="("){t.shift();let e=u(t);return t[0].value===")"&&t.shift(),e}else return t.shift()}var _="__internal_",l={Alpine:null,_options:{prefix:"ax-",alpinePrefix:"x-",root:"load",inline:"load-src",defaultStrategy:"eager"},_alias:!1,_data:{},_realIndex:0,get _index(){return this._realIndex++},init(t,e={}){return this.Alpine=t,this._options={...this._options,...e},this},start(){return this._processInline(),this._setupComponents(),this._mutations(),this},data(t,e=!1){return this._data[t]={loaded:!1,download:e},this},url(t,e){!t||!e||(this._data[t]||this.data(t),this._data[t].download=()=>import(this._parseUrl(e)))},alias(t){this._alias=t},_processInline(){let t=document.querySelectorAll(`[${this._options.prefix}${this._options.inline}]`);for(let e of t)this._inlineElement(e)},_inlineElement(t){let e=t.getAttribute(`${this._options.alpinePrefix}data`),i=t.getAttribute(`${this._options.prefix}${this._options.inline}`);if(!e||!i)return;let n=this._parseName(e);this.url(n,i)},_setupComponents(){let t=document.querySelectorAll(`[${this._options.prefix}${this._options.root}]`);for(let e of t)this._setupComponent(e)},_setupComponent(t){let e=t.getAttribute(`${this._options.alpinePrefix}data`);t.setAttribute(`${this._options.alpinePrefix}ignore`,"");let i=this._parseName(e),n=t.getAttribute(`${this._options.prefix}${this._options.root}`)||this._options.defaultStrategy;this._componentStrategy({name:i,strategy:n,el:t,id:t.id||this._index})},async _componentStrategy(t){let e=P(t.strategy);await this._generateRequirements(t,e),await this._download(t.name),this._activate(t)},_generateRequirements(t,e){if(e.type==="expression"){if(e.operator==="&&")return Promise.all(e.parameters.map(i=>this._generateRequirements(t,i)));if(e.operator==="||")return Promise.any(e.parameters.map(i=>this._generateRequirements(t,i)))}return o[e.method]?o[e.method]({component:t,argument:e.argument}):!1},async _download(t){if(t.startsWith(_)||(this._handleAlias(t),!this._data[t]||this._data[t].loaded))return;let e=await this._getModule(t);this.Alpine.data(t,e),this._data[t].loaded=!0},async _getModule(t){if(!this._data[t])return;let e=await this._data[t].download(t);return typeof e=="function"?e:e[t]||e.default||Object.values(e)[0]||!1},_activate(t){this.Alpine.destroyTree(t.el),t.el.removeAttribute(`${this._options.alpinePrefix}ignore`),t.el._x_ignore=!1,this.Alpine.initTree(t.el)},_mutations(){new MutationObserver(t=>{for(let e of t)if(e.addedNodes)for(let i of e.addedNodes)i.nodeType===1&&(i.hasAttribute(`${this._options.prefix}${this._options.root}`)&&this._mutationEl(i),i.querySelectorAll(`[${this._options.prefix}${this._options.root}]`).forEach(n=>this._mutationEl(n)))}).observe(document,{attributes:!0,childList:!0,subtree:!0})},_mutationEl(t){t.hasAttribute(`${this._options.prefix}${this._options.inline}`)&&this._inlineElement(t),this._setupComponent(t)},_handleAlias(t){if(!(!this._alias||this._data[t])){if(typeof this._alias=="function"){this.data(t,this._alias);return}this.url(t,this._alias.replaceAll("[name]",t))}},_parseName(t){return(t||"").split(/[({]/g)[0]||`${_}${this._index}`},_parseUrl(t){return new RegExp("^(?:[a-z+]+:)?//","i").test(t)?t:new URL(t,document.baseURI).href}};document.addEventListener("alpine:init",()=>{window.AsyncAlpine=l,l.init(Alpine,window.AsyncAlpineOptions||{}),document.dispatchEvent(new CustomEvent("async-alpine:init")),l.start()})})();})(); diff --git a/public/js/filament/support/support.js b/public/js/filament/support/support.js new file mode 100644 index 000000000..1a088c96b --- /dev/null +++ b/public/js/filament/support/support.js @@ -0,0 +1,46 @@ +(()=>{var jo=Object.create;var Di=Object.defineProperty;var Bo=Object.getOwnPropertyDescriptor;var Ho=Object.getOwnPropertyNames;var $o=Object.getPrototypeOf,Wo=Object.prototype.hasOwnProperty;var Kr=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Vo=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ho(e))!Wo.call(t,i)&&i!==r&&Di(t,i,{get:()=>e[i],enumerable:!(n=Bo(e,i))||n.enumerable});return t};var zo=(t,e,r)=>(r=t!=null?jo($o(t)):{},Vo(e||!t||!t.__esModule?Di(r,"default",{value:t,enumerable:!0}):r,t));var oo=Kr(()=>{});var ao=Kr(()=>{});var so=Kr((Os,yr)=>{(function(){"use strict";var t="input is invalid type",e="finalize already called",r=typeof window=="object",n=r?window:{};n.JS_MD5_NO_WINDOW&&(r=!1);var i=!r&&typeof self=="object",o=!n.JS_MD5_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;o?n=global:i&&(n=self);var l=!n.JS_MD5_NO_COMMON_JS&&typeof yr=="object"&&yr.exports,h=typeof define=="function"&&define.amd,u=!n.JS_MD5_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",f="0123456789abcdef".split(""),y=[128,32768,8388608,-2147483648],b=[0,8,16,24],A=["hex","array","digest","buffer","arrayBuffer","base64"],E="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),O=[],P;if(u){var R=new ArrayBuffer(68);P=new Uint8Array(R),O=new Uint32Array(R)}var $=Array.isArray;(n.JS_MD5_NO_NODE_JS||!$)&&($=function(s){return Object.prototype.toString.call(s)==="[object Array]"});var B=ArrayBuffer.isView;u&&(n.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW||!B)&&(B=function(s){return typeof s=="object"&&s.buffer&&s.buffer.constructor===ArrayBuffer});var K=function(s){var p=typeof s;if(p==="string")return[s,!0];if(p!=="object"||s===null)throw new Error(t);if(u&&s.constructor===ArrayBuffer)return[new Uint8Array(s),!1];if(!$(s)&&!B(s))throw new Error(t);return[s,!1]},X=function(s){return function(p){return new U(!0).update(p)[s]()}},ne=function(){var s=X("hex");o&&(s=J(s)),s.create=function(){return new U},s.update=function(d){return s.create().update(d)};for(var p=0;p>>6,Ue[_++]=128|d&63):d<55296||d>=57344?(Ue[_++]=224|d>>>12,Ue[_++]=128|d>>>6&63,Ue[_++]=128|d&63):(d=65536+((d&1023)<<10|s.charCodeAt(++N)&1023),Ue[_++]=240|d>>>18,Ue[_++]=128|d>>>12&63,Ue[_++]=128|d>>>6&63,Ue[_++]=128|d&63);else for(_=this.start;N>>2]|=d<>>2]|=(192|d>>>6)<>>2]|=(128|d&63)<=57344?(Q[_>>>2]|=(224|d>>>12)<>>2]|=(128|d>>>6&63)<>>2]|=(128|d&63)<>>2]|=(240|d>>>18)<>>2]|=(128|d>>>12&63)<>>2]|=(128|d>>>6&63)<>>2]|=(128|d&63)<>>2]|=s[N]<=64?(this.start=_-64,this.hash(),this.hashed=!0):this.start=_}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this},U.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var s=this.blocks,p=this.lastByteIndex;s[p>>>2]|=y[p&3],p>=56&&(this.hashed||this.hash(),s[0]=s[16],s[16]=s[1]=s[2]=s[3]=s[4]=s[5]=s[6]=s[7]=s[8]=s[9]=s[10]=s[11]=s[12]=s[13]=s[14]=s[15]=0),s[14]=this.bytes<<3,s[15]=this.hBytes<<3|this.bytes>>>29,this.hash()}},U.prototype.hash=function(){var s,p,v,d,N,_,M=this.blocks;this.first?(s=M[0]-680876937,s=(s<<7|s>>>25)-271733879<<0,d=(-1732584194^s&2004318071)+M[1]-117830708,d=(d<<12|d>>>20)+s<<0,v=(-271733879^d&(s^-271733879))+M[2]-1126478375,v=(v<<17|v>>>15)+d<<0,p=(s^v&(d^s))+M[3]-1316259209,p=(p<<22|p>>>10)+v<<0):(s=this.h0,p=this.h1,v=this.h2,d=this.h3,s+=(d^p&(v^d))+M[0]-680876936,s=(s<<7|s>>>25)+p<<0,d+=(v^s&(p^v))+M[1]-389564586,d=(d<<12|d>>>20)+s<<0,v+=(p^d&(s^p))+M[2]+606105819,v=(v<<17|v>>>15)+d<<0,p+=(s^v&(d^s))+M[3]-1044525330,p=(p<<22|p>>>10)+v<<0),s+=(d^p&(v^d))+M[4]-176418897,s=(s<<7|s>>>25)+p<<0,d+=(v^s&(p^v))+M[5]+1200080426,d=(d<<12|d>>>20)+s<<0,v+=(p^d&(s^p))+M[6]-1473231341,v=(v<<17|v>>>15)+d<<0,p+=(s^v&(d^s))+M[7]-45705983,p=(p<<22|p>>>10)+v<<0,s+=(d^p&(v^d))+M[8]+1770035416,s=(s<<7|s>>>25)+p<<0,d+=(v^s&(p^v))+M[9]-1958414417,d=(d<<12|d>>>20)+s<<0,v+=(p^d&(s^p))+M[10]-42063,v=(v<<17|v>>>15)+d<<0,p+=(s^v&(d^s))+M[11]-1990404162,p=(p<<22|p>>>10)+v<<0,s+=(d^p&(v^d))+M[12]+1804603682,s=(s<<7|s>>>25)+p<<0,d+=(v^s&(p^v))+M[13]-40341101,d=(d<<12|d>>>20)+s<<0,v+=(p^d&(s^p))+M[14]-1502002290,v=(v<<17|v>>>15)+d<<0,p+=(s^v&(d^s))+M[15]+1236535329,p=(p<<22|p>>>10)+v<<0,s+=(v^d&(p^v))+M[1]-165796510,s=(s<<5|s>>>27)+p<<0,d+=(p^v&(s^p))+M[6]-1069501632,d=(d<<9|d>>>23)+s<<0,v+=(s^p&(d^s))+M[11]+643717713,v=(v<<14|v>>>18)+d<<0,p+=(d^s&(v^d))+M[0]-373897302,p=(p<<20|p>>>12)+v<<0,s+=(v^d&(p^v))+M[5]-701558691,s=(s<<5|s>>>27)+p<<0,d+=(p^v&(s^p))+M[10]+38016083,d=(d<<9|d>>>23)+s<<0,v+=(s^p&(d^s))+M[15]-660478335,v=(v<<14|v>>>18)+d<<0,p+=(d^s&(v^d))+M[4]-405537848,p=(p<<20|p>>>12)+v<<0,s+=(v^d&(p^v))+M[9]+568446438,s=(s<<5|s>>>27)+p<<0,d+=(p^v&(s^p))+M[14]-1019803690,d=(d<<9|d>>>23)+s<<0,v+=(s^p&(d^s))+M[3]-187363961,v=(v<<14|v>>>18)+d<<0,p+=(d^s&(v^d))+M[8]+1163531501,p=(p<<20|p>>>12)+v<<0,s+=(v^d&(p^v))+M[13]-1444681467,s=(s<<5|s>>>27)+p<<0,d+=(p^v&(s^p))+M[2]-51403784,d=(d<<9|d>>>23)+s<<0,v+=(s^p&(d^s))+M[7]+1735328473,v=(v<<14|v>>>18)+d<<0,p+=(d^s&(v^d))+M[12]-1926607734,p=(p<<20|p>>>12)+v<<0,N=p^v,s+=(N^d)+M[5]-378558,s=(s<<4|s>>>28)+p<<0,d+=(N^s)+M[8]-2022574463,d=(d<<11|d>>>21)+s<<0,_=d^s,v+=(_^p)+M[11]+1839030562,v=(v<<16|v>>>16)+d<<0,p+=(_^v)+M[14]-35309556,p=(p<<23|p>>>9)+v<<0,N=p^v,s+=(N^d)+M[1]-1530992060,s=(s<<4|s>>>28)+p<<0,d+=(N^s)+M[4]+1272893353,d=(d<<11|d>>>21)+s<<0,_=d^s,v+=(_^p)+M[7]-155497632,v=(v<<16|v>>>16)+d<<0,p+=(_^v)+M[10]-1094730640,p=(p<<23|p>>>9)+v<<0,N=p^v,s+=(N^d)+M[13]+681279174,s=(s<<4|s>>>28)+p<<0,d+=(N^s)+M[0]-358537222,d=(d<<11|d>>>21)+s<<0,_=d^s,v+=(_^p)+M[3]-722521979,v=(v<<16|v>>>16)+d<<0,p+=(_^v)+M[6]+76029189,p=(p<<23|p>>>9)+v<<0,N=p^v,s+=(N^d)+M[9]-640364487,s=(s<<4|s>>>28)+p<<0,d+=(N^s)+M[12]-421815835,d=(d<<11|d>>>21)+s<<0,_=d^s,v+=(_^p)+M[15]+530742520,v=(v<<16|v>>>16)+d<<0,p+=(_^v)+M[2]-995338651,p=(p<<23|p>>>9)+v<<0,s+=(v^(p|~d))+M[0]-198630844,s=(s<<6|s>>>26)+p<<0,d+=(p^(s|~v))+M[7]+1126891415,d=(d<<10|d>>>22)+s<<0,v+=(s^(d|~p))+M[14]-1416354905,v=(v<<15|v>>>17)+d<<0,p+=(d^(v|~s))+M[5]-57434055,p=(p<<21|p>>>11)+v<<0,s+=(v^(p|~d))+M[12]+1700485571,s=(s<<6|s>>>26)+p<<0,d+=(p^(s|~v))+M[3]-1894986606,d=(d<<10|d>>>22)+s<<0,v+=(s^(d|~p))+M[10]-1051523,v=(v<<15|v>>>17)+d<<0,p+=(d^(v|~s))+M[1]-2054922799,p=(p<<21|p>>>11)+v<<0,s+=(v^(p|~d))+M[8]+1873313359,s=(s<<6|s>>>26)+p<<0,d+=(p^(s|~v))+M[15]-30611744,d=(d<<10|d>>>22)+s<<0,v+=(s^(d|~p))+M[6]-1560198380,v=(v<<15|v>>>17)+d<<0,p+=(d^(v|~s))+M[13]+1309151649,p=(p<<21|p>>>11)+v<<0,s+=(v^(p|~d))+M[4]-145523070,s=(s<<6|s>>>26)+p<<0,d+=(p^(s|~v))+M[11]-1120210379,d=(d<<10|d>>>22)+s<<0,v+=(s^(d|~p))+M[2]+718787259,v=(v<<15|v>>>17)+d<<0,p+=(d^(v|~s))+M[9]-343485551,p=(p<<21|p>>>11)+v<<0,this.first?(this.h0=s+1732584193<<0,this.h1=p-271733879<<0,this.h2=v-1732584194<<0,this.h3=d+271733878<<0,this.first=!1):(this.h0=this.h0+s<<0,this.h1=this.h1+p<<0,this.h2=this.h2+v<<0,this.h3=this.h3+d<<0)},U.prototype.hex=function(){this.finalize();var s=this.h0,p=this.h1,v=this.h2,d=this.h3;return f[s>>>4&15]+f[s&15]+f[s>>>12&15]+f[s>>>8&15]+f[s>>>20&15]+f[s>>>16&15]+f[s>>>28&15]+f[s>>>24&15]+f[p>>>4&15]+f[p&15]+f[p>>>12&15]+f[p>>>8&15]+f[p>>>20&15]+f[p>>>16&15]+f[p>>>28&15]+f[p>>>24&15]+f[v>>>4&15]+f[v&15]+f[v>>>12&15]+f[v>>>8&15]+f[v>>>20&15]+f[v>>>16&15]+f[v>>>28&15]+f[v>>>24&15]+f[d>>>4&15]+f[d&15]+f[d>>>12&15]+f[d>>>8&15]+f[d>>>20&15]+f[d>>>16&15]+f[d>>>28&15]+f[d>>>24&15]},U.prototype.toString=U.prototype.hex,U.prototype.digest=function(){this.finalize();var s=this.h0,p=this.h1,v=this.h2,d=this.h3;return[s&255,s>>>8&255,s>>>16&255,s>>>24&255,p&255,p>>>8&255,p>>>16&255,p>>>24&255,v&255,v>>>8&255,v>>>16&255,v>>>24&255,d&255,d>>>8&255,d>>>16&255,d>>>24&255]},U.prototype.array=U.prototype.digest,U.prototype.arrayBuffer=function(){this.finalize();var s=new ArrayBuffer(16),p=new Uint32Array(s);return p[0]=this.h0,p[1]=this.h1,p[2]=this.h2,p[3]=this.h3,s},U.prototype.buffer=U.prototype.arrayBuffer,U.prototype.base64=function(){for(var s,p,v,d="",N=this.array(),_=0;_<15;)s=N[_++],p=N[_++],v=N[_++],d+=E[s>>>2]+E[(s<<4|p>>>4)&63]+E[(p<<2|v>>>6)&63]+E[v&63];return s=N[_],d+=E[s>>>2]+E[s<<4&63]+"==",d};function Z(s,p){var v,d=K(s);if(s=d[0],d[1]){var N=[],_=s.length,M=0,Q;for(v=0;v<_;++v)Q=s.charCodeAt(v),Q<128?N[M++]=Q:Q<2048?(N[M++]=192|Q>>>6,N[M++]=128|Q&63):Q<55296||Q>=57344?(N[M++]=224|Q>>>12,N[M++]=128|Q>>>6&63,N[M++]=128|Q&63):(Q=65536+((Q&1023)<<10|s.charCodeAt(++v)&1023),N[M++]=240|Q>>>18,N[M++]=128|Q>>>12&63,N[M++]=128|Q>>>6&63,N[M++]=128|Q&63);s=N}s.length>64&&(s=new U(!0).update(s).array());var Ue=[],Rt=[];for(v=0;v<64;++v){var Vt=s[v]||0;Ue[v]=92^Vt,Rt[v]=54^Vt}U.call(this,p),this.update(Rt),this.oKeyPad=Ue,this.inner=!0,this.sharedMemory=p}Z.prototype=new U,Z.prototype.finalize=function(){if(U.prototype.finalize.call(this),this.inner){this.inner=!1;var s=this.array();U.call(this,this.sharedMemory),this.update(this.oKeyPad),this.update(s),U.prototype.finalize.call(this)}};var me=ne();me.md5=me,me.md5.hmac=de(),l?yr.exports=me:(n.md5=me,h&&define(function(){return me}))})()});var ji=["top","right","bottom","left"],Ti=["start","end"],_i=ji.reduce((t,e)=>t.concat(e,e+"-"+Ti[0],e+"-"+Ti[1]),[]),Et=Math.min,tt=Math.max,hr=Math.round,pr=Math.floor,nn=t=>({x:t,y:t}),Uo={left:"right",right:"left",bottom:"top",top:"bottom"},Yo={start:"end",end:"start"};function Jr(t,e,r){return tt(t,Et(e,r))}function jt(t,e){return typeof t=="function"?t(e):t}function pt(t){return t.split("-")[0]}function xt(t){return t.split("-")[1]}function Bi(t){return t==="x"?"y":"x"}function Zr(t){return t==="y"?"height":"width"}function Pn(t){return["top","bottom"].includes(pt(t))?"y":"x"}function Qr(t){return Bi(Pn(t))}function Hi(t,e,r){r===void 0&&(r=!1);let n=xt(t),i=Qr(t),o=Zr(i),l=i==="x"?n===(r?"end":"start")?"right":"left":n==="start"?"bottom":"top";return e.reference[o]>e.floating[o]&&(l=mr(l)),[l,mr(l)]}function Xo(t){let e=mr(t);return[vr(t),e,vr(e)]}function vr(t){return t.replace(/start|end/g,e=>Yo[e])}function qo(t,e,r){let n=["left","right"],i=["right","left"],o=["top","bottom"],l=["bottom","top"];switch(t){case"top":case"bottom":return r?e?i:n:e?n:i;case"left":case"right":return e?o:l;default:return[]}}function Go(t,e,r,n){let i=xt(t),o=qo(pt(t),r==="start",n);return i&&(o=o.map(l=>l+"-"+i),e&&(o=o.concat(o.map(vr)))),o}function mr(t){return t.replace(/left|right|bottom|top/g,e=>Uo[e])}function Ko(t){return{top:0,right:0,bottom:0,left:0,...t}}function ei(t){return typeof t!="number"?Ko(t):{top:t,right:t,bottom:t,left:t}}function Dn(t){return{...t,top:t.y,left:t.x,right:t.x+t.width,bottom:t.y+t.height}}function Pi(t,e,r){let{reference:n,floating:i}=t,o=Pn(e),l=Qr(e),h=Zr(l),u=pt(e),f=o==="y",y=n.x+n.width/2-i.width/2,b=n.y+n.height/2-i.height/2,A=n[h]/2-i[h]/2,E;switch(u){case"top":E={x:y,y:n.y-i.height};break;case"bottom":E={x:y,y:n.y+n.height};break;case"right":E={x:n.x+n.width,y:b};break;case"left":E={x:n.x-i.width,y:b};break;default:E={x:n.x,y:n.y}}switch(xt(e)){case"start":E[l]-=A*(r&&f?-1:1);break;case"end":E[l]+=A*(r&&f?-1:1);break}return E}var Jo=async(t,e,r)=>{let{placement:n="bottom",strategy:i="absolute",middleware:o=[],platform:l}=r,h=o.filter(Boolean),u=await(l.isRTL==null?void 0:l.isRTL(e)),f=await l.getElementRects({reference:t,floating:e,strategy:i}),{x:y,y:b}=Pi(f,n,u),A=n,E={},O=0;for(let P=0;P({name:"arrow",options:t,async fn(e){let{x:r,y:n,placement:i,rects:o,platform:l,elements:h,middlewareData:u}=e,{element:f,padding:y=0}=jt(t,e)||{};if(f==null)return{};let b=ei(y),A={x:r,y:n},E=Qr(i),O=Zr(E),P=await l.getDimensions(f),R=E==="y",$=R?"top":"left",B=R?"bottom":"right",K=R?"clientHeight":"clientWidth",X=o.reference[O]+o.reference[E]-A[E]-o.floating[O],ne=A[E]-o.reference[E],J=await(l.getOffsetParent==null?void 0:l.getOffsetParent(f)),V=J?J[K]:0;(!V||!await(l.isElement==null?void 0:l.isElement(J)))&&(V=h.floating[K]||o.floating[O]);let de=X/2-ne/2,U=V/2-P[O]/2-1,Z=Et(b[$],U),me=Et(b[B],U),s=Z,p=V-P[O]-me,v=V/2-P[O]/2+de,d=Jr(s,v,p),N=!u.arrow&&xt(i)!=null&&v!==d&&o.reference[O]/2-(vxt(i)===t),...r.filter(i=>xt(i)!==t)]:r.filter(i=>pt(i)===i)).filter(i=>t?xt(i)===t||(e?vr(i)!==i:!1):!0)}var ea=function(t){return t===void 0&&(t={}),{name:"autoPlacement",options:t,async fn(e){var r,n,i;let{rects:o,middlewareData:l,placement:h,platform:u,elements:f}=e,{crossAxis:y=!1,alignment:b,allowedPlacements:A=_i,autoAlignment:E=!0,...O}=jt(t,e),P=b!==void 0||A===_i?Qo(b||null,E,A):A,R=await Tn(e,O),$=((r=l.autoPlacement)==null?void 0:r.index)||0,B=P[$];if(B==null)return{};let K=Hi(B,o,await(u.isRTL==null?void 0:u.isRTL(f.floating)));if(h!==B)return{reset:{placement:P[0]}};let X=[R[pt(B)],R[K[0]],R[K[1]]],ne=[...((n=l.autoPlacement)==null?void 0:n.overflows)||[],{placement:B,overflows:X}],J=P[$+1];if(J)return{data:{index:$+1,overflows:ne},reset:{placement:J}};let V=ne.map(Z=>{let me=xt(Z.placement);return[Z.placement,me&&y?Z.overflows.slice(0,2).reduce((s,p)=>s+p,0):Z.overflows[0],Z.overflows]}).sort((Z,me)=>Z[1]-me[1]),U=((i=V.filter(Z=>Z[2].slice(0,xt(Z[0])?2:3).every(me=>me<=0))[0])==null?void 0:i[0])||V[0][0];return U!==h?{data:{index:$+1,overflows:ne},reset:{placement:U}}:{}}}},ta=function(t){return t===void 0&&(t={}),{name:"flip",options:t,async fn(e){var r,n;let{placement:i,middlewareData:o,rects:l,initialPlacement:h,platform:u,elements:f}=e,{mainAxis:y=!0,crossAxis:b=!0,fallbackPlacements:A,fallbackStrategy:E="bestFit",fallbackAxisSideDirection:O="none",flipAlignment:P=!0,...R}=jt(t,e);if((r=o.arrow)!=null&&r.alignmentOffset)return{};let $=pt(i),B=pt(h)===h,K=await(u.isRTL==null?void 0:u.isRTL(f.floating)),X=A||(B||!P?[mr(h)]:Xo(h));!A&&O!=="none"&&X.push(...Go(h,P,O,K));let ne=[h,...X],J=await Tn(e,R),V=[],de=((n=o.flip)==null?void 0:n.overflows)||[];if(y&&V.push(J[$]),b){let s=Hi(i,l,K);V.push(J[s[0]],J[s[1]])}if(de=[...de,{placement:i,overflows:V}],!V.every(s=>s<=0)){var U,Z;let s=(((U=o.flip)==null?void 0:U.index)||0)+1,p=ne[s];if(p)return{data:{index:s,overflows:de},reset:{placement:p}};let v=(Z=de.filter(d=>d.overflows[0]<=0).sort((d,N)=>d.overflows[1]-N.overflows[1])[0])==null?void 0:Z.placement;if(!v)switch(E){case"bestFit":{var me;let d=(me=de.map(N=>[N.placement,N.overflows.filter(_=>_>0).reduce((_,M)=>_+M,0)]).sort((N,_)=>N[1]-_[1])[0])==null?void 0:me[0];d&&(v=d);break}case"initialPlacement":v=h;break}if(i!==v)return{reset:{placement:v}}}return{}}}};function Mi(t,e){return{top:t.top-e.height,right:t.right-e.width,bottom:t.bottom-e.height,left:t.left-e.width}}function Ri(t){return ji.some(e=>t[e]>=0)}var na=function(t){return t===void 0&&(t={}),{name:"hide",options:t,async fn(e){let{rects:r}=e,{strategy:n="referenceHidden",...i}=jt(t,e);switch(n){case"referenceHidden":{let o=await Tn(e,{...i,elementContext:"reference"}),l=Mi(o,r.reference);return{data:{referenceHiddenOffsets:l,referenceHidden:Ri(l)}}}case"escaped":{let o=await Tn(e,{...i,altBoundary:!0}),l=Mi(o,r.floating);return{data:{escapedOffsets:l,escaped:Ri(l)}}}default:return{}}}}};function $i(t){let e=Et(...t.map(o=>o.left)),r=Et(...t.map(o=>o.top)),n=tt(...t.map(o=>o.right)),i=tt(...t.map(o=>o.bottom));return{x:e,y:r,width:n-e,height:i-r}}function ra(t){let e=t.slice().sort((i,o)=>i.y-o.y),r=[],n=null;for(let i=0;in.height/2?r.push([o]):r[r.length-1].push(o),n=o}return r.map(i=>Dn($i(i)))}var ia=function(t){return t===void 0&&(t={}),{name:"inline",options:t,async fn(e){let{placement:r,elements:n,rects:i,platform:o,strategy:l}=e,{padding:h=2,x:u,y:f}=jt(t,e),y=Array.from(await(o.getClientRects==null?void 0:o.getClientRects(n.reference))||[]),b=ra(y),A=Dn($i(y)),E=ei(h);function O(){if(b.length===2&&b[0].left>b[1].right&&u!=null&&f!=null)return b.find(R=>u>R.left-E.left&&uR.top-E.top&&f=2){if(Pn(r)==="y"){let Z=b[0],me=b[b.length-1],s=pt(r)==="top",p=Z.top,v=me.bottom,d=s?Z.left:me.left,N=s?Z.right:me.right,_=N-d,M=v-p;return{top:p,bottom:v,left:d,right:N,width:_,height:M,x:d,y:p}}let R=pt(r)==="left",$=tt(...b.map(Z=>Z.right)),B=Et(...b.map(Z=>Z.left)),K=b.filter(Z=>R?Z.left===B:Z.right===$),X=K[0].top,ne=K[K.length-1].bottom,J=B,V=$,de=V-J,U=ne-X;return{top:X,bottom:ne,left:J,right:V,width:de,height:U,x:J,y:X}}return A}let P=await o.getElementRects({reference:{getBoundingClientRect:O},floating:n.floating,strategy:l});return i.reference.x!==P.reference.x||i.reference.y!==P.reference.y||i.reference.width!==P.reference.width||i.reference.height!==P.reference.height?{reset:{rects:P}}:{}}}};async function oa(t,e){let{placement:r,platform:n,elements:i}=t,o=await(n.isRTL==null?void 0:n.isRTL(i.floating)),l=pt(r),h=xt(r),u=Pn(r)==="y",f=["left","top"].includes(l)?-1:1,y=o&&u?-1:1,b=jt(e,t),{mainAxis:A,crossAxis:E,alignmentAxis:O}=typeof b=="number"?{mainAxis:b,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...b};return h&&typeof O=="number"&&(E=h==="end"?O*-1:O),u?{x:E*y,y:A*f}:{x:A*f,y:E*y}}var Wi=function(t){return t===void 0&&(t=0),{name:"offset",options:t,async fn(e){var r,n;let{x:i,y:o,placement:l,middlewareData:h}=e,u=await oa(e,t);return l===((r=h.offset)==null?void 0:r.placement)&&(n=h.arrow)!=null&&n.alignmentOffset?{}:{x:i+u.x,y:o+u.y,data:{...u,placement:l}}}}},aa=function(t){return t===void 0&&(t={}),{name:"shift",options:t,async fn(e){let{x:r,y:n,placement:i}=e,{mainAxis:o=!0,crossAxis:l=!1,limiter:h={fn:R=>{let{x:$,y:B}=R;return{x:$,y:B}}},...u}=jt(t,e),f={x:r,y:n},y=await Tn(e,u),b=Pn(pt(i)),A=Bi(b),E=f[A],O=f[b];if(o){let R=A==="y"?"top":"left",$=A==="y"?"bottom":"right",B=E+y[R],K=E-y[$];E=Jr(B,E,K)}if(l){let R=b==="y"?"top":"left",$=b==="y"?"bottom":"right",B=O+y[R],K=O-y[$];O=Jr(B,O,K)}let P=h.fn({...e,[A]:E,[b]:O});return{...P,data:{x:P.x-r,y:P.y-n}}}}},sa=function(t){return t===void 0&&(t={}),{name:"size",options:t,async fn(e){let{placement:r,rects:n,platform:i,elements:o}=e,{apply:l=()=>{},...h}=jt(t,e),u=await Tn(e,h),f=pt(r),y=xt(r),b=Pn(r)==="y",{width:A,height:E}=n.floating,O,P;f==="top"||f==="bottom"?(O=f,P=y===(await(i.isRTL==null?void 0:i.isRTL(o.floating))?"start":"end")?"left":"right"):(P=f,O=y==="end"?"top":"bottom");let R=E-u[O],$=A-u[P],B=!e.middlewareData.shift,K=R,X=$;if(b){let J=A-u.left-u.right;X=y||B?Et($,J):J}else{let J=E-u.top-u.bottom;K=y||B?Et(R,J):J}if(B&&!y){let J=tt(u.left,0),V=tt(u.right,0),de=tt(u.top,0),U=tt(u.bottom,0);b?X=A-2*(J!==0||V!==0?J+V:tt(u.left,u.right)):K=E-2*(de!==0||U!==0?de+U:tt(u.top,u.bottom))}await l({...e,availableWidth:X,availableHeight:K});let ne=await i.getDimensions(o.floating);return A!==ne.width||E!==ne.height?{reset:{rects:!0}}:{}}}};function rn(t){return Vi(t)?(t.nodeName||"").toLowerCase():"#document"}function lt(t){var e;return(t==null||(e=t.ownerDocument)==null?void 0:e.defaultView)||window}function Bt(t){var e;return(e=(Vi(t)?t.ownerDocument:t.document)||window.document)==null?void 0:e.documentElement}function Vi(t){return t instanceof Node||t instanceof lt(t).Node}function kt(t){return t instanceof Element||t instanceof lt(t).Element}function _t(t){return t instanceof HTMLElement||t instanceof lt(t).HTMLElement}function Ii(t){return typeof ShadowRoot>"u"?!1:t instanceof ShadowRoot||t instanceof lt(t).ShadowRoot}function Un(t){let{overflow:e,overflowX:r,overflowY:n,display:i}=ht(t);return/auto|scroll|overlay|hidden|clip/.test(e+n+r)&&!["inline","contents"].includes(i)}function la(t){return["table","td","th"].includes(rn(t))}function ti(t){let e=ni(),r=ht(t);return r.transform!=="none"||r.perspective!=="none"||(r.containerType?r.containerType!=="normal":!1)||!e&&(r.backdropFilter?r.backdropFilter!=="none":!1)||!e&&(r.filter?r.filter!=="none":!1)||["transform","perspective","filter"].some(n=>(r.willChange||"").includes(n))||["paint","layout","strict","content"].some(n=>(r.contain||"").includes(n))}function ca(t){let e=_n(t);for(;_t(e)&&!gr(e);){if(ti(e))return e;e=_n(e)}return null}function ni(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function gr(t){return["html","body","#document"].includes(rn(t))}function ht(t){return lt(t).getComputedStyle(t)}function br(t){return kt(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function _n(t){if(rn(t)==="html")return t;let e=t.assignedSlot||t.parentNode||Ii(t)&&t.host||Bt(t);return Ii(e)?e.host:e}function zi(t){let e=_n(t);return gr(e)?t.ownerDocument?t.ownerDocument.body:t.body:_t(e)&&Un(e)?e:zi(e)}function zn(t,e,r){var n;e===void 0&&(e=[]),r===void 0&&(r=!0);let i=zi(t),o=i===((n=t.ownerDocument)==null?void 0:n.body),l=lt(i);return o?e.concat(l,l.visualViewport||[],Un(i)?i:[],l.frameElement&&r?zn(l.frameElement):[]):e.concat(i,zn(i,[],r))}function Ui(t){let e=ht(t),r=parseFloat(e.width)||0,n=parseFloat(e.height)||0,i=_t(t),o=i?t.offsetWidth:r,l=i?t.offsetHeight:n,h=hr(r)!==o||hr(n)!==l;return h&&(r=o,n=l),{width:r,height:n,$:h}}function ri(t){return kt(t)?t:t.contextElement}function Cn(t){let e=ri(t);if(!_t(e))return nn(1);let r=e.getBoundingClientRect(),{width:n,height:i,$:o}=Ui(e),l=(o?hr(r.width):r.width)/n,h=(o?hr(r.height):r.height)/i;return(!l||!Number.isFinite(l))&&(l=1),(!h||!Number.isFinite(h))&&(h=1),{x:l,y:h}}var fa=nn(0);function Yi(t){let e=lt(t);return!ni()||!e.visualViewport?fa:{x:e.visualViewport.offsetLeft,y:e.visualViewport.offsetTop}}function ua(t,e,r){return e===void 0&&(e=!1),!r||e&&r!==lt(t)?!1:e}function vn(t,e,r,n){e===void 0&&(e=!1),r===void 0&&(r=!1);let i=t.getBoundingClientRect(),o=ri(t),l=nn(1);e&&(n?kt(n)&&(l=Cn(n)):l=Cn(t));let h=ua(o,r,n)?Yi(o):nn(0),u=(i.left+h.x)/l.x,f=(i.top+h.y)/l.y,y=i.width/l.x,b=i.height/l.y;if(o){let A=lt(o),E=n&&kt(n)?lt(n):n,O=A,P=O.frameElement;for(;P&&n&&E!==O;){let R=Cn(P),$=P.getBoundingClientRect(),B=ht(P),K=$.left+(P.clientLeft+parseFloat(B.paddingLeft))*R.x,X=$.top+(P.clientTop+parseFloat(B.paddingTop))*R.y;u*=R.x,f*=R.y,y*=R.x,b*=R.y,u+=K,f+=X,O=lt(P),P=O.frameElement}}return Dn({width:y,height:b,x:u,y:f})}var da=[":popover-open",":modal"];function Xi(t){return da.some(e=>{try{return t.matches(e)}catch{return!1}})}function pa(t){let{elements:e,rect:r,offsetParent:n,strategy:i}=t,o=i==="fixed",l=Bt(n),h=e?Xi(e.floating):!1;if(n===l||h&&o)return r;let u={scrollLeft:0,scrollTop:0},f=nn(1),y=nn(0),b=_t(n);if((b||!b&&!o)&&((rn(n)!=="body"||Un(l))&&(u=br(n)),_t(n))){let A=vn(n);f=Cn(n),y.x=A.x+n.clientLeft,y.y=A.y+n.clientTop}return{width:r.width*f.x,height:r.height*f.y,x:r.x*f.x-u.scrollLeft*f.x+y.x,y:r.y*f.y-u.scrollTop*f.y+y.y}}function ha(t){return Array.from(t.getClientRects())}function qi(t){return vn(Bt(t)).left+br(t).scrollLeft}function va(t){let e=Bt(t),r=br(t),n=t.ownerDocument.body,i=tt(e.scrollWidth,e.clientWidth,n.scrollWidth,n.clientWidth),o=tt(e.scrollHeight,e.clientHeight,n.scrollHeight,n.clientHeight),l=-r.scrollLeft+qi(t),h=-r.scrollTop;return ht(n).direction==="rtl"&&(l+=tt(e.clientWidth,n.clientWidth)-i),{width:i,height:o,x:l,y:h}}function ma(t,e){let r=lt(t),n=Bt(t),i=r.visualViewport,o=n.clientWidth,l=n.clientHeight,h=0,u=0;if(i){o=i.width,l=i.height;let f=ni();(!f||f&&e==="fixed")&&(h=i.offsetLeft,u=i.offsetTop)}return{width:o,height:l,x:h,y:u}}function ga(t,e){let r=vn(t,!0,e==="fixed"),n=r.top+t.clientTop,i=r.left+t.clientLeft,o=_t(t)?Cn(t):nn(1),l=t.clientWidth*o.x,h=t.clientHeight*o.y,u=i*o.x,f=n*o.y;return{width:l,height:h,x:u,y:f}}function Fi(t,e,r){let n;if(e==="viewport")n=ma(t,r);else if(e==="document")n=va(Bt(t));else if(kt(e))n=ga(e,r);else{let i=Yi(t);n={...e,x:e.x-i.x,y:e.y-i.y}}return Dn(n)}function Gi(t,e){let r=_n(t);return r===e||!kt(r)||gr(r)?!1:ht(r).position==="fixed"||Gi(r,e)}function ba(t,e){let r=e.get(t);if(r)return r;let n=zn(t,[],!1).filter(h=>kt(h)&&rn(h)!=="body"),i=null,o=ht(t).position==="fixed",l=o?_n(t):t;for(;kt(l)&&!gr(l);){let h=ht(l),u=ti(l);!u&&h.position==="fixed"&&(i=null),(o?!u&&!i:!u&&h.position==="static"&&!!i&&["absolute","fixed"].includes(i.position)||Un(l)&&!u&&Gi(t,l))?n=n.filter(y=>y!==l):i=h,l=_n(l)}return e.set(t,n),n}function ya(t){let{element:e,boundary:r,rootBoundary:n,strategy:i}=t,l=[...r==="clippingAncestors"?ba(e,this._c):[].concat(r),n],h=l[0],u=l.reduce((f,y)=>{let b=Fi(e,y,i);return f.top=tt(b.top,f.top),f.right=Et(b.right,f.right),f.bottom=Et(b.bottom,f.bottom),f.left=tt(b.left,f.left),f},Fi(e,h,i));return{width:u.right-u.left,height:u.bottom-u.top,x:u.left,y:u.top}}function wa(t){let{width:e,height:r}=Ui(t);return{width:e,height:r}}function xa(t,e,r){let n=_t(e),i=Bt(e),o=r==="fixed",l=vn(t,!0,o,e),h={scrollLeft:0,scrollTop:0},u=nn(0);if(n||!n&&!o)if((rn(e)!=="body"||Un(i))&&(h=br(e)),n){let b=vn(e,!0,o,e);u.x=b.x+e.clientLeft,u.y=b.y+e.clientTop}else i&&(u.x=qi(i));let f=l.left+h.scrollLeft-u.x,y=l.top+h.scrollTop-u.y;return{x:f,y,width:l.width,height:l.height}}function Li(t,e){return!_t(t)||ht(t).position==="fixed"?null:e?e(t):t.offsetParent}function Ki(t,e){let r=lt(t);if(!_t(t)||Xi(t))return r;let n=Li(t,e);for(;n&&la(n)&&ht(n).position==="static";)n=Li(n,e);return n&&(rn(n)==="html"||rn(n)==="body"&&ht(n).position==="static"&&!ti(n))?r:n||ca(t)||r}var Ea=async function(t){let e=this.getOffsetParent||Ki,r=this.getDimensions;return{reference:xa(t.reference,await e(t.floating),t.strategy),floating:{x:0,y:0,...await r(t.floating)}}};function Oa(t){return ht(t).direction==="rtl"}var Sa={convertOffsetParentRelativeRectToViewportRelativeRect:pa,getDocumentElement:Bt,getClippingRect:ya,getOffsetParent:Ki,getElementRects:Ea,getClientRects:ha,getDimensions:wa,getScale:Cn,isElement:kt,isRTL:Oa};function Aa(t,e){let r=null,n,i=Bt(t);function o(){var h;clearTimeout(n),(h=r)==null||h.disconnect(),r=null}function l(h,u){h===void 0&&(h=!1),u===void 0&&(u=1),o();let{left:f,top:y,width:b,height:A}=t.getBoundingClientRect();if(h||e(),!b||!A)return;let E=pr(y),O=pr(i.clientWidth-(f+b)),P=pr(i.clientHeight-(y+A)),R=pr(f),B={rootMargin:-E+"px "+-O+"px "+-P+"px "+-R+"px",threshold:tt(0,Et(1,u))||1},K=!0;function X(ne){let J=ne[0].intersectionRatio;if(J!==u){if(!K)return l();J?l(!1,J):n=setTimeout(()=>{l(!1,1e-7)},100)}K=!1}try{r=new IntersectionObserver(X,{...B,root:i.ownerDocument})}catch{r=new IntersectionObserver(X,B)}r.observe(t)}return l(!0),o}function Ni(t,e,r,n){n===void 0&&(n={});let{ancestorScroll:i=!0,ancestorResize:o=!0,elementResize:l=typeof ResizeObserver=="function",layoutShift:h=typeof IntersectionObserver=="function",animationFrame:u=!1}=n,f=ri(t),y=i||o?[...f?zn(f):[],...zn(e)]:[];y.forEach($=>{i&&$.addEventListener("scroll",r,{passive:!0}),o&&$.addEventListener("resize",r)});let b=f&&h?Aa(f,r):null,A=-1,E=null;l&&(E=new ResizeObserver($=>{let[B]=$;B&&B.target===f&&E&&(E.unobserve(e),cancelAnimationFrame(A),A=requestAnimationFrame(()=>{var K;(K=E)==null||K.observe(e)})),r()}),f&&!u&&E.observe(f),E.observe(e));let O,P=u?vn(t):null;u&&R();function R(){let $=vn(t);P&&($.x!==P.x||$.y!==P.y||$.width!==P.width||$.height!==P.height)&&r(),P=$,O=requestAnimationFrame(R)}return r(),()=>{var $;y.forEach(B=>{i&&B.removeEventListener("scroll",r),o&&B.removeEventListener("resize",r)}),b?.(),($=E)==null||$.disconnect(),E=null,u&&cancelAnimationFrame(O)}}var ii=ea,Ji=aa,Zi=ta,Qi=sa,eo=na,to=Zo,no=ia,ki=(t,e,r)=>{let n=new Map,i={platform:Sa,...r},o={...i.platform,_c:n};return Jo(t,e,{...i,platform:o})},Ca=t=>{let e={placement:"bottom",strategy:"absolute",middleware:[]},r=Object.keys(t),n=i=>t[i];return r.includes("offset")&&e.middleware.push(Wi(n("offset"))),r.includes("teleport")&&(e.strategy="fixed"),r.includes("placement")&&(e.placement=n("placement")),r.includes("autoPlacement")&&!r.includes("flip")&&e.middleware.push(ii(n("autoPlacement"))),r.includes("flip")&&e.middleware.push(Zi(n("flip"))),r.includes("shift")&&e.middleware.push(Ji(n("shift"))),r.includes("inline")&&e.middleware.push(no(n("inline"))),r.includes("arrow")&&e.middleware.push(to(n("arrow"))),r.includes("hide")&&e.middleware.push(eo(n("hide"))),r.includes("size")&&e.middleware.push(Qi(n("size"))),e},Da=(t,e)=>{let r={component:{trap:!1},float:{placement:"bottom",strategy:"absolute",middleware:[]}},n=i=>t[t.indexOf(i)+1];if(t.includes("trap")&&(r.component.trap=!0),t.includes("teleport")&&(r.float.strategy="fixed"),t.includes("offset")&&r.float.middleware.push(Wi(e.offset||10)),t.includes("placement")&&(r.float.placement=n("placement")),t.includes("autoPlacement")&&!t.includes("flip")&&r.float.middleware.push(ii(e.autoPlacement)),t.includes("flip")&&r.float.middleware.push(Zi(e.flip)),t.includes("shift")&&r.float.middleware.push(Ji(e.shift)),t.includes("inline")&&r.float.middleware.push(no(e.inline)),t.includes("arrow")&&r.float.middleware.push(to(e.arrow)),t.includes("hide")&&r.float.middleware.push(eo(e.hide)),t.includes("size")){let i=e.size?.availableWidth??null,o=e.size?.availableHeight??null;i&&delete e.size.availableWidth,o&&delete e.size.availableHeight,r.float.middleware.push(Qi({...e.size,apply({availableWidth:l,availableHeight:h,elements:u}){Object.assign(u.floating.style,{maxWidth:`${i??l}px`,maxHeight:`${o??h}px`})}}))}return r},Ta=t=>{var e="0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz".split(""),r="";t||(t=Math.floor(Math.random()*e.length));for(var n=0;n{}){let r=!1;return function(){r?e.apply(this,arguments):(r=!0,t.apply(this,arguments))}}function Pa(t){let e={dismissable:!0,trap:!1};function r(n,i=null){if(n){if(n.hasAttribute("aria-expanded")||n.setAttribute("aria-expanded",!1),i.hasAttribute("id"))n.setAttribute("aria-controls",i.getAttribute("id"));else{let o=`panel-${Ta(8)}`;n.setAttribute("aria-controls",o),i.setAttribute("id",o)}i.setAttribute("aria-modal",!0),i.setAttribute("role","dialog")}}t.magic("float",n=>(i={},o={})=>{let l={...e,...o},h=Object.keys(i).length>0?Ca(i):{middleware:[ii()]},u=n,f=n.parentElement.closest("[x-data]"),y=f.querySelector('[x-ref="panel"]');r(u,y);function b(){return y.style.display=="block"}function A(){y.style.display="none",u.setAttribute("aria-expanded","false"),l.trap&&y.setAttribute("x-trap","false"),Ni(n,y,P)}function E(){y.style.display="block",u.setAttribute("aria-expanded","true"),l.trap&&y.setAttribute("x-trap","true"),P()}function O(){b()?A():E()}async function P(){return await ki(n,y,h).then(({middlewareData:R,placement:$,x:B,y:K})=>{if(R.arrow){let X=R.arrow?.x,ne=R.arrow?.y,J=h.middleware.filter(de=>de.name=="arrow")[0].options.element,V={top:"bottom",right:"left",bottom:"top",left:"right"}[$.split("-")[0]];Object.assign(J.style,{left:X!=null?`${X}px`:"",top:ne!=null?`${ne}px`:"",right:"",bottom:"",[V]:"-4px"})}if(R.hide){let{referenceHidden:X}=R.hide;Object.assign(y.style,{visibility:X?"hidden":"visible"})}Object.assign(y.style,{left:`${B}px`,top:`${K}px`})})}l.dismissable&&(window.addEventListener("click",R=>{!f.contains(R.target)&&b()&&O()}),window.addEventListener("keydown",R=>{R.key==="Escape"&&b()&&O()},!0)),O()}),t.directive("float",(n,{modifiers:i,expression:o},{evaluate:l,effect:h})=>{let u=o?l(o):{},f=i.length>0?Da(i,u):{},y=null;f.float.strategy=="fixed"&&(n.style.position="fixed");let b=V=>n.parentElement&&!n.parentElement.closest("[x-data]").contains(V.target)?n.close():null,A=V=>V.key==="Escape"?n.close():null,E=n.getAttribute("x-ref"),O=n.parentElement.closest("[x-data]"),P=O.querySelectorAll(`[\\@click^="$refs.${E}"]`),R=O.querySelectorAll(`[x-on\\:click^="$refs.${E}"]`);n.style.setProperty("display","none"),r([...P,...R][0],n),n._x_isShown=!1,n.trigger=null,n._x_doHide||(n._x_doHide=()=>{n.style.setProperty("display","none",i.includes("important")?"important":void 0)}),n._x_doShow||(n._x_doShow=()=>{n.style.setProperty("display","block",i.includes("important")?"important":void 0)});let $=()=>{n._x_doHide(),n._x_isShown=!1},B=()=>{n._x_doShow(),n._x_isShown=!0},K=()=>setTimeout(B),X=_a(V=>V?B():$(),V=>{typeof n._x_toggleAndCascadeWithTransitions=="function"?n._x_toggleAndCascadeWithTransitions(n,V,B,$):V?K():$()}),ne,J=!0;h(()=>l(V=>{!J&&V===ne||(i.includes("immediate")&&(V?K():$()),X(V),ne=V,J=!1)})),n.open=async function(V){n.trigger=V.currentTarget?V.currentTarget:V,X(!0),n.trigger.setAttribute("aria-expanded","true"),f.component.trap&&n.setAttribute("x-trap","true"),y=Ni(n.trigger,n,()=>{ki(n.trigger,n,f.float).then(({middlewareData:de,placement:U,x:Z,y:me})=>{if(de.arrow){let s=de.arrow?.x,p=de.arrow?.y,v=f.float.middleware.filter(N=>N.name=="arrow")[0].options.element,d={top:"bottom",right:"left",bottom:"top",left:"right"}[U.split("-")[0]];Object.assign(v.style,{left:s!=null?`${s}px`:"",top:p!=null?`${p}px`:"",right:"",bottom:"",[d]:"-4px"})}if(de.hide){let{referenceHidden:s}=de.hide;Object.assign(n.style,{visibility:s?"hidden":"visible"})}Object.assign(n.style,{left:`${Z}px`,top:`${me}px`})})}),window.addEventListener("click",b),window.addEventListener("keydown",A,!0)},n.close=function(){if(!n._x_isShown)return!1;X(!1),n.trigger.setAttribute("aria-expanded","false"),f.component.trap&&n.setAttribute("x-trap","false"),y(),window.removeEventListener("click",b),window.removeEventListener("keydown",A,!1)},n.toggle=function(V){n._x_isShown?n.close():n.open(V)}})}var ro=Pa;function Ma(t){t.store("lazyLoadedAssets",{loaded:new Set,check(l){return Array.isArray(l)?l.every(h=>this.loaded.has(h)):this.loaded.has(l)},markLoaded(l){Array.isArray(l)?l.forEach(h=>this.loaded.add(h)):this.loaded.add(l)}});function e(l){return new CustomEvent(l,{bubbles:!0,composed:!0,cancelable:!0})}function r(l,h={},u,f){let y=document.createElement(l);for(let[b,A]of Object.entries(h))y[b]=A;return u&&(f?u.insertBefore(y,f):u.appendChild(y)),y}function n(l,h,u={},f=null,y=null){let b=l==="link"?`link[href="${h}"]`:`script[src="${h}"]`;if(document.querySelector(b)||t.store("lazyLoadedAssets").check(h))return Promise.resolve();let A=l==="link"?{...u,href:h}:{...u,src:h},E=r(l,A,f,y);return new Promise((O,P)=>{E.onload=()=>{t.store("lazyLoadedAssets").markLoaded(h),O()},E.onerror=()=>{P(new Error(`Failed to load ${l}: ${h}`))}})}async function i(l,h,u=null,f=null){let y={type:"text/css",rel:"stylesheet"};h&&(y.media=h);let b=document.head,A=null;if(u&&f){let E=document.querySelector(`link[href*="${f}"]`);E?(b=E.parentNode,A=u==="before"?E:E.nextSibling):console.warn(`Target (${f}) not found for ${l}. Appending to head.`)}await n("link",l,y,b,A)}async function o(l,h,u=null,f=null){let y,b;u&&f&&(y=document.querySelector(`script[src*="${f}"]`),y?b=u==="before"?y:y.nextSibling:console.warn(`Target (${f}) not found for ${l}. Appending to body.`));let A=h.has("body-start")?"prepend":"append";await n("script",l,{},y||document[h.has("body-end")?"body":"head"],b)}t.directive("load-css",(l,{expression:h},{evaluate:u})=>{let f=u(h),y=l.media,b=l.getAttribute("data-dispatch"),A=l.getAttribute("data-css-before")?"before":l.getAttribute("data-css-after")?"after":null,E=l.getAttribute("data-css-before")||l.getAttribute("data-css-after")||null;Promise.all(f.map(O=>i(O,y,A,E))).then(()=>{b&&window.dispatchEvent(e(b+"-css"))}).catch(O=>{console.error(O)})}),t.directive("load-js",(l,{expression:h,modifiers:u},{evaluate:f})=>{let y=f(h),b=new Set(u),A=l.getAttribute("data-js-before")?"before":l.getAttribute("data-js-after")?"after":null,E=l.getAttribute("data-js-before")||l.getAttribute("data-js-after")||null,O=l.getAttribute("data-dispatch");Promise.all(y.map(P=>o(P,b,A,E))).then(()=>{O&&window.dispatchEvent(e(O+"-js"))}).catch(P=>{console.error(P)})})}var io=Ma;var ko=zo(so(),1);function lo(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),r.push.apply(r,n)}return r}function Mt(t){for(var e=1;e=0)&&(r[i]=t[i]);return r}function Fa(t,e){if(t==null)return{};var r=Ia(t,e),n,i;if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}var La="1.15.2";function Ht(t){if(typeof window<"u"&&window.navigator)return!!navigator.userAgent.match(t)}var Wt=Ht(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),er=Ht(/Edge/i),co=Ht(/firefox/i),Gn=Ht(/safari/i)&&!Ht(/chrome/i)&&!Ht(/android/i),bo=Ht(/iP(ad|od|hone)/i),yo=Ht(/chrome/i)&&Ht(/android/i),wo={capture:!1,passive:!1};function Ce(t,e,r){t.addEventListener(e,r,!Wt&&wo)}function Oe(t,e,r){t.removeEventListener(e,r,!Wt&&wo)}function _r(t,e){if(e){if(e[0]===">"&&(e=e.substring(1)),t)try{if(t.matches)return t.matches(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e)}catch{return!1}return!1}}function Na(t){return t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode}function St(t,e,r,n){if(t){r=r||document;do{if(e!=null&&(e[0]===">"?t.parentNode===r&&_r(t,e):_r(t,e))||n&&t===r)return t;if(t===r)break}while(t=Na(t))}return null}var fo=/\s+/g;function ct(t,e,r){if(t&&e)if(t.classList)t.classList[r?"add":"remove"](e);else{var n=(" "+t.className+" ").replace(fo," ").replace(" "+e+" "," ");t.className=(n+(r?" "+e:"")).replace(fo," ")}}function ae(t,e,r){var n=t&&t.style;if(n){if(r===void 0)return document.defaultView&&document.defaultView.getComputedStyle?r=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(r=t.currentStyle),e===void 0?r:r[e];!(e in n)&&e.indexOf("webkit")===-1&&(e="-webkit-"+e),n[e]=r+(typeof r=="string"?"":"px")}}function Ln(t,e){var r="";if(typeof t=="string")r=t;else do{var n=ae(t,"transform");n&&n!=="none"&&(r=n+" "+r)}while(!e&&(t=t.parentNode));var i=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return i&&new i(r)}function xo(t,e,r){if(t){var n=t.getElementsByTagName(e),i=0,o=n.length;if(r)for(;i=o:l=i<=o,!l)return n;if(n===Pt())break;n=sn(n,!1)}return!1}function Nn(t,e,r,n){for(var i=0,o=0,l=t.children;o2&&arguments[2]!==void 0?arguments[2]:{},i=n.evt,o=Fa(n,za);tr.pluginEvent.bind(se)(e,r,Mt({dragEl:L,parentEl:ze,ghostEl:ue,rootEl:ke,nextEl:bn,lastDownEl:Ar,cloneEl:We,cloneHidden:an,dragStarted:Yn,putSortable:Ze,activeSortable:se.active,originalEvent:i,oldIndex:Fn,oldDraggableIndex:Jn,newIndex:ft,newDraggableIndex:on,hideGhostForTarget:_o,unhideGhostForTarget:Po,cloneNowHidden:function(){an=!0},cloneNowShown:function(){an=!1},dispatchSortableEvent:function(h){it({sortable:r,name:h,originalEvent:i})}},o))};function it(t){Va(Mt({putSortable:Ze,cloneEl:We,targetEl:L,rootEl:ke,oldIndex:Fn,oldDraggableIndex:Jn,newIndex:ft,newDraggableIndex:on},t))}var L,ze,ue,ke,bn,Ar,We,an,Fn,ft,Jn,on,wr,Ze,In=!1,Pr=!1,Mr=[],mn,Ot,si,li,ho,vo,Yn,Rn,Zn,Qn=!1,xr=!1,Cr,nt,ci=[],hi=!1,Rr=[],Fr=typeof document<"u",Er=bo,mo=er||Wt?"cssFloat":"float",Ua=Fr&&!yo&&!bo&&"draggable"in document.createElement("div"),Co=function(){if(Fr){if(Wt)return!1;var t=document.createElement("x");return t.style.cssText="pointer-events:auto",t.style.pointerEvents==="auto"}}(),Do=function(e,r){var n=ae(e),i=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),o=Nn(e,0,r),l=Nn(e,1,r),h=o&&ae(o),u=l&&ae(l),f=h&&parseInt(h.marginLeft)+parseInt(h.marginRight)+qe(o).width,y=u&&parseInt(u.marginLeft)+parseInt(u.marginRight)+qe(l).width;if(n.display==="flex")return n.flexDirection==="column"||n.flexDirection==="column-reverse"?"vertical":"horizontal";if(n.display==="grid")return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(o&&h.float&&h.float!=="none"){var b=h.float==="left"?"left":"right";return l&&(u.clear==="both"||u.clear===b)?"vertical":"horizontal"}return o&&(h.display==="block"||h.display==="flex"||h.display==="table"||h.display==="grid"||f>=i&&n[mo]==="none"||l&&n[mo]==="none"&&f+y>i)?"vertical":"horizontal"},Ya=function(e,r,n){var i=n?e.left:e.top,o=n?e.right:e.bottom,l=n?e.width:e.height,h=n?r.left:r.top,u=n?r.right:r.bottom,f=n?r.width:r.height;return i===h||o===u||i+l/2===h+f/2},Xa=function(e,r){var n;return Mr.some(function(i){var o=i[ut].options.emptyInsertThreshold;if(!(!o||bi(i))){var l=qe(i),h=e>=l.left-o&&e<=l.right+o,u=r>=l.top-o&&r<=l.bottom+o;if(h&&u)return n=i}}),n},To=function(e){function r(o,l){return function(h,u,f,y){var b=h.options.group.name&&u.options.group.name&&h.options.group.name===u.options.group.name;if(o==null&&(l||b))return!0;if(o==null||o===!1)return!1;if(l&&o==="clone")return o;if(typeof o=="function")return r(o(h,u,f,y),l)(h,u,f,y);var A=(l?h:u).options.group.name;return o===!0||typeof o=="string"&&o===A||o.join&&o.indexOf(A)>-1}}var n={},i=e.group;(!i||Sr(i)!="object")&&(i={name:i}),n.name=i.name,n.checkPull=r(i.pull,!0),n.checkPut=r(i.put),n.revertClone=i.revertClone,e.group=n},_o=function(){!Co&&ue&&ae(ue,"display","none")},Po=function(){!Co&&ue&&ae(ue,"display","")};Fr&&!yo&&document.addEventListener("click",function(t){if(Pr)return t.preventDefault(),t.stopPropagation&&t.stopPropagation(),t.stopImmediatePropagation&&t.stopImmediatePropagation(),Pr=!1,!1},!0);var gn=function(e){if(L){e=e.touches?e.touches[0]:e;var r=Xa(e.clientX,e.clientY);if(r){var n={};for(var i in e)e.hasOwnProperty(i)&&(n[i]=e[i]);n.target=n.rootEl=r,n.preventDefault=void 0,n.stopPropagation=void 0,r[ut]._onDragOver(n)}}},qa=function(e){L&&L.parentNode[ut]._isOutsideThisEl(e.target)};function se(t,e){if(!(t&&t.nodeType&&t.nodeType===1))throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t));this.el=t,this.options=e=$t({},e),t[ut]=this;var r={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return Do(t,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(l,h){l.setData("Text",h.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:se.supportPointer!==!1&&"PointerEvent"in window&&!Gn,emptyInsertThreshold:5};tr.initializePlugins(this,t,r);for(var n in r)!(n in e)&&(e[n]=r[n]);To(e);for(var i in this)i.charAt(0)==="_"&&typeof this[i]=="function"&&(this[i]=this[i].bind(this));this.nativeDraggable=e.forceFallback?!1:Ua,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?Ce(t,"pointerdown",this._onTapStart):(Ce(t,"mousedown",this._onTapStart),Ce(t,"touchstart",this._onTapStart)),this.nativeDraggable&&(Ce(t,"dragover",this),Ce(t,"dragenter",this)),Mr.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),$t(this,Ha())}se.prototype={constructor:se,_isOutsideThisEl:function(e){!this.el.contains(e)&&e!==this.el&&(Rn=null)},_getDirection:function(e,r){return typeof this.options.direction=="function"?this.options.direction.call(this,e,r,L):this.options.direction},_onTapStart:function(e){if(e.cancelable){var r=this,n=this.el,i=this.options,o=i.preventOnFilter,l=e.type,h=e.touches&&e.touches[0]||e.pointerType&&e.pointerType==="touch"&&e,u=(h||e).target,f=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||u,y=i.filter;if(ns(n),!L&&!(/mousedown|pointerdown/.test(l)&&e.button!==0||i.disabled)&&!f.isContentEditable&&!(!this.nativeDraggable&&Gn&&u&&u.tagName.toUpperCase()==="SELECT")&&(u=St(u,i.draggable,n,!1),!(u&&u.animated)&&Ar!==u)){if(Fn=vt(u),Jn=vt(u,i.draggable),typeof y=="function"){if(y.call(this,e,u,this)){it({sortable:r,rootEl:f,name:"filter",targetEl:u,toEl:n,fromEl:n}),at("filter",r,{evt:e}),o&&e.cancelable&&e.preventDefault();return}}else if(y&&(y=y.split(",").some(function(b){if(b=St(f,b.trim(),n,!1),b)return it({sortable:r,rootEl:b,name:"filter",targetEl:u,fromEl:n,toEl:n}),at("filter",r,{evt:e}),!0}),y)){o&&e.cancelable&&e.preventDefault();return}i.handle&&!St(f,i.handle,n,!1)||this._prepareDragStart(e,h,u)}}},_prepareDragStart:function(e,r,n){var i=this,o=i.el,l=i.options,h=o.ownerDocument,u;if(n&&!L&&n.parentNode===o){var f=qe(n);if(ke=o,L=n,ze=L.parentNode,bn=L.nextSibling,Ar=n,wr=l.group,se.dragged=L,mn={target:L,clientX:(r||e).clientX,clientY:(r||e).clientY},ho=mn.clientX-f.left,vo=mn.clientY-f.top,this._lastX=(r||e).clientX,this._lastY=(r||e).clientY,L.style["will-change"]="all",u=function(){if(at("delayEnded",i,{evt:e}),se.eventCanceled){i._onDrop();return}i._disableDelayedDragEvents(),!co&&i.nativeDraggable&&(L.draggable=!0),i._triggerDragStart(e,r),it({sortable:i,name:"choose",originalEvent:e}),ct(L,l.chosenClass,!0)},l.ignore.split(",").forEach(function(y){xo(L,y.trim(),fi)}),Ce(h,"dragover",gn),Ce(h,"mousemove",gn),Ce(h,"touchmove",gn),Ce(h,"mouseup",i._onDrop),Ce(h,"touchend",i._onDrop),Ce(h,"touchcancel",i._onDrop),co&&this.nativeDraggable&&(this.options.touchStartThreshold=4,L.draggable=!0),at("delayStart",this,{evt:e}),l.delay&&(!l.delayOnTouchOnly||r)&&(!this.nativeDraggable||!(er||Wt))){if(se.eventCanceled){this._onDrop();return}Ce(h,"mouseup",i._disableDelayedDrag),Ce(h,"touchend",i._disableDelayedDrag),Ce(h,"touchcancel",i._disableDelayedDrag),Ce(h,"mousemove",i._delayedDragTouchMoveHandler),Ce(h,"touchmove",i._delayedDragTouchMoveHandler),l.supportPointer&&Ce(h,"pointermove",i._delayedDragTouchMoveHandler),i._dragStartTimer=setTimeout(u,l.delay)}else u()}},_delayedDragTouchMoveHandler:function(e){var r=e.touches?e.touches[0]:e;Math.max(Math.abs(r.clientX-this._lastX),Math.abs(r.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){L&&fi(L),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var e=this.el.ownerDocument;Oe(e,"mouseup",this._disableDelayedDrag),Oe(e,"touchend",this._disableDelayedDrag),Oe(e,"touchcancel",this._disableDelayedDrag),Oe(e,"mousemove",this._delayedDragTouchMoveHandler),Oe(e,"touchmove",this._delayedDragTouchMoveHandler),Oe(e,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(e,r){r=r||e.pointerType=="touch"&&e,!this.nativeDraggable||r?this.options.supportPointer?Ce(document,"pointermove",this._onTouchMove):r?Ce(document,"touchmove",this._onTouchMove):Ce(document,"mousemove",this._onTouchMove):(Ce(L,"dragend",this),Ce(ke,"dragstart",this._onDragStart));try{document.selection?Dr(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch{}},_dragStarted:function(e,r){if(In=!1,ke&&L){at("dragStarted",this,{evt:r}),this.nativeDraggable&&Ce(document,"dragover",qa);var n=this.options;!e&&ct(L,n.dragClass,!1),ct(L,n.ghostClass,!0),se.active=this,e&&this._appendGhost(),it({sortable:this,name:"start",originalEvent:r})}else this._nulling()},_emulateDragOver:function(){if(Ot){this._lastX=Ot.clientX,this._lastY=Ot.clientY,_o();for(var e=document.elementFromPoint(Ot.clientX,Ot.clientY),r=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint(Ot.clientX,Ot.clientY),e!==r);)r=e;if(L.parentNode[ut]._isOutsideThisEl(e),r)do{if(r[ut]){var n=void 0;if(n=r[ut]._onDragOver({clientX:Ot.clientX,clientY:Ot.clientY,target:e,rootEl:r}),n&&!this.options.dragoverBubble)break}e=r}while(r=r.parentNode);Po()}},_onTouchMove:function(e){if(mn){var r=this.options,n=r.fallbackTolerance,i=r.fallbackOffset,o=e.touches?e.touches[0]:e,l=ue&&Ln(ue,!0),h=ue&&l&&l.a,u=ue&&l&&l.d,f=Er&&nt&&po(nt),y=(o.clientX-mn.clientX+i.x)/(h||1)+(f?f[0]-ci[0]:0)/(h||1),b=(o.clientY-mn.clientY+i.y)/(u||1)+(f?f[1]-ci[1]:0)/(u||1);if(!se.active&&!In){if(n&&Math.max(Math.abs(o.clientX-this._lastX),Math.abs(o.clientY-this._lastY))=0&&(it({rootEl:ze,name:"add",toEl:ze,fromEl:ke,originalEvent:e}),it({sortable:this,name:"remove",toEl:ze,originalEvent:e}),it({rootEl:ze,name:"sort",toEl:ze,fromEl:ke,originalEvent:e}),it({sortable:this,name:"sort",toEl:ze,originalEvent:e})),Ze&&Ze.save()):ft!==Fn&&ft>=0&&(it({sortable:this,name:"update",toEl:ze,originalEvent:e}),it({sortable:this,name:"sort",toEl:ze,originalEvent:e})),se.active&&((ft==null||ft===-1)&&(ft=Fn,on=Jn),it({sortable:this,name:"end",toEl:ze,originalEvent:e}),this.save()))),this._nulling()},_nulling:function(){at("nulling",this),ke=L=ze=ue=bn=We=Ar=an=mn=Ot=Yn=ft=on=Fn=Jn=Rn=Zn=Ze=wr=se.dragged=se.ghost=se.clone=se.active=null,Rr.forEach(function(e){e.checked=!0}),Rr.length=si=li=0},handleEvent:function(e){switch(e.type){case"drop":case"dragend":this._onDrop(e);break;case"dragenter":case"dragover":L&&(this._onDragOver(e),Ga(e));break;case"selectstart":e.preventDefault();break}},toArray:function(){for(var e=[],r,n=this.el.children,i=0,o=n.length,l=this.options;ii.right+o||t.clientY>n.bottom&&t.clientX>n.left:t.clientY>i.bottom+o||t.clientX>n.right&&t.clientY>n.top}function Qa(t,e,r,n,i,o,l,h){var u=n?t.clientY:t.clientX,f=n?r.height:r.width,y=n?r.top:r.left,b=n?r.bottom:r.right,A=!1;if(!l){if(h&&Cry+f*o/2:ub-Cr)return-Zn}else if(u>y+f*(1-i)/2&&ub-f*o/2)?u>y+f/2?1:-1:0}function es(t){return vt(L){t.directive("sortable",e=>{let r=parseInt(e.dataset?.sortableAnimationDuration);r!==0&&!r&&(r=300),e.sortable=xi.create(e,{group:e.getAttribute("x-sortable-group"),draggable:"[x-sortable-item]",handle:"[x-sortable-handle]",dataIdAttr:"x-sortable-item",animation:r,ghostClass:"fi-sortable-ghost"})})};var is=Object.create,Si=Object.defineProperty,os=Object.getPrototypeOf,as=Object.prototype.hasOwnProperty,ss=Object.getOwnPropertyNames,ls=Object.getOwnPropertyDescriptor,cs=t=>Si(t,"__esModule",{value:!0}),Io=(t,e)=>()=>(e||(e={exports:{}},t(e.exports,e)),e.exports),fs=(t,e,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of ss(e))!as.call(t,n)&&n!=="default"&&Si(t,n,{get:()=>e[n],enumerable:!(r=ls(e,n))||r.enumerable});return t},Fo=t=>fs(cs(Si(t!=null?is(os(t)):{},"default",t&&t.__esModule&&"default"in t?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t),us=Io(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});function e(c){var a=c.getBoundingClientRect();return{width:a.width,height:a.height,top:a.top,right:a.right,bottom:a.bottom,left:a.left,x:a.left,y:a.top}}function r(c){if(c==null)return window;if(c.toString()!=="[object Window]"){var a=c.ownerDocument;return a&&a.defaultView||window}return c}function n(c){var a=r(c),g=a.pageXOffset,D=a.pageYOffset;return{scrollLeft:g,scrollTop:D}}function i(c){var a=r(c).Element;return c instanceof a||c instanceof Element}function o(c){var a=r(c).HTMLElement;return c instanceof a||c instanceof HTMLElement}function l(c){if(typeof ShadowRoot>"u")return!1;var a=r(c).ShadowRoot;return c instanceof a||c instanceof ShadowRoot}function h(c){return{scrollLeft:c.scrollLeft,scrollTop:c.scrollTop}}function u(c){return c===r(c)||!o(c)?n(c):h(c)}function f(c){return c?(c.nodeName||"").toLowerCase():null}function y(c){return((i(c)?c.ownerDocument:c.document)||window.document).documentElement}function b(c){return e(y(c)).left+n(c).scrollLeft}function A(c){return r(c).getComputedStyle(c)}function E(c){var a=A(c),g=a.overflow,D=a.overflowX,T=a.overflowY;return/auto|scroll|overlay|hidden/.test(g+T+D)}function O(c,a,g){g===void 0&&(g=!1);var D=y(a),T=e(c),F=o(a),W={scrollLeft:0,scrollTop:0},j={x:0,y:0};return(F||!F&&!g)&&((f(a)!=="body"||E(D))&&(W=u(a)),o(a)?(j=e(a),j.x+=a.clientLeft,j.y+=a.clientTop):D&&(j.x=b(D))),{x:T.left+W.scrollLeft-j.x,y:T.top+W.scrollTop-j.y,width:T.width,height:T.height}}function P(c){var a=e(c),g=c.offsetWidth,D=c.offsetHeight;return Math.abs(a.width-g)<=1&&(g=a.width),Math.abs(a.height-D)<=1&&(D=a.height),{x:c.offsetLeft,y:c.offsetTop,width:g,height:D}}function R(c){return f(c)==="html"?c:c.assignedSlot||c.parentNode||(l(c)?c.host:null)||y(c)}function $(c){return["html","body","#document"].indexOf(f(c))>=0?c.ownerDocument.body:o(c)&&E(c)?c:$(R(c))}function B(c,a){var g;a===void 0&&(a=[]);var D=$(c),T=D===((g=c.ownerDocument)==null?void 0:g.body),F=r(D),W=T?[F].concat(F.visualViewport||[],E(D)?D:[]):D,j=a.concat(W);return T?j:j.concat(B(R(W)))}function K(c){return["table","td","th"].indexOf(f(c))>=0}function X(c){return!o(c)||A(c).position==="fixed"?null:c.offsetParent}function ne(c){var a=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,g=navigator.userAgent.indexOf("Trident")!==-1;if(g&&o(c)){var D=A(c);if(D.position==="fixed")return null}for(var T=R(c);o(T)&&["html","body"].indexOf(f(T))<0;){var F=A(T);if(F.transform!=="none"||F.perspective!=="none"||F.contain==="paint"||["transform","perspective"].indexOf(F.willChange)!==-1||a&&F.willChange==="filter"||a&&F.filter&&F.filter!=="none")return T;T=T.parentNode}return null}function J(c){for(var a=r(c),g=X(c);g&&K(g)&&A(g).position==="static";)g=X(g);return g&&(f(g)==="html"||f(g)==="body"&&A(g).position==="static")?a:g||ne(c)||a}var V="top",de="bottom",U="right",Z="left",me="auto",s=[V,de,U,Z],p="start",v="end",d="clippingParents",N="viewport",_="popper",M="reference",Q=s.reduce(function(c,a){return c.concat([a+"-"+p,a+"-"+v])},[]),Ue=[].concat(s,[me]).reduce(function(c,a){return c.concat([a,a+"-"+p,a+"-"+v])},[]),Rt="beforeRead",Vt="read",Lr="afterRead",Nr="beforeMain",kr="main",zt="afterMain",nr="beforeWrite",jr="write",rr="afterWrite",It=[Rt,Vt,Lr,Nr,kr,zt,nr,jr,rr];function Br(c){var a=new Map,g=new Set,D=[];c.forEach(function(F){a.set(F.name,F)});function T(F){g.add(F.name);var W=[].concat(F.requires||[],F.requiresIfExists||[]);W.forEach(function(j){if(!g.has(j)){var q=a.get(j);q&&T(q)}}),D.push(F)}return c.forEach(function(F){g.has(F.name)||T(F)}),D}function mt(c){var a=Br(c);return It.reduce(function(g,D){return g.concat(a.filter(function(T){return T.phase===D}))},[])}function Ut(c){var a;return function(){return a||(a=new Promise(function(g){Promise.resolve().then(function(){a=void 0,g(c())})})),a}}function At(c){for(var a=arguments.length,g=new Array(a>1?a-1:0),D=1;D=0,D=g&&o(c)?J(c):c;return i(D)?a.filter(function(T){return i(T)&&kn(T,D)&&f(T)!=="body"}):[]}function wn(c,a,g){var D=a==="clippingParents"?yn(c):[].concat(a),T=[].concat(D,[g]),F=T[0],W=T.reduce(function(j,q){var oe=sr(c,q);return j.top=gt(oe.top,j.top),j.right=ln(oe.right,j.right),j.bottom=ln(oe.bottom,j.bottom),j.left=gt(oe.left,j.left),j},sr(c,F));return W.width=W.right-W.left,W.height=W.bottom-W.top,W.x=W.left,W.y=W.top,W}function cn(c){return c.split("-")[1]}function dt(c){return["top","bottom"].indexOf(c)>=0?"x":"y"}function lr(c){var a=c.reference,g=c.element,D=c.placement,T=D?ot(D):null,F=D?cn(D):null,W=a.x+a.width/2-g.width/2,j=a.y+a.height/2-g.height/2,q;switch(T){case V:q={x:W,y:a.y-g.height};break;case de:q={x:W,y:a.y+a.height};break;case U:q={x:a.x+a.width,y:j};break;case Z:q={x:a.x-g.width,y:j};break;default:q={x:a.x,y:a.y}}var oe=T?dt(T):null;if(oe!=null){var z=oe==="y"?"height":"width";switch(F){case p:q[oe]=q[oe]-(a[z]/2-g[z]/2);break;case v:q[oe]=q[oe]+(a[z]/2-g[z]/2);break}}return q}function cr(){return{top:0,right:0,bottom:0,left:0}}function fr(c){return Object.assign({},cr(),c)}function ur(c,a){return a.reduce(function(g,D){return g[D]=c,g},{})}function qt(c,a){a===void 0&&(a={});var g=a,D=g.placement,T=D===void 0?c.placement:D,F=g.boundary,W=F===void 0?d:F,j=g.rootBoundary,q=j===void 0?N:j,oe=g.elementContext,z=oe===void 0?_:oe,De=g.altBoundary,Le=De===void 0?!1:De,Ae=g.padding,xe=Ae===void 0?0:Ae,Me=fr(typeof xe!="number"?xe:ur(xe,s)),Ee=z===_?M:_,Be=c.elements.reference,Re=c.rects.popper,He=c.elements[Le?Ee:z],ce=wn(i(He)?He:He.contextElement||y(c.elements.popper),W,q),Pe=e(Be),Te=lr({reference:Pe,element:Re,strategy:"absolute",placement:T}),Ne=Xt(Object.assign({},Re,Te)),Fe=z===_?Ne:Pe,Ye={top:ce.top-Fe.top+Me.top,bottom:Fe.bottom-ce.bottom+Me.bottom,left:ce.left-Fe.left+Me.left,right:Fe.right-ce.right+Me.right},$e=c.modifiersData.offset;if(z===_&&$e){var Ve=$e[T];Object.keys(Ye).forEach(function(wt){var et=[U,de].indexOf(wt)>=0?1:-1,Lt=[V,de].indexOf(wt)>=0?"y":"x";Ye[wt]+=Ve[Lt]*et})}return Ye}var dr="Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.",zr="Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.",xn={placement:"bottom",modifiers:[],strategy:"absolute"};function fn(){for(var c=arguments.length,a=new Array(c),g=0;g100){console.error(zr);break}if(z.reset===!0){z.reset=!1,Pe=-1;continue}var Te=z.orderedModifiers[Pe],Ne=Te.fn,Fe=Te.options,Ye=Fe===void 0?{}:Fe,$e=Te.name;typeof Ne=="function"&&(z=Ne({state:z,options:Ye,name:$e,instance:Ae})||z)}}},update:Ut(function(){return new Promise(function(Ee){Ae.forceUpdate(),Ee(z)})}),destroy:function(){Me(),Le=!0}};if(!fn(j,q))return console.error(dr),Ae;Ae.setOptions(oe).then(function(Ee){!Le&&oe.onFirstUpdate&&oe.onFirstUpdate(Ee)});function xe(){z.orderedModifiers.forEach(function(Ee){var Be=Ee.name,Re=Ee.options,He=Re===void 0?{}:Re,ce=Ee.effect;if(typeof ce=="function"){var Pe=ce({state:z,name:Be,instance:Ae,options:He}),Te=function(){};De.push(Pe||Te)}})}function Me(){De.forEach(function(Ee){return Ee()}),De=[]}return Ae}}var On={passive:!0};function Ur(c){var a=c.state,g=c.instance,D=c.options,T=D.scroll,F=T===void 0?!0:T,W=D.resize,j=W===void 0?!0:W,q=r(a.elements.popper),oe=[].concat(a.scrollParents.reference,a.scrollParents.popper);return F&&oe.forEach(function(z){z.addEventListener("scroll",g.update,On)}),j&&q.addEventListener("resize",g.update,On),function(){F&&oe.forEach(function(z){z.removeEventListener("scroll",g.update,On)}),j&&q.removeEventListener("resize",g.update,On)}}var jn={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Ur,data:{}};function Yr(c){var a=c.state,g=c.name;a.modifiersData[g]=lr({reference:a.rects.reference,element:a.rects.popper,strategy:"absolute",placement:a.placement})}var Bn={name:"popperOffsets",enabled:!0,phase:"read",fn:Yr,data:{}},Xr={top:"auto",right:"auto",bottom:"auto",left:"auto"};function qr(c){var a=c.x,g=c.y,D=window,T=D.devicePixelRatio||1;return{x:Yt(Yt(a*T)/T)||0,y:Yt(Yt(g*T)/T)||0}}function Hn(c){var a,g=c.popper,D=c.popperRect,T=c.placement,F=c.offsets,W=c.position,j=c.gpuAcceleration,q=c.adaptive,oe=c.roundOffsets,z=oe===!0?qr(F):typeof oe=="function"?oe(F):F,De=z.x,Le=De===void 0?0:De,Ae=z.y,xe=Ae===void 0?0:Ae,Me=F.hasOwnProperty("x"),Ee=F.hasOwnProperty("y"),Be=Z,Re=V,He=window;if(q){var ce=J(g),Pe="clientHeight",Te="clientWidth";ce===r(g)&&(ce=y(g),A(ce).position!=="static"&&(Pe="scrollHeight",Te="scrollWidth")),ce=ce,T===V&&(Re=de,xe-=ce[Pe]-D.height,xe*=j?1:-1),T===Z&&(Be=U,Le-=ce[Te]-D.width,Le*=j?1:-1)}var Ne=Object.assign({position:W},q&&Xr);if(j){var Fe;return Object.assign({},Ne,(Fe={},Fe[Re]=Ee?"0":"",Fe[Be]=Me?"0":"",Fe.transform=(He.devicePixelRatio||1)<2?"translate("+Le+"px, "+xe+"px)":"translate3d("+Le+"px, "+xe+"px, 0)",Fe))}return Object.assign({},Ne,(a={},a[Re]=Ee?xe+"px":"",a[Be]=Me?Le+"px":"",a.transform="",a))}function m(c){var a=c.state,g=c.options,D=g.gpuAcceleration,T=D===void 0?!0:D,F=g.adaptive,W=F===void 0?!0:F,j=g.roundOffsets,q=j===void 0?!0:j,oe=A(a.elements.popper).transitionProperty||"";W&&["transform","top","right","bottom","left"].some(function(De){return oe.indexOf(De)>=0})&&console.warn(["Popper: Detected CSS transitions on at least one of the following",'CSS properties: "transform", "top", "right", "bottom", "left".',` + +`,'Disable the "computeStyles" modifier\'s `adaptive` option to allow',"for smooth transitions, or remove these properties from the CSS","transition declaration on the popper element if only transitioning","opacity or background-color for example.",` + +`,"We recommend using the popper element as a wrapper around an inner","element that can have any CSS property transitioned for animations."].join(" "));var z={placement:ot(a.placement),popper:a.elements.popper,popperRect:a.rects.popper,gpuAcceleration:T};a.modifiersData.popperOffsets!=null&&(a.styles.popper=Object.assign({},a.styles.popper,Hn(Object.assign({},z,{offsets:a.modifiersData.popperOffsets,position:a.options.strategy,adaptive:W,roundOffsets:q})))),a.modifiersData.arrow!=null&&(a.styles.arrow=Object.assign({},a.styles.arrow,Hn(Object.assign({},z,{offsets:a.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:q})))),a.attributes.popper=Object.assign({},a.attributes.popper,{"data-popper-placement":a.placement})}var w={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:m,data:{}};function S(c){var a=c.state;Object.keys(a.elements).forEach(function(g){var D=a.styles[g]||{},T=a.attributes[g]||{},F=a.elements[g];!o(F)||!f(F)||(Object.assign(F.style,D),Object.keys(T).forEach(function(W){var j=T[W];j===!1?F.removeAttribute(W):F.setAttribute(W,j===!0?"":j)}))})}function I(c){var a=c.state,g={popper:{position:a.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(a.elements.popper.style,g.popper),a.styles=g,a.elements.arrow&&Object.assign(a.elements.arrow.style,g.arrow),function(){Object.keys(a.elements).forEach(function(D){var T=a.elements[D],F=a.attributes[D]||{},W=Object.keys(a.styles.hasOwnProperty(D)?a.styles[D]:g[D]),j=W.reduce(function(q,oe){return q[oe]="",q},{});!o(T)||!f(T)||(Object.assign(T.style,j),Object.keys(F).forEach(function(q){T.removeAttribute(q)}))})}}var Y={name:"applyStyles",enabled:!0,phase:"write",fn:S,effect:I,requires:["computeStyles"]};function H(c,a,g){var D=ot(c),T=[Z,V].indexOf(D)>=0?-1:1,F=typeof g=="function"?g(Object.assign({},a,{placement:c})):g,W=F[0],j=F[1];return W=W||0,j=(j||0)*T,[Z,U].indexOf(D)>=0?{x:j,y:W}:{x:W,y:j}}function k(c){var a=c.state,g=c.options,D=c.name,T=g.offset,F=T===void 0?[0,0]:T,W=Ue.reduce(function(z,De){return z[De]=H(De,a.rects,F),z},{}),j=W[a.placement],q=j.x,oe=j.y;a.modifiersData.popperOffsets!=null&&(a.modifiersData.popperOffsets.x+=q,a.modifiersData.popperOffsets.y+=oe),a.modifiersData[D]=W}var be={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:k},le={left:"right",right:"left",bottom:"top",top:"bottom"};function pe(c){return c.replace(/left|right|bottom|top/g,function(a){return le[a]})}var ye={start:"end",end:"start"};function _e(c){return c.replace(/start|end/g,function(a){return ye[a]})}function je(c,a){a===void 0&&(a={});var g=a,D=g.placement,T=g.boundary,F=g.rootBoundary,W=g.padding,j=g.flipVariations,q=g.allowedAutoPlacements,oe=q===void 0?Ue:q,z=cn(D),De=z?j?Q:Q.filter(function(xe){return cn(xe)===z}):s,Le=De.filter(function(xe){return oe.indexOf(xe)>=0});Le.length===0&&(Le=De,console.error(["Popper: The `allowedAutoPlacements` option did not allow any","placements. Ensure the `placement` option matches the variation","of the allowed placements.",'For example, "auto" cannot be used to allow "bottom-start".','Use "auto-start" instead.'].join(" ")));var Ae=Le.reduce(function(xe,Me){return xe[Me]=qt(c,{placement:Me,boundary:T,rootBoundary:F,padding:W})[ot(Me)],xe},{});return Object.keys(Ae).sort(function(xe,Me){return Ae[xe]-Ae[Me]})}function Se(c){if(ot(c)===me)return[];var a=pe(c);return[_e(c),a,_e(a)]}function Ie(c){var a=c.state,g=c.options,D=c.name;if(!a.modifiersData[D]._skip){for(var T=g.mainAxis,F=T===void 0?!0:T,W=g.altAxis,j=W===void 0?!0:W,q=g.fallbackPlacements,oe=g.padding,z=g.boundary,De=g.rootBoundary,Le=g.altBoundary,Ae=g.flipVariations,xe=Ae===void 0?!0:Ae,Me=g.allowedAutoPlacements,Ee=a.options.placement,Be=ot(Ee),Re=Be===Ee,He=q||(Re||!xe?[pe(Ee)]:Se(Ee)),ce=[Ee].concat(He).reduce(function(te,ge){return te.concat(ot(ge)===me?je(a,{placement:ge,boundary:z,rootBoundary:De,padding:oe,flipVariations:xe,allowedAutoPlacements:Me}):ge)},[]),Pe=a.rects.reference,Te=a.rects.popper,Ne=new Map,Fe=!0,Ye=ce[0],$e=0;$e=0,dn=Lt?"width":"height",Zt=qt(a,{placement:Ve,boundary:z,rootBoundary:De,altBoundary:Le,padding:oe}),Nt=Lt?et?U:Z:et?de:V;Pe[dn]>Te[dn]&&(Nt=pe(Nt));var $n=pe(Nt),Qt=[];if(F&&Qt.push(Zt[wt]<=0),j&&Qt.push(Zt[Nt]<=0,Zt[$n]<=0),Qt.every(function(te){return te})){Ye=Ve,Fe=!1;break}Ne.set(Ve,Qt)}if(Fe)for(var Sn=xe?3:1,Wn=function(ge){var we=ce.find(function(Ke){var Je=Ne.get(Ke);if(Je)return Je.slice(0,ge).every(function(Dt){return Dt})});if(we)return Ye=we,"break"},C=Sn;C>0;C--){var G=Wn(C);if(G==="break")break}a.placement!==Ye&&(a.modifiersData[D]._skip=!0,a.placement=Ye,a.reset=!0)}}var re={name:"flip",enabled:!0,phase:"main",fn:Ie,requiresIfExists:["offset"],data:{_skip:!1}};function he(c){return c==="x"?"y":"x"}function ve(c,a,g){return gt(c,ln(a,g))}function ee(c){var a=c.state,g=c.options,D=c.name,T=g.mainAxis,F=T===void 0?!0:T,W=g.altAxis,j=W===void 0?!1:W,q=g.boundary,oe=g.rootBoundary,z=g.altBoundary,De=g.padding,Le=g.tether,Ae=Le===void 0?!0:Le,xe=g.tetherOffset,Me=xe===void 0?0:xe,Ee=qt(a,{boundary:q,rootBoundary:oe,padding:De,altBoundary:z}),Be=ot(a.placement),Re=cn(a.placement),He=!Re,ce=dt(Be),Pe=he(ce),Te=a.modifiersData.popperOffsets,Ne=a.rects.reference,Fe=a.rects.popper,Ye=typeof Me=="function"?Me(Object.assign({},a.rects,{placement:a.placement})):Me,$e={x:0,y:0};if(Te){if(F||j){var Ve=ce==="y"?V:Z,wt=ce==="y"?de:U,et=ce==="y"?"height":"width",Lt=Te[ce],dn=Te[ce]+Ee[Ve],Zt=Te[ce]-Ee[wt],Nt=Ae?-Fe[et]/2:0,$n=Re===p?Ne[et]:Fe[et],Qt=Re===p?-Fe[et]:-Ne[et],Sn=a.elements.arrow,Wn=Ae&&Sn?P(Sn):{width:0,height:0},C=a.modifiersData["arrow#persistent"]?a.modifiersData["arrow#persistent"].padding:cr(),G=C[Ve],te=C[wt],ge=ve(0,Ne[et],Wn[et]),we=He?Ne[et]/2-Nt-ge-G-Ye:$n-ge-G-Ye,Ke=He?-Ne[et]/2+Nt+ge+te+Ye:Qt+ge+te+Ye,Je=a.elements.arrow&&J(a.elements.arrow),Dt=Je?ce==="y"?Je.clientTop||0:Je.clientLeft||0:0,Vn=a.modifiersData.offset?a.modifiersData.offset[a.placement][ce]:0,Tt=Te[ce]+we-Vn-Dt,An=Te[ce]+Ke-Vn;if(F){var pn=ve(Ae?ln(dn,Tt):dn,Lt,Ae?gt(Zt,An):Zt);Te[ce]=pn,$e[ce]=pn-Lt}if(j){var en=ce==="x"?V:Z,Gr=ce==="x"?de:U,tn=Te[Pe],hn=tn+Ee[en],Ai=tn-Ee[Gr],Ci=ve(Ae?ln(hn,Tt):hn,tn,Ae?gt(Ai,An):Ai);Te[Pe]=Ci,$e[Pe]=Ci-tn}}a.modifiersData[D]=$e}}var ie={name:"preventOverflow",enabled:!0,phase:"main",fn:ee,requiresIfExists:["offset"]},x=function(a,g){return a=typeof a=="function"?a(Object.assign({},g.rects,{placement:g.placement})):a,fr(typeof a!="number"?a:ur(a,s))};function Ge(c){var a,g=c.state,D=c.name,T=c.options,F=g.elements.arrow,W=g.modifiersData.popperOffsets,j=ot(g.placement),q=dt(j),oe=[Z,U].indexOf(j)>=0,z=oe?"height":"width";if(!(!F||!W)){var De=x(T.padding,g),Le=P(F),Ae=q==="y"?V:Z,xe=q==="y"?de:U,Me=g.rects.reference[z]+g.rects.reference[q]-W[q]-g.rects.popper[z],Ee=W[q]-g.rects.reference[q],Be=J(F),Re=Be?q==="y"?Be.clientHeight||0:Be.clientWidth||0:0,He=Me/2-Ee/2,ce=De[Ae],Pe=Re-Le[z]-De[xe],Te=Re/2-Le[z]/2+He,Ne=ve(ce,Te,Pe),Fe=q;g.modifiersData[D]=(a={},a[Fe]=Ne,a.centerOffset=Ne-Te,a)}}function fe(c){var a=c.state,g=c.options,D=g.element,T=D===void 0?"[data-popper-arrow]":D;if(T!=null&&!(typeof T=="string"&&(T=a.elements.popper.querySelector(T),!T))){if(o(T)||console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).',"To use an SVG arrow, wrap it in an HTMLElement that will be used as","the arrow."].join(" ")),!kn(a.elements.popper,T)){console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper',"element."].join(" "));return}a.elements.arrow=T}}var Ft={name:"arrow",enabled:!0,phase:"main",fn:Ge,effect:fe,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function bt(c,a,g){return g===void 0&&(g={x:0,y:0}),{top:c.top-a.height-g.y,right:c.right-a.width+g.x,bottom:c.bottom-a.height+g.y,left:c.left-a.width-g.x}}function Gt(c){return[V,U,de,Z].some(function(a){return c[a]>=0})}function Kt(c){var a=c.state,g=c.name,D=a.rects.reference,T=a.rects.popper,F=a.modifiersData.preventOverflow,W=qt(a,{elementContext:"reference"}),j=qt(a,{altBoundary:!0}),q=bt(W,D),oe=bt(j,T,F),z=Gt(q),De=Gt(oe);a.modifiersData[g]={referenceClippingOffsets:q,popperEscapeOffsets:oe,isReferenceHidden:z,hasPopperEscaped:De},a.attributes.popper=Object.assign({},a.attributes.popper,{"data-popper-reference-hidden":z,"data-popper-escaped":De})}var Jt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Kt},rt=[jn,Bn,w,Y],st=En({defaultModifiers:rt}),yt=[jn,Bn,w,Y,be,re,ie,Ft,Jt],un=En({defaultModifiers:yt});t.applyStyles=Y,t.arrow=Ft,t.computeStyles=w,t.createPopper=un,t.createPopperLite=st,t.defaultModifiers=yt,t.detectOverflow=qt,t.eventListeners=jn,t.flip=re,t.hide=Jt,t.offset=be,t.popperGenerator=En,t.popperOffsets=Bn,t.preventOverflow=ie}),Lo=Io(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var e=us(),r='',n="tippy-box",i="tippy-content",o="tippy-backdrop",l="tippy-arrow",h="tippy-svg-arrow",u={passive:!0,capture:!0};function f(m,w){return{}.hasOwnProperty.call(m,w)}function y(m,w,S){if(Array.isArray(m)){var I=m[w];return I??(Array.isArray(S)?S[w]:S)}return m}function b(m,w){var S={}.toString.call(m);return S.indexOf("[object")===0&&S.indexOf(w+"]")>-1}function A(m,w){return typeof m=="function"?m.apply(void 0,w):m}function E(m,w){if(w===0)return m;var S;return function(I){clearTimeout(S),S=setTimeout(function(){m(I)},w)}}function O(m,w){var S=Object.assign({},m);return w.forEach(function(I){delete S[I]}),S}function P(m){return m.split(/\s+/).filter(Boolean)}function R(m){return[].concat(m)}function $(m,w){m.indexOf(w)===-1&&m.push(w)}function B(m){return m.filter(function(w,S){return m.indexOf(w)===S})}function K(m){return m.split("-")[0]}function X(m){return[].slice.call(m)}function ne(m){return Object.keys(m).reduce(function(w,S){return m[S]!==void 0&&(w[S]=m[S]),w},{})}function J(){return document.createElement("div")}function V(m){return["Element","Fragment"].some(function(w){return b(m,w)})}function de(m){return b(m,"NodeList")}function U(m){return b(m,"MouseEvent")}function Z(m){return!!(m&&m._tippy&&m._tippy.reference===m)}function me(m){return V(m)?[m]:de(m)?X(m):Array.isArray(m)?m:X(document.querySelectorAll(m))}function s(m,w){m.forEach(function(S){S&&(S.style.transitionDuration=w+"ms")})}function p(m,w){m.forEach(function(S){S&&S.setAttribute("data-state",w)})}function v(m){var w,S=R(m),I=S[0];return!(I==null||(w=I.ownerDocument)==null)&&w.body?I.ownerDocument:document}function d(m,w){var S=w.clientX,I=w.clientY;return m.every(function(Y){var H=Y.popperRect,k=Y.popperState,be=Y.props,le=be.interactiveBorder,pe=K(k.placement),ye=k.modifiersData.offset;if(!ye)return!0;var _e=pe==="bottom"?ye.top.y:0,je=pe==="top"?ye.bottom.y:0,Se=pe==="right"?ye.left.x:0,Ie=pe==="left"?ye.right.x:0,re=H.top-I+_e>le,he=I-H.bottom-je>le,ve=H.left-S+Se>le,ee=S-H.right-Ie>le;return re||he||ve||ee})}function N(m,w,S){var I=w+"EventListener";["transitionend","webkitTransitionEnd"].forEach(function(Y){m[I](Y,S)})}var _={isTouch:!1},M=0;function Q(){_.isTouch||(_.isTouch=!0,window.performance&&document.addEventListener("mousemove",Ue))}function Ue(){var m=performance.now();m-M<20&&(_.isTouch=!1,document.removeEventListener("mousemove",Ue)),M=m}function Rt(){var m=document.activeElement;if(Z(m)){var w=m._tippy;m.blur&&!w.state.isVisible&&m.blur()}}function Vt(){document.addEventListener("touchstart",Q,u),window.addEventListener("blur",Rt)}var Lr=typeof window<"u"&&typeof document<"u",Nr=Lr?navigator.userAgent:"",kr=/MSIE |Trident\//.test(Nr);function zt(m){var w=m==="destroy"?"n already-":" ";return[m+"() was called on a"+w+"destroyed instance. This is a no-op but","indicates a potential memory leak."].join(" ")}function nr(m){var w=/[ \t]{2,}/g,S=/^[ \t]*/gm;return m.replace(w," ").replace(S,"").trim()}function jr(m){return nr(` + %ctippy.js + + %c`+nr(m)+` + + %c\u{1F477}\u200D This is a development-only message. It will be removed in production. + `)}function rr(m){return[jr(m),"color: #00C584; font-size: 1.3em; font-weight: bold;","line-height: 1.5","color: #a6a095;"]}var It;Br();function Br(){It=new Set}function mt(m,w){if(m&&!It.has(w)){var S;It.add(w),(S=console).warn.apply(S,rr(w))}}function Ut(m,w){if(m&&!It.has(w)){var S;It.add(w),(S=console).error.apply(S,rr(w))}}function At(m){var w=!m,S=Object.prototype.toString.call(m)==="[object Object]"&&!m.addEventListener;Ut(w,["tippy() was passed","`"+String(m)+"`","as its targets (first) argument. Valid types are: String, Element,","Element[], or NodeList."].join(" ")),Ut(S,["tippy() was passed a plain object which is not supported as an argument","for virtual positioning. Use props.getReferenceClientRect instead."].join(" "))}var Ct={animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},Hr={allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999},Qe=Object.assign({appendTo:function(){return document.body},aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},Ct,{},Hr),$r=Object.keys(Qe),Wr=function(w){gt(w,[]);var S=Object.keys(w);S.forEach(function(I){Qe[I]=w[I]})};function ot(m){var w=m.plugins||[],S=w.reduce(function(I,Y){var H=Y.name,k=Y.defaultValue;return H&&(I[H]=m[H]!==void 0?m[H]:k),I},{});return Object.assign({},m,{},S)}function Vr(m,w){var S=w?Object.keys(ot(Object.assign({},Qe,{plugins:w}))):$r,I=S.reduce(function(Y,H){var k=(m.getAttribute("data-tippy-"+H)||"").trim();if(!k)return Y;if(H==="content")Y[H]=k;else try{Y[H]=JSON.parse(k)}catch{Y[H]=k}return Y},{});return I}function ir(m,w){var S=Object.assign({},w,{content:A(w.content,[m])},w.ignoreAttributes?{}:Vr(m,w.plugins));return S.aria=Object.assign({},Qe.aria,{},S.aria),S.aria={expanded:S.aria.expanded==="auto"?w.interactive:S.aria.expanded,content:S.aria.content==="auto"?w.interactive?null:"describedby":S.aria.content},S}function gt(m,w){m===void 0&&(m={}),w===void 0&&(w=[]);var S=Object.keys(m);S.forEach(function(I){var Y=O(Qe,Object.keys(Ct)),H=!f(Y,I);H&&(H=w.filter(function(k){return k.name===I}).length===0),mt(H,["`"+I+"`","is not a valid prop. You may have spelled it incorrectly, or if it's","a plugin, forgot to pass it in an array as props.plugins.",` + +`,`All props: https://atomiks.github.io/tippyjs/v6/all-props/ +`,"Plugins: https://atomiks.github.io/tippyjs/v6/plugins/"].join(" "))})}var ln=function(){return"innerHTML"};function Yt(m,w){m[ln()]=w}function or(m){var w=J();return m===!0?w.className=l:(w.className=h,V(m)?w.appendChild(m):Yt(w,m)),w}function kn(m,w){V(w.content)?(Yt(m,""),m.appendChild(w.content)):typeof w.content!="function"&&(w.allowHTML?Yt(m,w.content):m.textContent=w.content)}function Xt(m){var w=m.firstElementChild,S=X(w.children);return{box:w,content:S.find(function(I){return I.classList.contains(i)}),arrow:S.find(function(I){return I.classList.contains(l)||I.classList.contains(h)}),backdrop:S.find(function(I){return I.classList.contains(o)})}}function ar(m){var w=J(),S=J();S.className=n,S.setAttribute("data-state","hidden"),S.setAttribute("tabindex","-1");var I=J();I.className=i,I.setAttribute("data-state","hidden"),kn(I,m.props),w.appendChild(S),S.appendChild(I),Y(m.props,m.props);function Y(H,k){var be=Xt(w),le=be.box,pe=be.content,ye=be.arrow;k.theme?le.setAttribute("data-theme",k.theme):le.removeAttribute("data-theme"),typeof k.animation=="string"?le.setAttribute("data-animation",k.animation):le.removeAttribute("data-animation"),k.inertia?le.setAttribute("data-inertia",""):le.removeAttribute("data-inertia"),le.style.maxWidth=typeof k.maxWidth=="number"?k.maxWidth+"px":k.maxWidth,k.role?le.setAttribute("role",k.role):le.removeAttribute("role"),(H.content!==k.content||H.allowHTML!==k.allowHTML)&&kn(pe,m.props),k.arrow?ye?H.arrow!==k.arrow&&(le.removeChild(ye),le.appendChild(or(k.arrow))):le.appendChild(or(k.arrow)):ye&&le.removeChild(ye)}return{popper:w,onUpdate:Y}}ar.$$tippy=!0;var sr=1,yn=[],wn=[];function cn(m,w){var S=ir(m,Object.assign({},Qe,{},ot(ne(w)))),I,Y,H,k=!1,be=!1,le=!1,pe=!1,ye,_e,je,Se=[],Ie=E(Re,S.interactiveDebounce),re,he=sr++,ve=null,ee=B(S.plugins),ie={isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},x={id:he,reference:m,popper:J(),popperInstance:ve,props:S,state:ie,plugins:ee,clearDelayTimeouts:Lt,setProps:dn,setContent:Zt,show:Nt,hide:$n,hideWithInteractivity:Qt,enable:wt,disable:et,unmount:Sn,destroy:Wn};if(!S.render)return Ut(!0,"render() function has not been supplied."),x;var Ge=S.render(x),fe=Ge.popper,Ft=Ge.onUpdate;fe.setAttribute("data-tippy-root",""),fe.id="tippy-"+x.id,x.popper=fe,m._tippy=x,fe._tippy=x;var bt=ee.map(function(C){return C.fn(x)}),Gt=m.hasAttribute("aria-expanded");return Me(),T(),a(),g("onCreate",[x]),S.showOnCreate&&$e(),fe.addEventListener("mouseenter",function(){x.props.interactive&&x.state.isVisible&&x.clearDelayTimeouts()}),fe.addEventListener("mouseleave",function(C){x.props.interactive&&x.props.trigger.indexOf("mouseenter")>=0&&(yt().addEventListener("mousemove",Ie),Ie(C))}),x;function Kt(){var C=x.props.touch;return Array.isArray(C)?C:[C,0]}function Jt(){return Kt()[0]==="hold"}function rt(){var C;return!!((C=x.props.render)!=null&&C.$$tippy)}function st(){return re||m}function yt(){var C=st().parentNode;return C?v(C):document}function un(){return Xt(fe)}function c(C){return x.state.isMounted&&!x.state.isVisible||_.isTouch||ye&&ye.type==="focus"?0:y(x.props.delay,C?0:1,Qe.delay)}function a(){fe.style.pointerEvents=x.props.interactive&&x.state.isVisible?"":"none",fe.style.zIndex=""+x.props.zIndex}function g(C,G,te){if(te===void 0&&(te=!0),bt.forEach(function(we){we[C]&&we[C].apply(void 0,G)}),te){var ge;(ge=x.props)[C].apply(ge,G)}}function D(){var C=x.props.aria;if(C.content){var G="aria-"+C.content,te=fe.id,ge=R(x.props.triggerTarget||m);ge.forEach(function(we){var Ke=we.getAttribute(G);if(x.state.isVisible)we.setAttribute(G,Ke?Ke+" "+te:te);else{var Je=Ke&&Ke.replace(te,"").trim();Je?we.setAttribute(G,Je):we.removeAttribute(G)}})}}function T(){if(!(Gt||!x.props.aria.expanded)){var C=R(x.props.triggerTarget||m);C.forEach(function(G){x.props.interactive?G.setAttribute("aria-expanded",x.state.isVisible&&G===st()?"true":"false"):G.removeAttribute("aria-expanded")})}}function F(){yt().removeEventListener("mousemove",Ie),yn=yn.filter(function(C){return C!==Ie})}function W(C){if(!(_.isTouch&&(le||C.type==="mousedown"))&&!(x.props.interactive&&fe.contains(C.target))){if(st().contains(C.target)){if(_.isTouch||x.state.isVisible&&x.props.trigger.indexOf("click")>=0)return}else g("onClickOutside",[x,C]);x.props.hideOnClick===!0&&(x.clearDelayTimeouts(),x.hide(),be=!0,setTimeout(function(){be=!1}),x.state.isMounted||z())}}function j(){le=!0}function q(){le=!1}function oe(){var C=yt();C.addEventListener("mousedown",W,!0),C.addEventListener("touchend",W,u),C.addEventListener("touchstart",q,u),C.addEventListener("touchmove",j,u)}function z(){var C=yt();C.removeEventListener("mousedown",W,!0),C.removeEventListener("touchend",W,u),C.removeEventListener("touchstart",q,u),C.removeEventListener("touchmove",j,u)}function De(C,G){Ae(C,function(){!x.state.isVisible&&fe.parentNode&&fe.parentNode.contains(fe)&&G()})}function Le(C,G){Ae(C,G)}function Ae(C,G){var te=un().box;function ge(we){we.target===te&&(N(te,"remove",ge),G())}if(C===0)return G();N(te,"remove",_e),N(te,"add",ge),_e=ge}function xe(C,G,te){te===void 0&&(te=!1);var ge=R(x.props.triggerTarget||m);ge.forEach(function(we){we.addEventListener(C,G,te),Se.push({node:we,eventType:C,handler:G,options:te})})}function Me(){Jt()&&(xe("touchstart",Be,{passive:!0}),xe("touchend",He,{passive:!0})),P(x.props.trigger).forEach(function(C){if(C!=="manual")switch(xe(C,Be),C){case"mouseenter":xe("mouseleave",He);break;case"focus":xe(kr?"focusout":"blur",ce);break;case"focusin":xe("focusout",ce);break}})}function Ee(){Se.forEach(function(C){var G=C.node,te=C.eventType,ge=C.handler,we=C.options;G.removeEventListener(te,ge,we)}),Se=[]}function Be(C){var G,te=!1;if(!(!x.state.isEnabled||Pe(C)||be)){var ge=((G=ye)==null?void 0:G.type)==="focus";ye=C,re=C.currentTarget,T(),!x.state.isVisible&&U(C)&&yn.forEach(function(we){return we(C)}),C.type==="click"&&(x.props.trigger.indexOf("mouseenter")<0||k)&&x.props.hideOnClick!==!1&&x.state.isVisible?te=!0:$e(C),C.type==="click"&&(k=!te),te&&!ge&&Ve(C)}}function Re(C){var G=C.target,te=st().contains(G)||fe.contains(G);if(!(C.type==="mousemove"&&te)){var ge=Ye().concat(fe).map(function(we){var Ke,Je=we._tippy,Dt=(Ke=Je.popperInstance)==null?void 0:Ke.state;return Dt?{popperRect:we.getBoundingClientRect(),popperState:Dt,props:S}:null}).filter(Boolean);d(ge,C)&&(F(),Ve(C))}}function He(C){var G=Pe(C)||x.props.trigger.indexOf("click")>=0&&k;if(!G){if(x.props.interactive){x.hideWithInteractivity(C);return}Ve(C)}}function ce(C){x.props.trigger.indexOf("focusin")<0&&C.target!==st()||x.props.interactive&&C.relatedTarget&&fe.contains(C.relatedTarget)||Ve(C)}function Pe(C){return _.isTouch?Jt()!==C.type.indexOf("touch")>=0:!1}function Te(){Ne();var C=x.props,G=C.popperOptions,te=C.placement,ge=C.offset,we=C.getReferenceClientRect,Ke=C.moveTransition,Je=rt()?Xt(fe).arrow:null,Dt=we?{getBoundingClientRect:we,contextElement:we.contextElement||st()}:m,Vn={name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(pn){var en=pn.state;if(rt()){var Gr=un(),tn=Gr.box;["placement","reference-hidden","escaped"].forEach(function(hn){hn==="placement"?tn.setAttribute("data-placement",en.placement):en.attributes.popper["data-popper-"+hn]?tn.setAttribute("data-"+hn,""):tn.removeAttribute("data-"+hn)}),en.attributes.popper={}}}},Tt=[{name:"offset",options:{offset:ge}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!Ke}},Vn];rt()&&Je&&Tt.push({name:"arrow",options:{element:Je,padding:3}}),Tt.push.apply(Tt,G?.modifiers||[]),x.popperInstance=e.createPopper(Dt,fe,Object.assign({},G,{placement:te,onFirstUpdate:je,modifiers:Tt}))}function Ne(){x.popperInstance&&(x.popperInstance.destroy(),x.popperInstance=null)}function Fe(){var C=x.props.appendTo,G,te=st();x.props.interactive&&C===Qe.appendTo||C==="parent"?G=te.parentNode:G=A(C,[te]),G.contains(fe)||G.appendChild(fe),Te(),mt(x.props.interactive&&C===Qe.appendTo&&te.nextElementSibling!==fe,["Interactive tippy element may not be accessible via keyboard","navigation because it is not directly after the reference element","in the DOM source order.",` + +`,"Using a wrapper
or tag around the reference element","solves this by creating a new parentNode context.",` + +`,"Specifying `appendTo: document.body` silences this warning, but it","assumes you are using a focus management solution to handle","keyboard navigation.",` + +`,"See: https://atomiks.github.io/tippyjs/v6/accessibility/#interactivity"].join(" "))}function Ye(){return X(fe.querySelectorAll("[data-tippy-root]"))}function $e(C){x.clearDelayTimeouts(),C&&g("onTrigger",[x,C]),oe();var G=c(!0),te=Kt(),ge=te[0],we=te[1];_.isTouch&&ge==="hold"&&we&&(G=we),G?I=setTimeout(function(){x.show()},G):x.show()}function Ve(C){if(x.clearDelayTimeouts(),g("onUntrigger",[x,C]),!x.state.isVisible){z();return}if(!(x.props.trigger.indexOf("mouseenter")>=0&&x.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(C.type)>=0&&k)){var G=c(!1);G?Y=setTimeout(function(){x.state.isVisible&&x.hide()},G):H=requestAnimationFrame(function(){x.hide()})}}function wt(){x.state.isEnabled=!0}function et(){x.hide(),x.state.isEnabled=!1}function Lt(){clearTimeout(I),clearTimeout(Y),cancelAnimationFrame(H)}function dn(C){if(mt(x.state.isDestroyed,zt("setProps")),!x.state.isDestroyed){g("onBeforeUpdate",[x,C]),Ee();var G=x.props,te=ir(m,Object.assign({},x.props,{},C,{ignoreAttributes:!0}));x.props=te,Me(),G.interactiveDebounce!==te.interactiveDebounce&&(F(),Ie=E(Re,te.interactiveDebounce)),G.triggerTarget&&!te.triggerTarget?R(G.triggerTarget).forEach(function(ge){ge.removeAttribute("aria-expanded")}):te.triggerTarget&&m.removeAttribute("aria-expanded"),T(),a(),Ft&&Ft(G,te),x.popperInstance&&(Te(),Ye().forEach(function(ge){requestAnimationFrame(ge._tippy.popperInstance.forceUpdate)})),g("onAfterUpdate",[x,C])}}function Zt(C){x.setProps({content:C})}function Nt(){mt(x.state.isDestroyed,zt("show"));var C=x.state.isVisible,G=x.state.isDestroyed,te=!x.state.isEnabled,ge=_.isTouch&&!x.props.touch,we=y(x.props.duration,0,Qe.duration);if(!(C||G||te||ge)&&!st().hasAttribute("disabled")&&(g("onShow",[x],!1),x.props.onShow(x)!==!1)){if(x.state.isVisible=!0,rt()&&(fe.style.visibility="visible"),a(),oe(),x.state.isMounted||(fe.style.transition="none"),rt()){var Ke=un(),Je=Ke.box,Dt=Ke.content;s([Je,Dt],0)}je=function(){var Tt;if(!(!x.state.isVisible||pe)){if(pe=!0,fe.offsetHeight,fe.style.transition=x.props.moveTransition,rt()&&x.props.animation){var An=un(),pn=An.box,en=An.content;s([pn,en],we),p([pn,en],"visible")}D(),T(),$(wn,x),(Tt=x.popperInstance)==null||Tt.forceUpdate(),x.state.isMounted=!0,g("onMount",[x]),x.props.animation&&rt()&&Le(we,function(){x.state.isShown=!0,g("onShown",[x])})}},Fe()}}function $n(){mt(x.state.isDestroyed,zt("hide"));var C=!x.state.isVisible,G=x.state.isDestroyed,te=!x.state.isEnabled,ge=y(x.props.duration,1,Qe.duration);if(!(C||G||te)&&(g("onHide",[x],!1),x.props.onHide(x)!==!1)){if(x.state.isVisible=!1,x.state.isShown=!1,pe=!1,k=!1,rt()&&(fe.style.visibility="hidden"),F(),z(),a(),rt()){var we=un(),Ke=we.box,Je=we.content;x.props.animation&&(s([Ke,Je],ge),p([Ke,Je],"hidden"))}D(),T(),x.props.animation?rt()&&De(ge,x.unmount):x.unmount()}}function Qt(C){mt(x.state.isDestroyed,zt("hideWithInteractivity")),yt().addEventListener("mousemove",Ie),$(yn,Ie),Ie(C)}function Sn(){mt(x.state.isDestroyed,zt("unmount")),x.state.isVisible&&x.hide(),x.state.isMounted&&(Ne(),Ye().forEach(function(C){C._tippy.unmount()}),fe.parentNode&&fe.parentNode.removeChild(fe),wn=wn.filter(function(C){return C!==x}),x.state.isMounted=!1,g("onHidden",[x]))}function Wn(){mt(x.state.isDestroyed,zt("destroy")),!x.state.isDestroyed&&(x.clearDelayTimeouts(),x.unmount(),Ee(),delete m._tippy,x.state.isDestroyed=!0,g("onDestroy",[x]))}}function dt(m,w){w===void 0&&(w={});var S=Qe.plugins.concat(w.plugins||[]);At(m),gt(w,S),Vt();var I=Object.assign({},w,{plugins:S}),Y=me(m),H=V(I.content),k=Y.length>1;mt(H&&k,["tippy() was passed an Element as the `content` prop, but more than","one tippy instance was created by this invocation. This means the","content element will only be appended to the last tippy instance.",` + +`,"Instead, pass the .innerHTML of the element, or use a function that","returns a cloned version of the element instead.",` + +`,`1) content: element.innerHTML +`,"2) content: () => element.cloneNode(true)"].join(" "));var be=Y.reduce(function(le,pe){var ye=pe&&cn(pe,I);return ye&&le.push(ye),le},[]);return V(m)?be[0]:be}dt.defaultProps=Qe,dt.setDefaultProps=Wr,dt.currentInput=_;var lr=function(w){var S=w===void 0?{}:w,I=S.exclude,Y=S.duration;wn.forEach(function(H){var k=!1;if(I&&(k=Z(I)?H.reference===I:H.popper===I.popper),!k){var be=H.props.duration;H.setProps({duration:Y}),H.hide(),H.state.isDestroyed||H.setProps({duration:be})}})},cr=Object.assign({},e.applyStyles,{effect:function(w){var S=w.state,I={popper:{position:S.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(S.elements.popper.style,I.popper),S.styles=I,S.elements.arrow&&Object.assign(S.elements.arrow.style,I.arrow)}}),fr=function(w,S){var I;S===void 0&&(S={}),Ut(!Array.isArray(w),["The first argument passed to createSingleton() must be an array of","tippy instances. The passed value was",String(w)].join(" "));var Y=w,H=[],k,be=S.overrides,le=[],pe=!1;function ye(){H=Y.map(function(ee){return ee.reference})}function _e(ee){Y.forEach(function(ie){ee?ie.enable():ie.disable()})}function je(ee){return Y.map(function(ie){var x=ie.setProps;return ie.setProps=function(Ge){x(Ge),ie.reference===k&&ee.setProps(Ge)},function(){ie.setProps=x}})}function Se(ee,ie){var x=H.indexOf(ie);if(ie!==k){k=ie;var Ge=(be||[]).concat("content").reduce(function(fe,Ft){return fe[Ft]=Y[x].props[Ft],fe},{});ee.setProps(Object.assign({},Ge,{getReferenceClientRect:typeof Ge.getReferenceClientRect=="function"?Ge.getReferenceClientRect:function(){return ie.getBoundingClientRect()}}))}}_e(!1),ye();var Ie={fn:function(){return{onDestroy:function(){_e(!0)},onHidden:function(){k=null},onClickOutside:function(x){x.props.showOnCreate&&!pe&&(pe=!0,k=null)},onShow:function(x){x.props.showOnCreate&&!pe&&(pe=!0,Se(x,H[0]))},onTrigger:function(x,Ge){Se(x,Ge.currentTarget)}}}},re=dt(J(),Object.assign({},O(S,["overrides"]),{plugins:[Ie].concat(S.plugins||[]),triggerTarget:H,popperOptions:Object.assign({},S.popperOptions,{modifiers:[].concat(((I=S.popperOptions)==null?void 0:I.modifiers)||[],[cr])})})),he=re.show;re.show=function(ee){if(he(),!k&&ee==null)return Se(re,H[0]);if(!(k&&ee==null)){if(typeof ee=="number")return H[ee]&&Se(re,H[ee]);if(Y.includes(ee)){var ie=ee.reference;return Se(re,ie)}if(H.includes(ee))return Se(re,ee)}},re.showNext=function(){var ee=H[0];if(!k)return re.show(0);var ie=H.indexOf(k);re.show(H[ie+1]||ee)},re.showPrevious=function(){var ee=H[H.length-1];if(!k)return re.show(ee);var ie=H.indexOf(k),x=H[ie-1]||ee;re.show(x)};var ve=re.setProps;return re.setProps=function(ee){be=ee.overrides||be,ve(ee)},re.setInstances=function(ee){_e(!0),le.forEach(function(ie){return ie()}),Y=ee,_e(!1),ye(),je(re),re.setProps({triggerTarget:H})},le=je(re),re},ur={mouseover:"mouseenter",focusin:"focus",click:"click"};function qt(m,w){Ut(!(w&&w.target),["You must specity a `target` prop indicating a CSS selector string matching","the target elements that should receive a tippy."].join(" "));var S=[],I=[],Y=!1,H=w.target,k=O(w,["target"]),be=Object.assign({},k,{trigger:"manual",touch:!1}),le=Object.assign({},k,{showOnCreate:!0}),pe=dt(m,be),ye=R(pe);function _e(he){if(!(!he.target||Y)){var ve=he.target.closest(H);if(ve){var ee=ve.getAttribute("data-tippy-trigger")||w.trigger||Qe.trigger;if(!ve._tippy&&!(he.type==="touchstart"&&typeof le.touch=="boolean")&&!(he.type!=="touchstart"&&ee.indexOf(ur[he.type])<0)){var ie=dt(ve,le);ie&&(I=I.concat(ie))}}}}function je(he,ve,ee,ie){ie===void 0&&(ie=!1),he.addEventListener(ve,ee,ie),S.push({node:he,eventType:ve,handler:ee,options:ie})}function Se(he){var ve=he.reference;je(ve,"touchstart",_e,u),je(ve,"mouseover",_e),je(ve,"focusin",_e),je(ve,"click",_e)}function Ie(){S.forEach(function(he){var ve=he.node,ee=he.eventType,ie=he.handler,x=he.options;ve.removeEventListener(ee,ie,x)}),S=[]}function re(he){var ve=he.destroy,ee=he.enable,ie=he.disable;he.destroy=function(x){x===void 0&&(x=!0),x&&I.forEach(function(Ge){Ge.destroy()}),I=[],Ie(),ve()},he.enable=function(){ee(),I.forEach(function(x){return x.enable()}),Y=!1},he.disable=function(){ie(),I.forEach(function(x){return x.disable()}),Y=!0},Se(he)}return ye.forEach(re),pe}var dr={name:"animateFill",defaultValue:!1,fn:function(w){var S;if(!((S=w.props.render)!=null&&S.$$tippy))return Ut(w.props.animateFill,"The `animateFill` plugin requires the default render function."),{};var I=Xt(w.popper),Y=I.box,H=I.content,k=w.props.animateFill?zr():null;return{onCreate:function(){k&&(Y.insertBefore(k,Y.firstElementChild),Y.setAttribute("data-animatefill",""),Y.style.overflow="hidden",w.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(k){var le=Y.style.transitionDuration,pe=Number(le.replace("ms",""));H.style.transitionDelay=Math.round(pe/10)+"ms",k.style.transitionDuration=le,p([k],"visible")}},onShow:function(){k&&(k.style.transitionDuration="0ms")},onHide:function(){k&&p([k],"hidden")}}}};function zr(){var m=J();return m.className=o,p([m],"hidden"),m}var xn={clientX:0,clientY:0},fn=[];function En(m){var w=m.clientX,S=m.clientY;xn={clientX:w,clientY:S}}function On(m){m.addEventListener("mousemove",En)}function Ur(m){m.removeEventListener("mousemove",En)}var jn={name:"followCursor",defaultValue:!1,fn:function(w){var S=w.reference,I=v(w.props.triggerTarget||S),Y=!1,H=!1,k=!0,be=w.props;function le(){return w.props.followCursor==="initial"&&w.state.isVisible}function pe(){I.addEventListener("mousemove",je)}function ye(){I.removeEventListener("mousemove",je)}function _e(){Y=!0,w.setProps({getReferenceClientRect:null}),Y=!1}function je(re){var he=re.target?S.contains(re.target):!0,ve=w.props.followCursor,ee=re.clientX,ie=re.clientY,x=S.getBoundingClientRect(),Ge=ee-x.left,fe=ie-x.top;(he||!w.props.interactive)&&w.setProps({getReferenceClientRect:function(){var bt=S.getBoundingClientRect(),Gt=ee,Kt=ie;ve==="initial"&&(Gt=bt.left+Ge,Kt=bt.top+fe);var Jt=ve==="horizontal"?bt.top:Kt,rt=ve==="vertical"?bt.right:Gt,st=ve==="horizontal"?bt.bottom:Kt,yt=ve==="vertical"?bt.left:Gt;return{width:rt-yt,height:st-Jt,top:Jt,right:rt,bottom:st,left:yt}}})}function Se(){w.props.followCursor&&(fn.push({instance:w,doc:I}),On(I))}function Ie(){fn=fn.filter(function(re){return re.instance!==w}),fn.filter(function(re){return re.doc===I}).length===0&&Ur(I)}return{onCreate:Se,onDestroy:Ie,onBeforeUpdate:function(){be=w.props},onAfterUpdate:function(he,ve){var ee=ve.followCursor;Y||ee!==void 0&&be.followCursor!==ee&&(Ie(),ee?(Se(),w.state.isMounted&&!H&&!le()&&pe()):(ye(),_e()))},onMount:function(){w.props.followCursor&&!H&&(k&&(je(xn),k=!1),le()||pe())},onTrigger:function(he,ve){U(ve)&&(xn={clientX:ve.clientX,clientY:ve.clientY}),H=ve.type==="focus"},onHidden:function(){w.props.followCursor&&(_e(),ye(),k=!0)}}}};function Yr(m,w){var S;return{popperOptions:Object.assign({},m.popperOptions,{modifiers:[].concat((((S=m.popperOptions)==null?void 0:S.modifiers)||[]).filter(function(I){var Y=I.name;return Y!==w.name}),[w])})}}var Bn={name:"inlinePositioning",defaultValue:!1,fn:function(w){var S=w.reference;function I(){return!!w.props.inlinePositioning}var Y,H=-1,k=!1,be={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(je){var Se=je.state;I()&&(Y!==Se.placement&&w.setProps({getReferenceClientRect:function(){return le(Se.placement)}}),Y=Se.placement)}};function le(_e){return Xr(K(_e),S.getBoundingClientRect(),X(S.getClientRects()),H)}function pe(_e){k=!0,w.setProps(_e),k=!1}function ye(){k||pe(Yr(w.props,be))}return{onCreate:ye,onAfterUpdate:ye,onTrigger:function(je,Se){if(U(Se)){var Ie=X(w.reference.getClientRects()),re=Ie.find(function(he){return he.left-2<=Se.clientX&&he.right+2>=Se.clientX&&he.top-2<=Se.clientY&&he.bottom+2>=Se.clientY});H=Ie.indexOf(re)}},onUntrigger:function(){H=-1}}}};function Xr(m,w,S,I){if(S.length<2||m===null)return w;if(S.length===2&&I>=0&&S[0].left>S[1].right)return S[I]||w;switch(m){case"top":case"bottom":{var Y=S[0],H=S[S.length-1],k=m==="top",be=Y.top,le=H.bottom,pe=k?Y.left:H.left,ye=k?Y.right:H.right,_e=ye-pe,je=le-be;return{top:be,bottom:le,left:pe,right:ye,width:_e,height:je}}case"left":case"right":{var Se=Math.min.apply(Math,S.map(function(fe){return fe.left})),Ie=Math.max.apply(Math,S.map(function(fe){return fe.right})),re=S.filter(function(fe){return m==="left"?fe.left===Se:fe.right===Ie}),he=re[0].top,ve=re[re.length-1].bottom,ee=Se,ie=Ie,x=ie-ee,Ge=ve-he;return{top:he,bottom:ve,left:ee,right:ie,width:x,height:Ge}}default:return w}}var qr={name:"sticky",defaultValue:!1,fn:function(w){var S=w.reference,I=w.popper;function Y(){return w.popperInstance?w.popperInstance.state.elements.reference:S}function H(pe){return w.props.sticky===!0||w.props.sticky===pe}var k=null,be=null;function le(){var pe=H("reference")?Y().getBoundingClientRect():null,ye=H("popper")?I.getBoundingClientRect():null;(pe&&Hn(k,pe)||ye&&Hn(be,ye))&&w.popperInstance&&w.popperInstance.update(),k=pe,be=ye,w.state.isMounted&&requestAnimationFrame(le)}return{onMount:function(){w.props.sticky&&le()}}}};function Hn(m,w){return m&&w?m.top!==w.top||m.right!==w.right||m.bottom!==w.bottom||m.left!==w.left:!0}dt.setDefaultProps({render:ar}),t.animateFill=dr,t.createSingleton=fr,t.default=dt,t.delegate=qt,t.followCursor=jn,t.hideAll=lr,t.inlinePositioning=Bn,t.roundArrow=r,t.sticky=qr}),Ei=Fo(Lo()),ds=Fo(Lo()),ps=t=>{let e={plugins:[]},r=i=>t[t.indexOf(i)+1];if(t.includes("animation")&&(e.animation=r("animation")),t.includes("duration")&&(e.duration=parseInt(r("duration"))),t.includes("delay")){let i=r("delay");e.delay=i.includes("-")?i.split("-").map(o=>parseInt(o)):parseInt(i)}if(t.includes("cursor")){e.plugins.push(ds.followCursor);let i=r("cursor");["x","initial"].includes(i)?e.followCursor=i==="x"?"horizontal":"initial":e.followCursor=!0}t.includes("on")&&(e.trigger=r("on")),t.includes("arrowless")&&(e.arrow=!1),t.includes("html")&&(e.allowHTML=!0),t.includes("interactive")&&(e.interactive=!0),t.includes("border")&&e.interactive&&(e.interactiveBorder=parseInt(r("border"))),t.includes("debounce")&&e.interactive&&(e.interactiveDebounce=parseInt(r("debounce"))),t.includes("max-width")&&(e.maxWidth=parseInt(r("max-width"))),t.includes("theme")&&(e.theme=r("theme")),t.includes("placement")&&(e.placement=r("placement"));let n={};return t.includes("no-flip")&&(n.modifiers||(n.modifiers=[]),n.modifiers.push({name:"flip",enabled:!1})),e.popperOptions=n,e};function Oi(t){t.magic("tooltip",e=>(r,n={})=>{let i=n.timeout;delete n.timeout;let o=(0,Ei.default)(e,{content:r,trigger:"manual",...n});o.show(),setTimeout(()=>{o.hide(),setTimeout(()=>o.destroy(),n.duration||300)},i||2e3)}),t.directive("tooltip",(e,{modifiers:r,expression:n},{evaluateLater:i,effect:o})=>{let l=r.length>0?ps(r):{};e.__x_tippy||(e.__x_tippy=(0,Ei.default)(e,l));let h=()=>e.__x_tippy.enable(),u=()=>e.__x_tippy.disable(),f=y=>{y?(h(),e.__x_tippy.setContent(y)):u()};if(r.includes("raw"))f(n);else{let y=i(n);o(()=>{y(b=>{typeof b=="object"?(e.__x_tippy.setProps(b),h()):f(b)})})}})}Oi.defaultProps=t=>(Ei.default.setDefaultProps(t),Oi);var hs=Oi,No=hs;document.addEventListener("alpine:init",()=>{window.Alpine.plugin(ro),window.Alpine.plugin(io),window.Alpine.plugin(Ro),window.Alpine.plugin(No)});var vs=function(t,e,r){function n(y,b){for(let A of y){let E=i(A,b);if(E!==null)return E}}function i(y,b){let A=y.match(/^[\{\[]([^\[\]\{\}]*)[\}\]](.*)/s);if(A===null||A.length!==3)return null;let E=A[1],O=A[2];if(E.includes(",")){let[P,R]=E.split(",",2);if(R==="*"&&b>=P)return O;if(P==="*"&&b<=R)return O;if(b>=P&&b<=R)return O}return E==b?O:null}function o(y){return y.toString().charAt(0).toUpperCase()+y.toString().slice(1)}function l(y,b){if(b.length===0)return y;let A={};for(let[E,O]of Object.entries(b))A[":"+o(E??"")]=o(O??""),A[":"+E.toUpperCase()]=O.toString().toUpperCase(),A[":"+E]=O;return Object.entries(A).forEach(([E,O])=>{y=y.replaceAll(E,O)}),y}function h(y){return y.map(b=>b.replace(/^[\{\[]([^\[\]\{\}]*)[\}\]]/,""))}let u=t.split("|"),f=n(u,e);return f!=null?l(f.trim(),r):(u=h(u),l(u.length>1&&e>1?u[1]:u[0],r))};window.jsMd5=ko.md5;window.pluralize=vs;})(); +/*! Bundled license information: + +js-md5/src/md5.js: + (** + * [js-md5]{@link https://github.com/emn178/js-md5} + * + * @namespace md5 + * @version 0.8.3 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2014-2023 + * @license MIT + *) + +sortablejs/modular/sortable.esm.js: + (**! + * Sortable 1.15.2 + * @author RubaXa + * @author owenm + * @license MIT + *) +*/ diff --git a/public/js/filament/tables/components/table.js b/public/js/filament/tables/components/table.js new file mode 100644 index 000000000..1c72d1353 --- /dev/null +++ b/public/js/filament/tables/components/table.js @@ -0,0 +1 @@ +function c(){return{collapsedGroups:[],isLoading:!1,selectedRecords:[],shouldCheckUniqueSelection:!0,init:function(){this.$wire.$on("deselectAllTableRecords",()=>this.deselectAllRecords()),this.$watch("selectedRecords",()=>{if(!this.shouldCheckUniqueSelection){this.shouldCheckUniqueSelection=!0;return}this.selectedRecords=[...new Set(this.selectedRecords)],this.shouldCheckUniqueSelection=!1})},mountAction:function(e,s=null){this.$wire.set("selectedTableRecords",this.selectedRecords,!1),this.$wire.mountTableAction(e,s)},mountBulkAction:function(e){this.$wire.set("selectedTableRecords",this.selectedRecords,!1),this.$wire.mountTableBulkAction(e)},toggleSelectRecordsOnPage:function(){let e=this.getRecordsOnPage();if(this.areRecordsSelected(e)){this.deselectRecords(e);return}this.selectRecords(e)},toggleSelectRecordsInGroup:async function(e){if(this.isLoading=!0,this.areRecordsSelected(this.getRecordsInGroupOnPage(e))){this.deselectRecords(await this.$wire.getGroupedSelectableTableRecordKeys(e));return}this.selectRecords(await this.$wire.getGroupedSelectableTableRecordKeys(e)),this.isLoading=!1},getRecordsInGroupOnPage:function(e){let s=[];for(let t of this.$root?.getElementsByClassName("fi-ta-record-checkbox")??[])t.dataset.group===e&&s.push(t.value);return s},getRecordsOnPage:function(){let e=[];for(let s of this.$root?.getElementsByClassName("fi-ta-record-checkbox")??[])e.push(s.value);return e},selectRecords:function(e){for(let s of e)this.isRecordSelected(s)||this.selectedRecords.push(s)},deselectRecords:function(e){for(let s of e){let t=this.selectedRecords.indexOf(s);t!==-1&&this.selectedRecords.splice(t,1)}},selectAllRecords:async function(){this.isLoading=!0,this.selectedRecords=await this.$wire.getAllSelectableTableRecordKeys(),this.isLoading=!1},deselectAllRecords:function(){this.selectedRecords=[]},isRecordSelected:function(e){return this.selectedRecords.includes(e)},areRecordsSelected:function(e){return e.every(s=>this.isRecordSelected(s))},toggleCollapseGroup:function(e){if(this.isGroupCollapsed(e)){this.collapsedGroups.splice(this.collapsedGroups.indexOf(e),1);return}this.collapsedGroups.push(e)},isGroupCollapsed:function(e){return this.collapsedGroups.includes(e)},resetCollapsedGroups:function(){this.collapsedGroups=[]}}}export{c as default}; diff --git a/public/js/filament/widgets/components/chart.js b/public/js/filament/widgets/components/chart.js new file mode 100644 index 000000000..4eb6c8cef --- /dev/null +++ b/public/js/filament/widgets/components/chart.js @@ -0,0 +1,37 @@ +function Ft(){}var Mo=function(){let s=0;return function(){return s++}}();function R(s){return s===null||typeof s>"u"}function $(s){if(Array.isArray&&Array.isArray(s))return!0;let t=Object.prototype.toString.call(s);return t.slice(0,7)==="[object"&&t.slice(-6)==="Array]"}function A(s){return s!==null&&Object.prototype.toString.call(s)==="[object Object]"}var K=s=>(typeof s=="number"||s instanceof Number)&&isFinite(+s);function mt(s,t){return K(s)?s:t}function I(s,t){return typeof s>"u"?t:s}var To=(s,t)=>typeof s=="string"&&s.endsWith("%")?parseFloat(s)/100:s/t,Tn=(s,t)=>typeof s=="string"&&s.endsWith("%")?parseFloat(s)/100*t:+s;function j(s,t,e){if(s&&typeof s.call=="function")return s.apply(e,t)}function H(s,t,e,i){let n,r,o;if($(s))if(r=s.length,i)for(n=r-1;n>=0;n--)t.call(e,s[n],n);else for(n=0;ns,x:s=>s.x,y:s=>s.y};function Bt(s,t){return(co[t]||(co[t]=Tc(t)))(s)}function Tc(s){let t=vc(s);return e=>{for(let i of t){if(i==="")break;e=e&&e[i]}return e}}function vc(s){let t=s.split("."),e=[],i="";for(let n of t)i+=n,i.endsWith("\\")?i=i.slice(0,-1)+".":(e.push(i),i="");return e}function Mi(s){return s.charAt(0).toUpperCase()+s.slice(1)}var ft=s=>typeof s<"u",Ht=s=>typeof s=="function",vn=(s,t)=>{if(s.size!==t.size)return!1;for(let e of s)if(!t.has(e))return!1;return!0};function Oo(s){return s.type==="mouseup"||s.type==="click"||s.type==="contextmenu"}var Y=Math.PI,B=2*Y,Oc=B+Y,wi=Number.POSITIVE_INFINITY,Dc=Y/180,Z=Y/2,gs=Y/4,ho=Y*2/3,gt=Math.log10,Tt=Math.sign;function On(s){let t=Math.round(s);s=Ne(s,t,s/1e3)?t:s;let e=Math.pow(10,Math.floor(gt(s))),i=s/e;return(i<=1?1:i<=2?2:i<=5?5:10)*e}function Do(s){let t=[],e=Math.sqrt(s),i;for(i=1;in-r).pop(),t}function pe(s){return!isNaN(parseFloat(s))&&isFinite(s)}function Ne(s,t,e){return Math.abs(s-t)=s}function Dn(s,t,e){let i,n,r;for(i=0,n=s.length;il&&c=Math.min(t,e)-i&&s<=Math.max(t,e)+i}function vi(s,t,e){e=e||(o=>s[o]1;)r=n+i>>1,e(r)?n=r:i=r;return{lo:n,hi:i}}var Ct=(s,t,e,i)=>vi(s,e,i?n=>s[n][t]<=e:n=>s[n][t]vi(s,e,i=>s[i][t]>=e);function Fo(s,t,e){let i=0,n=s.length;for(;ii&&s[n-1]>e;)n--;return i>0||n{let i="_onData"+Mi(e),n=s[e];Object.defineProperty(s,e,{configurable:!0,enumerable:!1,value(...r){let o=n.apply(this,r);return s._chartjs.listeners.forEach(a=>{typeof a[i]=="function"&&a[i](...r)}),o}})})}function Cn(s,t){let e=s._chartjs;if(!e)return;let i=e.listeners,n=i.indexOf(t);n!==-1&&i.splice(n,1),!(i.length>0)&&(Ao.forEach(r=>{delete s[r]}),delete s._chartjs)}function Fn(s){let t=new Set,e,i;for(e=0,i=s.length;e"u"?function(s){return s()}:window.requestAnimationFrame}();function Ln(s,t,e){let i=e||(o=>Array.prototype.slice.call(o)),n=!1,r=[];return function(...o){r=i(o),n||(n=!0,An.call(window,()=>{n=!1,s.apply(t,r)}))}}function Po(s,t){let e;return function(...i){return t?(clearTimeout(e),e=setTimeout(s,t,i)):s.apply(this,i),t}}var Oi=s=>s==="start"?"left":s==="end"?"right":"center",ot=(s,t,e)=>s==="start"?t:s==="end"?e:(t+e)/2,No=(s,t,e,i)=>s===(i?"left":"right")?e:s==="center"?(t+e)/2:t;function Pn(s,t,e){let i=t.length,n=0,r=i;if(s._sorted){let{iScale:o,_parsed:a}=s,l=o.axis,{min:c,max:h,minDefined:u,maxDefined:d}=o.getUserBounds();u&&(n=it(Math.min(Ct(a,o.axis,c).lo,e?i:Ct(t,l,o.getPixelForValue(c)).lo),0,i-1)),d?r=it(Math.max(Ct(a,o.axis,h,!0).hi+1,e?0:Ct(t,l,o.getPixelForValue(h),!0).hi+1),n,i)-n:r=i-n}return{start:n,count:r}}function Nn(s){let{xScale:t,yScale:e,_scaleRanges:i}=s,n={xmin:t.min,xmax:t.max,ymin:e.min,ymax:e.max};if(!i)return s._scaleRanges=n,!0;let r=i.xmin!==t.min||i.xmax!==t.max||i.ymin!==e.min||i.ymax!==e.max;return Object.assign(i,n),r}var gi=s=>s===0||s===1,uo=(s,t,e)=>-(Math.pow(2,10*(s-=1))*Math.sin((s-t)*B/e)),fo=(s,t,e)=>Math.pow(2,-10*s)*Math.sin((s-t)*B/e)+1,Ie={linear:s=>s,easeInQuad:s=>s*s,easeOutQuad:s=>-s*(s-2),easeInOutQuad:s=>(s/=.5)<1?.5*s*s:-.5*(--s*(s-2)-1),easeInCubic:s=>s*s*s,easeOutCubic:s=>(s-=1)*s*s+1,easeInOutCubic:s=>(s/=.5)<1?.5*s*s*s:.5*((s-=2)*s*s+2),easeInQuart:s=>s*s*s*s,easeOutQuart:s=>-((s-=1)*s*s*s-1),easeInOutQuart:s=>(s/=.5)<1?.5*s*s*s*s:-.5*((s-=2)*s*s*s-2),easeInQuint:s=>s*s*s*s*s,easeOutQuint:s=>(s-=1)*s*s*s*s+1,easeInOutQuint:s=>(s/=.5)<1?.5*s*s*s*s*s:.5*((s-=2)*s*s*s*s+2),easeInSine:s=>-Math.cos(s*Z)+1,easeOutSine:s=>Math.sin(s*Z),easeInOutSine:s=>-.5*(Math.cos(Y*s)-1),easeInExpo:s=>s===0?0:Math.pow(2,10*(s-1)),easeOutExpo:s=>s===1?1:-Math.pow(2,-10*s)+1,easeInOutExpo:s=>gi(s)?s:s<.5?.5*Math.pow(2,10*(s*2-1)):.5*(-Math.pow(2,-10*(s*2-1))+2),easeInCirc:s=>s>=1?s:-(Math.sqrt(1-s*s)-1),easeOutCirc:s=>Math.sqrt(1-(s-=1)*s),easeInOutCirc:s=>(s/=.5)<1?-.5*(Math.sqrt(1-s*s)-1):.5*(Math.sqrt(1-(s-=2)*s)+1),easeInElastic:s=>gi(s)?s:uo(s,.075,.3),easeOutElastic:s=>gi(s)?s:fo(s,.075,.3),easeInOutElastic(s){return gi(s)?s:s<.5?.5*uo(s*2,.1125,.45):.5+.5*fo(s*2-1,.1125,.45)},easeInBack(s){return s*s*((1.70158+1)*s-1.70158)},easeOutBack(s){return(s-=1)*s*((1.70158+1)*s+1.70158)+1},easeInOutBack(s){let t=1.70158;return(s/=.5)<1?.5*(s*s*(((t*=1.525)+1)*s-t)):.5*((s-=2)*s*(((t*=1.525)+1)*s+t)+2)},easeInBounce:s=>1-Ie.easeOutBounce(1-s),easeOutBounce(s){return s<1/2.75?7.5625*s*s:s<2/2.75?7.5625*(s-=1.5/2.75)*s+.75:s<2.5/2.75?7.5625*(s-=2.25/2.75)*s+.9375:7.5625*(s-=2.625/2.75)*s+.984375},easeInOutBounce:s=>s<.5?Ie.easeInBounce(s*2)*.5:Ie.easeOutBounce(s*2-1)*.5+.5};function _s(s){return s+.5|0}var Kt=(s,t,e)=>Math.max(Math.min(s,e),t);function ps(s){return Kt(_s(s*2.55),0,255)}function Jt(s){return Kt(_s(s*255),0,255)}function Vt(s){return Kt(_s(s/2.55)/100,0,1)}function mo(s){return Kt(_s(s*100),0,100)}var _t={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},kn=[..."0123456789ABCDEF"],Ic=s=>kn[s&15],Cc=s=>kn[(s&240)>>4]+kn[s&15],pi=s=>(s&240)>>4===(s&15),Fc=s=>pi(s.r)&&pi(s.g)&&pi(s.b)&&pi(s.a);function Ac(s){var t=s.length,e;return s[0]==="#"&&(t===4||t===5?e={r:255&_t[s[1]]*17,g:255&_t[s[2]]*17,b:255&_t[s[3]]*17,a:t===5?_t[s[4]]*17:255}:(t===7||t===9)&&(e={r:_t[s[1]]<<4|_t[s[2]],g:_t[s[3]]<<4|_t[s[4]],b:_t[s[5]]<<4|_t[s[6]],a:t===9?_t[s[7]]<<4|_t[s[8]]:255})),e}var Lc=(s,t)=>s<255?t(s):"";function Pc(s){var t=Fc(s)?Ic:Cc;return s?"#"+t(s.r)+t(s.g)+t(s.b)+Lc(s.a,t):void 0}var Nc=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Ro(s,t,e){let i=t*Math.min(e,1-e),n=(r,o=(r+s/30)%12)=>e-i*Math.max(Math.min(o-3,9-o,1),-1);return[n(0),n(8),n(4)]}function Rc(s,t,e){let i=(n,r=(n+s/60)%6)=>e-e*t*Math.max(Math.min(r,4-r,1),0);return[i(5),i(3),i(1)]}function Wc(s,t,e){let i=Ro(s,1,.5),n;for(t+e>1&&(n=1/(t+e),t*=n,e*=n),n=0;n<3;n++)i[n]*=1-t-e,i[n]+=t;return i}function zc(s,t,e,i,n){return s===n?(t-e)/i+(t.5?h/(2-r-o):h/(r+o),l=zc(e,i,n,h,r),l=l*60+.5),[l|0,c||0,a]}function Wn(s,t,e,i){return(Array.isArray(t)?s(t[0],t[1],t[2]):s(t,e,i)).map(Jt)}function zn(s,t,e){return Wn(Ro,s,t,e)}function Vc(s,t,e){return Wn(Wc,s,t,e)}function Hc(s,t,e){return Wn(Rc,s,t,e)}function Wo(s){return(s%360+360)%360}function Bc(s){let t=Nc.exec(s),e=255,i;if(!t)return;t[5]!==i&&(e=t[6]?ps(+t[5]):Jt(+t[5]));let n=Wo(+t[2]),r=+t[3]/100,o=+t[4]/100;return t[1]==="hwb"?i=Vc(n,r,o):t[1]==="hsv"?i=Hc(n,r,o):i=zn(n,r,o),{r:i[0],g:i[1],b:i[2],a:e}}function $c(s,t){var e=Rn(s);e[0]=Wo(e[0]+t),e=zn(e),s.r=e[0],s.g=e[1],s.b=e[2]}function jc(s){if(!s)return;let t=Rn(s),e=t[0],i=mo(t[1]),n=mo(t[2]);return s.a<255?`hsla(${e}, ${i}%, ${n}%, ${Vt(s.a)})`:`hsl(${e}, ${i}%, ${n}%)`}var go={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},po={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};function Uc(){let s={},t=Object.keys(po),e=Object.keys(go),i,n,r,o,a;for(i=0;i>16&255,r>>8&255,r&255]}return s}var yi;function Yc(s){yi||(yi=Uc(),yi.transparent=[0,0,0,0]);let t=yi[s.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:t.length===4?t[3]:255}}var Zc=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function qc(s){let t=Zc.exec(s),e=255,i,n,r;if(t){if(t[7]!==i){let o=+t[7];e=t[8]?ps(o):Kt(o*255,0,255)}return i=+t[1],n=+t[3],r=+t[5],i=255&(t[2]?ps(i):Kt(i,0,255)),n=255&(t[4]?ps(n):Kt(n,0,255)),r=255&(t[6]?ps(r):Kt(r,0,255)),{r:i,g:n,b:r,a:e}}}function Gc(s){return s&&(s.a<255?`rgba(${s.r}, ${s.g}, ${s.b}, ${Vt(s.a)})`:`rgb(${s.r}, ${s.g}, ${s.b})`)}var xn=s=>s<=.0031308?s*12.92:Math.pow(s,1/2.4)*1.055-.055,Ee=s=>s<=.04045?s/12.92:Math.pow((s+.055)/1.055,2.4);function Xc(s,t,e){let i=Ee(Vt(s.r)),n=Ee(Vt(s.g)),r=Ee(Vt(s.b));return{r:Jt(xn(i+e*(Ee(Vt(t.r))-i))),g:Jt(xn(n+e*(Ee(Vt(t.g))-n))),b:Jt(xn(r+e*(Ee(Vt(t.b))-r))),a:s.a+e*(t.a-s.a)}}function bi(s,t,e){if(s){let i=Rn(s);i[t]=Math.max(0,Math.min(i[t]+i[t]*e,t===0?360:1)),i=zn(i),s.r=i[0],s.g=i[1],s.b=i[2]}}function zo(s,t){return s&&Object.assign(t||{},s)}function yo(s){var t={r:0,g:0,b:0,a:255};return Array.isArray(s)?s.length>=3&&(t={r:s[0],g:s[1],b:s[2],a:255},s.length>3&&(t.a=Jt(s[3]))):(t=zo(s,{r:0,g:0,b:0,a:1}),t.a=Jt(t.a)),t}function Kc(s){return s.charAt(0)==="r"?qc(s):Bc(s)}var Fe=class{constructor(t){if(t instanceof Fe)return t;let e=typeof t,i;e==="object"?i=yo(t):e==="string"&&(i=Ac(t)||Yc(t)||Kc(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=zo(this._rgb);return t&&(t.a=Vt(t.a)),t}set rgb(t){this._rgb=yo(t)}rgbString(){return this._valid?Gc(this._rgb):void 0}hexString(){return this._valid?Pc(this._rgb):void 0}hslString(){return this._valid?jc(this._rgb):void 0}mix(t,e){if(t){let i=this.rgb,n=t.rgb,r,o=e===r?.5:e,a=2*o-1,l=i.a-n.a,c=((a*l===-1?a:(a+l)/(1+a*l))+1)/2;r=1-c,i.r=255&c*i.r+r*n.r+.5,i.g=255&c*i.g+r*n.g+.5,i.b=255&c*i.b+r*n.b+.5,i.a=o*i.a+(1-o)*n.a,this.rgb=i}return this}interpolate(t,e){return t&&(this._rgb=Xc(this._rgb,t._rgb,e)),this}clone(){return new Fe(this.rgb)}alpha(t){return this._rgb.a=Jt(t),this}clearer(t){let e=this._rgb;return e.a*=1-t,this}greyscale(){let t=this._rgb,e=_s(t.r*.3+t.g*.59+t.b*.11);return t.r=t.g=t.b=e,this}opaquer(t){let e=this._rgb;return e.a*=1+t,this}negate(){let t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return bi(this._rgb,2,t),this}darken(t){return bi(this._rgb,2,-t),this}saturate(t){return bi(this._rgb,1,t),this}desaturate(t){return bi(this._rgb,1,-t),this}rotate(t){return $c(this._rgb,t),this}};function Vo(s){return new Fe(s)}function Ho(s){if(s&&typeof s=="object"){let t=s.toString();return t==="[object CanvasPattern]"||t==="[object CanvasGradient]"}return!1}function Vn(s){return Ho(s)?s:Vo(s)}function _n(s){return Ho(s)?s:Vo(s).saturate(.5).darken(.1).hexString()}var Qt=Object.create(null),Di=Object.create(null);function ys(s,t){if(!t)return s;let e=t.split(".");for(let i=0,n=e.length;ie.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(e,i)=>_n(i.backgroundColor),this.hoverBorderColor=(e,i)=>_n(i.borderColor),this.hoverColor=(e,i)=>_n(i.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t)}set(t,e){return wn(this,t,e)}get(t){return ys(this,t)}describe(t,e){return wn(Di,t,e)}override(t,e){return wn(Qt,t,e)}route(t,e,i,n){let r=ys(this,t),o=ys(this,i),a="_"+e;Object.defineProperties(r,{[a]:{value:r[e],writable:!0},[e]:{enumerable:!0,get(){let l=this[a],c=o[n];return A(l)?Object.assign({},c,l):I(l,c)},set(l){this[a]=l}}})}},L=new Mn({_scriptable:s=>!s.startsWith("on"),_indexable:s=>s!=="events",hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}});function Jc(s){return!s||R(s.size)||R(s.family)?null:(s.style?s.style+" ":"")+(s.weight?s.weight+" ":"")+s.size+"px "+s.family}function bs(s,t,e,i,n){let r=t[n];return r||(r=t[n]=s.measureText(n).width,e.push(n)),r>i&&(i=r),i}function Bo(s,t,e,i){i=i||{};let n=i.data=i.data||{},r=i.garbageCollect=i.garbageCollect||[];i.font!==t&&(n=i.data={},r=i.garbageCollect=[],i.font=t),s.save(),s.font=t;let o=0,a=e.length,l,c,h,u,d;for(l=0;le.length){for(l=0;l0&&s.stroke()}}function Ae(s,t,e){return e=e||.5,!t||s&&s.x>t.left-e&&s.xt.top-e&&s.y0&&r.strokeColor!=="",l,c;for(s.save(),s.font=n.string,Qc(s,r),l=0;l+s||0;function Ii(s,t){let e={},i=A(t),n=i?Object.keys(t):t,r=A(s)?i?o=>I(s[o],s[t[o]]):o=>s[o]:()=>s;for(let o of n)e[o]=nh(r(o));return e}function $n(s){return Ii(s,{top:"y",right:"x",bottom:"y",left:"x"})}function se(s){return Ii(s,["topLeft","topRight","bottomLeft","bottomRight"])}function at(s){let t=$n(s);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function et(s,t){s=s||{},t=t||L.font;let e=I(s.size,t.size);typeof e=="string"&&(e=parseInt(e,10));let i=I(s.style,t.style);i&&!(""+i).match(sh)&&(console.warn('Invalid font style specified: "'+i+'"'),i="");let n={family:I(s.family,t.family),lineHeight:ih(I(s.lineHeight,t.lineHeight),e),size:e,style:i,weight:I(s.weight,t.weight),string:""};return n.string=Jc(n),n}function ze(s,t,e,i){let n=!0,r,o,a;for(r=0,o=s.length;re&&a===0?0:a+l;return{min:o(i,-Math.abs(r)),max:o(n,r)}}function $t(s,t){return Object.assign(Object.create(s),t)}function Ci(s,t=[""],e=s,i,n=()=>s[0]){ft(i)||(i=qo("_fallback",s));let r={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:s,_rootScopes:e,_fallback:i,_getTarget:n,override:o=>Ci([o,...s],t,e,i)};return new Proxy(r,{deleteProperty(o,a){return delete o[a],delete o._keys,delete s[0][a],!0},get(o,a){return Yo(o,a,()=>dh(a,t,s,o))},getOwnPropertyDescriptor(o,a){return Reflect.getOwnPropertyDescriptor(o._scopes[0],a)},getPrototypeOf(){return Reflect.getPrototypeOf(s[0])},has(o,a){return xo(o).includes(a)},ownKeys(o){return xo(o)},set(o,a,l){let c=o._storage||(o._storage=n());return o[a]=c[a]=l,delete o._keys,!0}})}function ge(s,t,e,i){let n={_cacheable:!1,_proxy:s,_context:t,_subProxy:e,_stack:new Set,_descriptors:jn(s,i),setContext:r=>ge(s,r,e,i),override:r=>ge(s.override(r),t,e,i)};return new Proxy(n,{deleteProperty(r,o){return delete r[o],delete s[o],!0},get(r,o,a){return Yo(r,o,()=>oh(r,o,a))},getOwnPropertyDescriptor(r,o){return r._descriptors.allKeys?Reflect.has(s,o)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(s,o)},getPrototypeOf(){return Reflect.getPrototypeOf(s)},has(r,o){return Reflect.has(s,o)},ownKeys(){return Reflect.ownKeys(s)},set(r,o,a){return s[o]=a,delete r[o],!0}})}function jn(s,t={scriptable:!0,indexable:!0}){let{_scriptable:e=t.scriptable,_indexable:i=t.indexable,_allKeys:n=t.allKeys}=s;return{allKeys:n,scriptable:e,indexable:i,isScriptable:Ht(e)?e:()=>e,isIndexable:Ht(i)?i:()=>i}}var rh=(s,t)=>s?s+Mi(t):t,Un=(s,t)=>A(t)&&s!=="adapters"&&(Object.getPrototypeOf(t)===null||t.constructor===Object);function Yo(s,t,e){if(Object.prototype.hasOwnProperty.call(s,t))return s[t];let i=e();return s[t]=i,i}function oh(s,t,e){let{_proxy:i,_context:n,_subProxy:r,_descriptors:o}=s,a=i[t];return Ht(a)&&o.isScriptable(t)&&(a=ah(t,a,s,e)),$(a)&&a.length&&(a=lh(t,a,s,o.isIndexable)),Un(t,a)&&(a=ge(a,n,r&&r[t],o)),a}function ah(s,t,e,i){let{_proxy:n,_context:r,_subProxy:o,_stack:a}=e;if(a.has(s))throw new Error("Recursion detected: "+Array.from(a).join("->")+"->"+s);return a.add(s),t=t(r,o||i),a.delete(s),Un(s,t)&&(t=Yn(n._scopes,n,s,t)),t}function lh(s,t,e,i){let{_proxy:n,_context:r,_subProxy:o,_descriptors:a}=e;if(ft(r.index)&&i(s))t=t[r.index%t.length];else if(A(t[0])){let l=t,c=n._scopes.filter(h=>h!==l);t=[];for(let h of l){let u=Yn(c,n,s,h);t.push(ge(u,r,o&&o[s],a))}}return t}function Zo(s,t,e){return Ht(s)?s(t,e):s}var ch=(s,t)=>s===!0?t:typeof s=="string"?Bt(t,s):void 0;function hh(s,t,e,i,n){for(let r of t){let o=ch(e,r);if(o){s.add(o);let a=Zo(o._fallback,e,n);if(ft(a)&&a!==e&&a!==i)return a}else if(o===!1&&ft(i)&&e!==i)return null}return!1}function Yn(s,t,e,i){let n=t._rootScopes,r=Zo(t._fallback,e,i),o=[...s,...n],a=new Set;a.add(i);let l=bo(a,o,e,r||e,i);return l===null||ft(r)&&r!==e&&(l=bo(a,o,r,l,i),l===null)?!1:Ci(Array.from(a),[""],n,r,()=>uh(t,e,i))}function bo(s,t,e,i,n){for(;e;)e=hh(s,t,e,i,n);return e}function uh(s,t,e){let i=s._getTarget();t in i||(i[t]={});let n=i[t];return $(n)&&A(e)?e:n}function dh(s,t,e,i){let n;for(let r of t)if(n=qo(rh(r,s),e),ft(n))return Un(s,n)?Yn(e,i,s,n):n}function qo(s,t){for(let e of t){if(!e)continue;let i=e[s];if(ft(i))return i}}function xo(s){let t=s._keys;return t||(t=s._keys=fh(s._scopes)),t}function fh(s){let t=new Set;for(let e of s)for(let i of Object.keys(e).filter(n=>!n.startsWith("_")))t.add(i);return Array.from(t)}function Zn(s,t,e,i){let{iScale:n}=s,{key:r="r"}=this._parsing,o=new Array(i),a,l,c,h;for(a=0,l=i;ats==="x"?"y":"x";function gh(s,t,e,i){let n=s.skip?t:s,r=t,o=e.skip?t:e,a=Si(r,n),l=Si(o,r),c=a/(a+l),h=l/(a+l);c=isNaN(c)?0:c,h=isNaN(h)?0:h;let u=i*c,d=i*h;return{previous:{x:r.x-u*(o.x-n.x),y:r.y-u*(o.y-n.y)},next:{x:r.x+d*(o.x-n.x),y:r.y+d*(o.y-n.y)}}}function ph(s,t,e){let i=s.length,n,r,o,a,l,c=Le(s,0);for(let h=0;h!c.skip)),t.cubicInterpolationMode==="monotone")bh(s,n);else{let c=i?s[s.length-1]:s[0];for(r=0,o=s.length;rwindow.getComputedStyle(s,null);function _h(s,t){return Ai(s).getPropertyValue(t)}var wh=["top","right","bottom","left"];function me(s,t,e){let i={};e=e?"-"+e:"";for(let n=0;n<4;n++){let r=wh[n];i[r]=parseFloat(s[t+"-"+r+e])||0}return i.width=i.left+i.right,i.height=i.top+i.bottom,i}var Sh=(s,t,e)=>(s>0||t>0)&&(!e||!e.shadowRoot);function kh(s,t){let e=s.touches,i=e&&e.length?e[0]:s,{offsetX:n,offsetY:r}=i,o=!1,a,l;if(Sh(n,r,s.target))a=n,l=r;else{let c=t.getBoundingClientRect();a=i.clientX-c.left,l=i.clientY-c.top,o=!0}return{x:a,y:l,box:o}}function ie(s,t){if("native"in s)return s;let{canvas:e,currentDevicePixelRatio:i}=t,n=Ai(e),r=n.boxSizing==="border-box",o=me(n,"padding"),a=me(n,"border","width"),{x:l,y:c,box:h}=kh(s,e),u=o.left+(h&&a.left),d=o.top+(h&&a.top),{width:f,height:m}=t;return r&&(f-=o.width+a.width,m-=o.height+a.height),{x:Math.round((l-u)/f*e.width/i),y:Math.round((c-d)/m*e.height/i)}}function Mh(s,t,e){let i,n;if(t===void 0||e===void 0){let r=Fi(s);if(!r)t=s.clientWidth,e=s.clientHeight;else{let o=r.getBoundingClientRect(),a=Ai(r),l=me(a,"border","width"),c=me(a,"padding");t=o.width-c.width-l.width,e=o.height-c.height-l.height,i=ki(a.maxWidth,r,"clientWidth"),n=ki(a.maxHeight,r,"clientHeight")}}return{width:t,height:e,maxWidth:i||wi,maxHeight:n||wi}}var Sn=s=>Math.round(s*10)/10;function Ko(s,t,e,i){let n=Ai(s),r=me(n,"margin"),o=ki(n.maxWidth,s,"clientWidth")||wi,a=ki(n.maxHeight,s,"clientHeight")||wi,l=Mh(s,t,e),{width:c,height:h}=l;if(n.boxSizing==="content-box"){let u=me(n,"border","width"),d=me(n,"padding");c-=d.width+u.width,h-=d.height+u.height}return c=Math.max(0,c-r.width),h=Math.max(0,i?Math.floor(c/i):h-r.height),c=Sn(Math.min(c,o,l.maxWidth)),h=Sn(Math.min(h,a,l.maxHeight)),c&&!h&&(h=Sn(c/2)),{width:c,height:h}}function Gn(s,t,e){let i=t||1,n=Math.floor(s.height*i),r=Math.floor(s.width*i);s.height=n/i,s.width=r/i;let o=s.canvas;return o.style&&(e||!o.style.height&&!o.style.width)&&(o.style.height=`${s.height}px`,o.style.width=`${s.width}px`),s.currentDevicePixelRatio!==i||o.height!==n||o.width!==r?(s.currentDevicePixelRatio=i,o.height=n,o.width=r,s.ctx.setTransform(i,0,0,i,0,0),!0):!1}var Jo=function(){let s=!1;try{let t={get passive(){return s=!0,!1}};window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch{}return s}();function Xn(s,t){let e=_h(s,t),i=e&&e.match(/^(\d+)(\.\d+)?px$/);return i?+i[1]:void 0}function Xt(s,t,e,i){return{x:s.x+e*(t.x-s.x),y:s.y+e*(t.y-s.y)}}function Qo(s,t,e,i){return{x:s.x+e*(t.x-s.x),y:i==="middle"?e<.5?s.y:t.y:i==="after"?e<1?s.y:t.y:e>0?t.y:s.y}}function ta(s,t,e,i){let n={x:s.cp2x,y:s.cp2y},r={x:t.cp1x,y:t.cp1y},o=Xt(s,n,e),a=Xt(n,r,e),l=Xt(r,t,e),c=Xt(o,a,e),h=Xt(a,l,e);return Xt(c,h,e)}var _o=new Map;function Th(s,t){t=t||{};let e=s+JSON.stringify(t),i=_o.get(e);return i||(i=new Intl.NumberFormat(s,t),_o.set(e,i)),i}function Ve(s,t,e){return Th(t,e).format(s)}var vh=function(s,t){return{x(e){return s+s+t-e},setWidth(e){t=e},textAlign(e){return e==="center"?e:e==="right"?"left":"right"},xPlus(e,i){return e-i},leftForLtr(e,i){return e-i}}},Oh=function(){return{x(s){return s},setWidth(s){},textAlign(s){return s},xPlus(s,t){return s+t},leftForLtr(s,t){return s}}};function ye(s,t,e){return s?vh(t,e):Oh()}function Kn(s,t){let e,i;(t==="ltr"||t==="rtl")&&(e=s.canvas.style,i=[e.getPropertyValue("direction"),e.getPropertyPriority("direction")],e.setProperty("direction",t,"important"),s.prevTextDirection=i)}function Jn(s,t){t!==void 0&&(delete s.prevTextDirection,s.canvas.style.setProperty("direction",t[0],t[1]))}function ea(s){return s==="angle"?{between:Re,compare:Ec,normalize:ht}:{between:At,compare:(t,e)=>t-e,normalize:t=>t}}function wo({start:s,end:t,count:e,loop:i,style:n}){return{start:s%e,end:t%e,loop:i&&(t-s+1)%e===0,style:n}}function Dh(s,t,e){let{property:i,start:n,end:r}=e,{between:o,normalize:a}=ea(i),l=t.length,{start:c,end:h,loop:u}=s,d,f;if(u){for(c+=l,h+=l,d=0,f=l;dl(n,_,y)&&a(n,_)!==0,x=()=>a(r,y)===0||l(r,_,y),S=()=>g||w(),k=()=>!g||x();for(let O=h,T=h;O<=u;++O)b=t[O%o],!b.skip&&(y=c(b[i]),y!==_&&(g=l(y,n,r),p===null&&S()&&(p=a(y,n)===0?O:T),p!==null&&k()&&(m.push(wo({start:p,end:O,loop:d,count:o,style:f})),p=null),T=O,_=y));return p!==null&&m.push(wo({start:p,end:u,loop:d,count:o,style:f})),m}function tr(s,t){let e=[],i=s.segments;for(let n=0;nn&&s[r%t].skip;)r--;return r%=t,{start:n,end:r}}function Ih(s,t,e,i){let n=s.length,r=[],o=t,a=s[t],l;for(l=t+1;l<=e;++l){let c=s[l%n];c.skip||c.stop?a.skip||(i=!1,r.push({start:t%n,end:(l-1)%n,loop:i}),t=o=c.stop?l:null):(o=l,a.skip&&(t=l)),a=c}return o!==null&&r.push({start:t%n,end:o%n,loop:i}),r}function sa(s,t){let e=s.points,i=s.options.spanGaps,n=e.length;if(!n)return[];let r=!!s._loop,{start:o,end:a}=Eh(e,n,r,i);if(i===!0)return So(s,[{start:o,end:a,loop:r}],e,t);let l=aa({chart:t,initial:e.initial,numSteps:o,currentStep:Math.min(i-e.start,o)}))}_refresh(){this._request||(this._running=!0,this._request=An.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(t=Date.now()){let e=0;this._charts.forEach((i,n)=>{if(!i.running||!i.items.length)return;let r=i.items,o=r.length-1,a=!1,l;for(;o>=0;--o)l=r[o],l._active?(l._total>i.duration&&(i.duration=l._total),l.tick(t),a=!0):(r[o]=r[r.length-1],r.pop());a&&(n.draw(),this._notify(n,i,t,"progress")),r.length||(i.running=!1,this._notify(n,i,t,"complete"),i.initial=!1),e+=r.length}),this._lastDate=t,e===0&&(this._running=!1)}_getAnims(t){let e=this._charts,i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){!e||!e.length||this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){let e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce((i,n)=>Math.max(i,n._duration),0),this._refresh())}running(t){if(!this._running)return!1;let e=this._charts.get(t);return!(!e||!e.running||!e.items.length)}stop(t){let e=this._charts.get(t);if(!e||!e.items.length)return;let i=e.items,n=i.length-1;for(;n>=0;--n)i[n].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}},jt=new hr,ia="transparent",Ah={boolean(s,t,e){return e>.5?t:s},color(s,t,e){let i=Vn(s||ia),n=i.valid&&Vn(t||ia);return n&&n.valid?n.mix(i,e).hexString():t},number(s,t,e){return s+(t-s)*e}},ur=class{constructor(t,e,i,n){let r=e[i];n=ze([t.to,n,r,t.from]);let o=ze([t.from,r,n]);this._active=!0,this._fn=t.fn||Ah[t.type||typeof o],this._easing=Ie[t.easing]||Ie.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=o,this._to=n,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);let n=this._target[this._prop],r=i-this._start,o=this._duration-r;this._start=i,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=r,this._loop=!!t.loop,this._to=ze([t.to,e,n,t.from]),this._from=ze([t.from,n,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){let e=t-this._start,i=this._duration,n=this._prop,r=this._from,o=this._loop,a=this._to,l;if(this._active=r!==a&&(o||e1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[n]=this._fn(r,a,l)}wait(){let t=this._promises||(this._promises=[]);return new Promise((e,i)=>{t.push({res:e,rej:i})})}_notify(t){let e=t?"res":"rej",i=this._promises||[];for(let n=0;ns!=="onProgress"&&s!=="onComplete"&&s!=="fn"});L.set("animations",{colors:{type:"color",properties:Ph},numbers:{type:"number",properties:Lh}});L.describe("animations",{_fallback:"animation"});L.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:s=>s|0}}}});var Hi=class{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!A(t))return;let e=this._properties;Object.getOwnPropertyNames(t).forEach(i=>{let n=t[i];if(!A(n))return;let r={};for(let o of Nh)r[o]=n[o];($(n.properties)&&n.properties||[i]).forEach(o=>{(o===i||!e.has(o))&&e.set(o,r)})})}_animateOptions(t,e){let i=e.options,n=Wh(t,i);if(!n)return[];let r=this._createAnimations(n,i);return i.$shared&&Rh(t.options.$animations,i).then(()=>{t.options=i},()=>{}),r}_createAnimations(t,e){let i=this._properties,n=[],r=t.$animations||(t.$animations={}),o=Object.keys(e),a=Date.now(),l;for(l=o.length-1;l>=0;--l){let c=o[l];if(c.charAt(0)==="$")continue;if(c==="options"){n.push(...this._animateOptions(t,e));continue}let h=e[c],u=r[c],d=i.get(c);if(u)if(d&&u.active()){u.update(d,h,a);continue}else u.cancel();if(!d||!d.duration){t[c]=h;continue}r[c]=u=new ur(d,t,c,h),n.push(u)}return n}update(t,e){if(this._properties.size===0){Object.assign(t,e);return}let i=this._createAnimations(t,e);if(i.length)return jt.add(this._chart,i),!0}};function Rh(s,t){let e=[],i=Object.keys(t);for(let n=0;n0||!e&&r<0)return n.index}return null}function la(s,t){let{chart:e,_cachedMeta:i}=s,n=e._stacks||(e._stacks={}),{iScale:r,vScale:o,index:a}=i,l=r.axis,c=o.axis,h=Bh(r,o,i),u=t.length,d;for(let f=0;fe[i].axis===t).shift()}function Uh(s,t){return $t(s,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:"default",type:"dataset"})}function Yh(s,t,e){return $t(s,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:e,index:t,mode:"default",type:"data"})}function ks(s,t){let e=s.controller.index,i=s.vScale&&s.vScale.axis;if(i){t=t||s._parsed;for(let n of t){let r=n._stacks;if(!r||r[i]===void 0||r[i][e]===void 0)return;delete r[i][e]}}}var sr=s=>s==="reset"||s==="none",ca=(s,t)=>t?s:Object.assign({},s),Zh=(s,t,e)=>s&&!t.hidden&&t._stacked&&{keys:qa(e,!0),values:null},pt=class{constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.initialize()}initialize(){let t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=oa(t.vScale,t),this.addElements()}updateIndex(t){this.index!==t&&ks(this._cachedMeta),this.index=t}linkScales(){let t=this.chart,e=this._cachedMeta,i=this.getDataset(),n=(u,d,f,m)=>u==="x"?d:u==="r"?m:f,r=e.xAxisID=I(i.xAxisID,er(t,"x")),o=e.yAxisID=I(i.yAxisID,er(t,"y")),a=e.rAxisID=I(i.rAxisID,er(t,"r")),l=e.indexAxis,c=e.iAxisID=n(l,r,o,a),h=e.vAxisID=n(l,o,r,a);e.xScale=this.getScaleForId(r),e.yScale=this.getScaleForId(o),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(c),e.vScale=this.getScaleForId(h)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){let e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){let t=this._cachedMeta;this._data&&Cn(this._data,this),t._stacked&&ks(t)}_dataCheck(){let t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(A(e))this._data=Hh(e);else if(i!==e){if(i){Cn(i,this);let n=this._cachedMeta;ks(n),n._parsed=[]}e&&Object.isExtensible(e)&&Lo(e,this),this._syncList=[],this._data=e}}addElements(){let t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){let e=this._cachedMeta,i=this.getDataset(),n=!1;this._dataCheck();let r=e._stacked;e._stacked=oa(e.vScale,e),e.stack!==i.stack&&(n=!0,ks(e),e.stack=i.stack),this._resyncElements(t),(n||r!==e._stacked)&&la(this,e._parsed)}configure(){let t=this.chart.config,e=t.datasetScopeKeys(this._type),i=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){let{_cachedMeta:i,_data:n}=this,{iScale:r,_stacked:o}=i,a=r.axis,l=t===0&&e===n.length?!0:i._sorted,c=t>0&&i._parsed[t-1],h,u,d;if(this._parsing===!1)i._parsed=n,i._sorted=!0,d=n;else{$(n[t])?d=this.parseArrayData(i,n,t,e):A(n[t])?d=this.parseObjectData(i,n,t,e):d=this.parsePrimitiveData(i,n,t,e);let f=()=>u[a]===null||c&&u[a]g||u=0;--d)if(!m()){this.updateRangeFromParsed(c,t,f,l);break}}return c}getAllParsedValues(t){let e=this._cachedMeta._parsed,i=[],n,r,o;for(n=0,r=e.length;n=0&&tthis.getContext(i,n),g=c.resolveNamedOptions(d,f,m,u);return g.$shared&&(g.$shared=l,r[o]=Object.freeze(ca(g,l))),g}_resolveAnimations(t,e,i){let n=this.chart,r=this._cachedDataOpts,o=`animation-${e}`,a=r[o];if(a)return a;let l;if(n.options.animation!==!1){let h=this.chart.config,u=h.datasetAnimationScopeKeys(this._type,e),d=h.getOptionScopes(this.getDataset(),u);l=h.createResolver(d,this.getContext(t,i,e))}let c=new Hi(n,l&&l.animations);return l&&l._cacheable&&(r[o]=Object.freeze(c)),c}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||sr(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){let i=this.resolveDataElementOptions(t,e),n=this._sharedOptions,r=this.getSharedOptions(i),o=this.includeOptions(e,r)||r!==n;return this.updateSharedOptions(r,e,i),{sharedOptions:r,includeOptions:o}}updateElement(t,e,i,n){sr(n)?Object.assign(t,i):this._resolveAnimations(e,n).update(t,i)}updateSharedOptions(t,e,i){t&&!sr(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,n){t.active=n;let r=this.getStyle(e,n);this._resolveAnimations(e,i,n).update(t,{options:!n&&this.getSharedOptions(r)||r})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){let t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){let t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){let e=this._data,i=this._cachedMeta.data;for(let[a,l,c]of this._syncList)this[a](l,c);this._syncList=[];let n=i.length,r=e.length,o=Math.min(r,n);o&&this.parse(0,o),r>n?this._insertElements(n,r-n,t):r{for(c.length+=e,a=c.length-1;a>=o;a--)c[a]=c[a-e]};for(l(r),a=t;an-r))}return s._cache.$bar}function Gh(s){let t=s.iScale,e=qh(t,s.type),i=t._length,n,r,o,a,l=()=>{o===32767||o===-32768||(ft(a)&&(i=Math.min(i,Math.abs(o-a)||i)),a=o)};for(n=0,r=e.length;n0?n[s-1]:null,a=sMath.abs(a)&&(l=a,c=o),t[e.axis]=c,t._custom={barStart:l,barEnd:c,start:n,end:r,min:o,max:a}}function Ga(s,t,e,i){return $(s)?Jh(s,t,e,i):t[e.axis]=e.parse(s,i),t}function ha(s,t,e,i){let n=s.iScale,r=s.vScale,o=n.getLabels(),a=n===r,l=[],c,h,u,d;for(c=e,h=e+i;c=e?1:-1)}function tu(s){let t,e,i,n,r;return s.horizontal?(t=s.base>s.x,e="left",i="right"):(t=s.basel.controller.options.grouped),r=i.options.stacked,o=[],a=l=>{let c=l.controller.getParsed(e),h=c&&c[l.vScale.axis];if(R(h)||isNaN(h))return!0};for(let l of n)if(!(e!==void 0&&a(l))&&((r===!1||o.indexOf(l.stack)===-1||r===void 0&&l.stack===void 0)&&o.push(l.stack),l.index===t))break;return o.length||o.push(void 0),o}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,e,i){let n=this._getStacks(t,i),r=e!==void 0?n.indexOf(e):-1;return r===-1?n.length-1:r}_getRuler(){let t=this.options,e=this._cachedMeta,i=e.iScale,n=[],r,o;for(r=0,o=e.data.length;r=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){let e=this._cachedMeta,{xScale:i,yScale:n}=e,r=this.getParsed(t),o=i.getLabelForValue(r.x),a=n.getLabelForValue(r.y),l=r._custom;return{label:e.label,value:"("+o+", "+a+(l?", "+l:"")+")"}}update(t){let e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,n){let r=n==="reset",{iScale:o,vScale:a}=this._cachedMeta,{sharedOptions:l,includeOptions:c}=this._getSharedOptions(e,n),h=o.axis,u=a.axis;for(let d=e;dRe(_,a,l,!0)?1:Math.max(w,w*e,x,x*e),m=(_,w,x)=>Re(_,a,l,!0)?-1:Math.min(w,w*e,x,x*e),g=f(0,c,u),p=f(Z,h,d),y=m(Y,c,u),b=m(Y+Z,h,d);i=(g-y)/2,n=(p-b)/2,r=-(g+y)/2,o=-(p+b)/2}return{ratioX:i,ratioY:n,offsetX:r,offsetY:o}}var oe=class extends pt{constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){let i=this.getDataset().data,n=this._cachedMeta;if(this._parsing===!1)n._parsed=i;else{let r=l=>+i[l];if(A(i[t])){let{key:l="value"}=this._parsing;r=c=>+Bt(i[c],l)}let o,a;for(o=t,a=t+e;o0&&!isNaN(t)?B*(Math.abs(t)/e):0}getLabelAndValue(t){let e=this._cachedMeta,i=this.chart,n=i.data.labels||[],r=Ve(e._parsed[t],i.options.locale);return{label:n[t]||"",value:r}}getMaxBorderWidth(t){let e=0,i=this.chart,n,r,o,a,l;if(!t){for(n=0,r=i.data.datasets.length;ns!=="spacing",_indexable:s=>s!=="spacing"};oe.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(s){let t=s.data;if(t.labels.length&&t.datasets.length){let{labels:{pointStyle:e}}=s.legend.options;return t.labels.map((i,n)=>{let o=s.getDatasetMeta(0).controller.getStyle(n);return{text:i,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,lineWidth:o.borderWidth,pointStyle:e,hidden:!s.getDataVisibility(n),index:n}})}return[]}},onClick(s,t,e){e.chart.toggleDataVisibility(t.index),e.chart.update()}},tooltip:{callbacks:{title(){return""},label(s){let t=s.label,e=": "+s.formattedValue;return $(t)?(t=t.slice(),t[0]+=e):t+=e,t}}}}};var Ue=class extends pt{initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(t){let e=this._cachedMeta,{dataset:i,data:n=[],_dataset:r}=e,o=this.chart._animationsDisabled,{start:a,count:l}=Pn(e,n,o);this._drawStart=a,this._drawCount=l,Nn(e)&&(a=0,l=n.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!r._decimated,i.points=n;let c=this.resolveDatasetElementOptions(t);this.options.showLine||(c.borderWidth=0),c.segment=this.options.segment,this.updateElement(i,void 0,{animated:!o,options:c},t),this.updateElements(n,a,l,t)}updateElements(t,e,i,n){let r=n==="reset",{iScale:o,vScale:a,_stacked:l,_dataset:c}=this._cachedMeta,{sharedOptions:h,includeOptions:u}=this._getSharedOptions(e,n),d=o.axis,f=a.axis,{spanGaps:m,segment:g}=this.options,p=pe(m)?m:Number.POSITIVE_INFINITY,y=this.chart._animationsDisabled||r||n==="none",b=e>0&&this.getParsed(e-1);for(let _=e;_0&&Math.abs(x[d]-b[d])>p,g&&(S.parsed=x,S.raw=c.data[_]),u&&(S.options=h||this.resolveDataElementOptions(_,w.active?"active":n)),y||this.updateElement(w,_,S,n),b=x}}getMaxOverflow(){let t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,n=t.data||[];if(!n.length)return i;let r=n[0].size(this.resolveDataElementOptions(0)),o=n[n.length-1].size(this.resolveDataElementOptions(n.length-1));return Math.max(i,r,o)/2}draw(){let t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}};Ue.id="line";Ue.defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1};Ue.overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};var Ye=class extends pt{constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){let e=this._cachedMeta,i=this.chart,n=i.data.labels||[],r=Ve(e._parsed[t].r,i.options.locale);return{label:n[t]||"",value:r}}parseObjectData(t,e,i,n){return Zn.bind(this)(t,e,i,n)}update(t){let e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){let t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach((i,n)=>{let r=this.getParsed(n).r;!isNaN(r)&&this.chart.getDataVisibility(n)&&(re.max&&(e.max=r))}),e}_updateRadius(){let t=this.chart,e=t.chartArea,i=t.options,n=Math.min(e.right-e.left,e.bottom-e.top),r=Math.max(n/2,0),o=Math.max(i.cutoutPercentage?r/100*i.cutoutPercentage:1,0),a=(r-o)/t.getVisibleDatasetCount();this.outerRadius=r-a*this.index,this.innerRadius=this.outerRadius-a}updateElements(t,e,i,n){let r=n==="reset",o=this.chart,l=o.options.animation,c=this._cachedMeta.rScale,h=c.xCenter,u=c.yCenter,d=c.getIndexAngle(0)-.5*Y,f=d,m,g=360/this.countVisibleElements();for(m=0;m{!isNaN(this.getParsed(n).r)&&this.chart.getDataVisibility(n)&&e++}),e}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?wt(this.resolveDataElementOptions(t,e).angle||i):0}};Ye.id="polarArea";Ye.defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0};Ye.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(s){let t=s.data;if(t.labels.length&&t.datasets.length){let{labels:{pointStyle:e}}=s.legend.options;return t.labels.map((i,n)=>{let o=s.getDatasetMeta(0).controller.getStyle(n);return{text:i,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,lineWidth:o.borderWidth,pointStyle:e,hidden:!s.getDataVisibility(n),index:n}})}return[]}},onClick(s,t,e){e.chart.toggleDataVisibility(t.index),e.chart.update()}},tooltip:{callbacks:{title(){return""},label(s){return s.chart.data.labels[s.dataIndex]+": "+s.formattedValue}}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};var Is=class extends oe{};Is.id="pie";Is.defaults={cutout:0,rotation:0,circumference:360,radius:"100%"};var Ze=class extends pt{getLabelAndValue(t){let e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}parseObjectData(t,e,i,n){return Zn.bind(this)(t,e,i,n)}update(t){let e=this._cachedMeta,i=e.dataset,n=e.data||[],r=e.iScale.getLabels();if(i.points=n,t!=="resize"){let o=this.resolveDatasetElementOptions(t);this.options.showLine||(o.borderWidth=0);let a={_loop:!0,_fullLoop:r.length===n.length,options:o};this.updateElement(i,void 0,a,t)}this.updateElements(n,0,n.length,t)}updateElements(t,e,i,n){let r=this._cachedMeta.rScale,o=n==="reset";for(let a=e;a{n[r]=i[r]&&i[r].active()?i[r]._to:this[r]}),n}};yt.defaults={};yt.defaultRoutes=void 0;var Xa={values(s){return $(s)?s:""+s},numeric(s,t,e){if(s===0)return"0";let i=this.chart.options.locale,n,r=s;if(e.length>1){let c=Math.max(Math.abs(e[0].value),Math.abs(e[e.length-1].value));(c<1e-4||c>1e15)&&(n="scientific"),r=ru(s,e)}let o=gt(Math.abs(r)),a=Math.max(Math.min(-1*Math.floor(o),20),0),l={notation:n,minimumFractionDigits:a,maximumFractionDigits:a};return Object.assign(l,this.options.ticks.format),Ve(s,i,l)},logarithmic(s,t,e){if(s===0)return"0";let i=s/Math.pow(10,Math.floor(gt(s)));return i===1||i===2||i===5?Xa.numeric.call(this,s,t,e):""}};function ru(s,t){let e=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;return Math.abs(e)>=1&&s!==Math.floor(s)&&(e=s-Math.floor(s)),e}var Zi={formatters:Xa};L.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",grace:0,grid:{display:!0,lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(s,t)=>t.lineWidth,tickColor:(s,t)=>t.color,offset:!1,borderDash:[],borderDashOffset:0,borderWidth:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Zi.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}});L.route("scale.ticks","color","","color");L.route("scale.grid","color","","borderColor");L.route("scale.grid","borderColor","","borderColor");L.route("scale.title","color","","color");L.describe("scale",{_fallback:!1,_scriptable:s=>!s.startsWith("before")&&!s.startsWith("after")&&s!=="callback"&&s!=="parser",_indexable:s=>s!=="borderDash"&&s!=="tickBorderDash"});L.describe("scales",{_fallback:"scale"});L.describe("scale.ticks",{_scriptable:s=>s!=="backdropPadding"&&s!=="callback",_indexable:s=>s!=="backdropPadding"});function ou(s,t){let e=s.options.ticks,i=e.maxTicksLimit||au(s),n=e.major.enabled?cu(t):[],r=n.length,o=n[0],a=n[r-1],l=[];if(r>i)return hu(t,l,n,r/i),l;let c=lu(n,t,i);if(r>0){let h,u,d=r>1?Math.round((a-o)/(r-1)):null;for(Li(t,l,c,R(d)?0:o-d,o),h=0,u=r-1;hn)return l}return Math.max(n,1)}function cu(s){let t=[],e,i;for(e=0,i=s.length;es==="left"?"right":s==="right"?"left":s,fa=(s,t,e)=>t==="top"||t==="left"?s[t]+e:s[t]-e;function ma(s,t){let e=[],i=s.length/t,n=s.length,r=0;for(;ro+a)))return l}function mu(s,t){H(s,e=>{let i=e.gc,n=i.length/2,r;if(n>t){for(r=0;ri?i:e,i=n&&e>i?e:i,{min:mt(e,mt(i,e)),max:mt(i,mt(e,i))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){let t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){j(this.options.beforeUpdate,[this])}update(t,e,i){let{beginAtZero:n,grace:r,ticks:o}=this.options,a=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=Uo(this,r,n),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();let l=a=r||i<=1||!this.isHorizontal()){this.labelRotation=n;return}let h=this._getLabelSizes(),u=h.widest.width,d=h.highest.height,f=it(this.chart.width-u,0,this.maxWidth);a=t.offset?this.maxWidth/i:f/(i-1),u+6>a&&(a=f/(i-(t.offset?.5:1)),l=this.maxHeight-Ms(t.grid)-e.padding-ga(t.title,this.chart.options.font),c=Math.sqrt(u*u+d*d),o=Ti(Math.min(Math.asin(it((h.highest.height+6)/a,-1,1)),Math.asin(it(l/c,-1,1))-Math.asin(it(d/c,-1,1)))),o=Math.max(n,Math.min(r,o))),this.labelRotation=o}afterCalculateLabelRotation(){j(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){j(this.options.beforeFit,[this])}fit(){let t={width:0,height:0},{chart:e,options:{ticks:i,title:n,grid:r}}=this,o=this._isVisible(),a=this.isHorizontal();if(o){let l=ga(n,e.options.font);if(a?(t.width=this.maxWidth,t.height=Ms(r)+l):(t.height=this.maxHeight,t.width=Ms(r)+l),i.display&&this.ticks.length){let{first:c,last:h,widest:u,highest:d}=this._getLabelSizes(),f=i.padding*2,m=wt(this.labelRotation),g=Math.cos(m),p=Math.sin(m);if(a){let y=i.mirror?0:p*u.width+g*d.height;t.height=Math.min(this.maxHeight,t.height+y+f)}else{let y=i.mirror?0:g*u.width+p*d.height;t.width=Math.min(this.maxWidth,t.width+y+f)}this._calculatePadding(c,h,p,g)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,n){let{ticks:{align:r,padding:o},position:a}=this.options,l=this.labelRotation!==0,c=a!=="top"&&this.axis==="x";if(this.isHorizontal()){let h=this.getPixelForTick(0)-this.left,u=this.right-this.getPixelForTick(this.ticks.length-1),d=0,f=0;l?c?(d=n*t.width,f=i*e.height):(d=i*t.height,f=n*e.width):r==="start"?f=e.width:r==="end"?d=t.width:r!=="inner"&&(d=t.width/2,f=e.width/2),this.paddingLeft=Math.max((d-h+o)*this.width/(this.width-h),0),this.paddingRight=Math.max((f-u+o)*this.width/(this.width-u),0)}else{let h=e.height/2,u=t.height/2;r==="start"?(h=0,u=t.height):r==="end"&&(h=e.height,u=0),this.paddingTop=h+o,this.paddingBottom=u+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){j(this.options.afterFit,[this])}isHorizontal(){let{axis:t,position:e}=this.options;return e==="top"||e==="bottom"||t==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){this.beforeTickToLabelConversion(),this.generateTickLabels(t);let e,i;for(e=0,i=t.length;e({width:r[k]||0,height:o[k]||0});return{first:S(0),last:S(e-1),widest:S(w),highest:S(x),widths:r,heights:o}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){let e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);let e=this._startPixel+t*this._length;return Io(this._alignToPixels?te(this.chart,e,0):e)}getDecimalForPixel(t){let e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){let{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){let e=this.ticks||[];if(t>=0&&ta*n?a/i:l/n:l*n0}_computeGridLineItems(t){let e=this.axis,i=this.chart,n=this.options,{grid:r,position:o}=n,a=r.offset,l=this.isHorizontal(),h=this.ticks.length+(a?1:0),u=Ms(r),d=[],f=r.setContext(this.getContext()),m=f.drawBorder?f.borderWidth:0,g=m/2,p=function(E){return te(i,E,m)},y,b,_,w,x,S,k,O,T,F,W,P;if(o==="top")y=p(this.bottom),S=this.bottom-u,O=y-g,F=p(t.top)+g,P=t.bottom;else if(o==="bottom")y=p(this.top),F=t.top,P=p(t.bottom)-g,S=y+g,O=this.top+u;else if(o==="left")y=p(this.right),x=this.right-u,k=y-g,T=p(t.left)+g,W=t.right;else if(o==="right")y=p(this.left),T=t.left,W=p(t.right)-g,x=y+g,k=this.left+u;else if(e==="x"){if(o==="center")y=p((t.top+t.bottom)/2+.5);else if(A(o)){let E=Object.keys(o)[0],tt=o[E];y=p(this.chart.scales[E].getPixelForValue(tt))}F=t.top,P=t.bottom,S=y+g,O=S+u}else if(e==="y"){if(o==="center")y=p((t.left+t.right)/2);else if(A(o)){let E=Object.keys(o)[0],tt=o[E];y=p(this.chart.scales[E].getPixelForValue(tt))}x=y-g,k=x-u,T=t.left,W=t.right}let Q=I(n.ticks.maxTicksLimit,h),ct=Math.max(1,Math.ceil(h/Q));for(b=0;br.value===t);return n>=0?e.setContext(this.getContext(n)).lineWidth:0}drawGrid(t){let e=this.options.grid,i=this.ctx,n=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t)),r,o,a=(l,c,h)=>{!h.width||!h.color||(i.save(),i.lineWidth=h.width,i.strokeStyle=h.color,i.setLineDash(h.borderDash||[]),i.lineDashOffset=h.borderDashOffset,i.beginPath(),i.moveTo(l.x,l.y),i.lineTo(c.x,c.y),i.stroke(),i.restore())};if(e.display)for(r=0,o=n.length;r{this.draw(n)}}]:[{z:i,draw:n=>{this.drawBackground(),this.drawGrid(n),this.drawTitle()}},{z:i+1,draw:()=>{this.drawBorder()}},{z:e,draw:n=>{this.drawLabels(n)}}]}getMatchingVisibleMetas(t){let e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",n=[],r,o;for(r=0,o=e.length;r{let i=e.split("."),n=i.pop(),r=[s].concat(i).join("."),o=t[e].split("."),a=o.pop(),l=o.join(".");L.route(r,n,l,a)})}function wu(s){return"id"in s&&"defaults"in s}var dr=class{constructor(){this.controllers=new Be(pt,"datasets",!0),this.elements=new Be(yt,"elements"),this.plugins=new Be(Object,"plugins"),this.scales=new Be(Yt,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach(n=>{let r=i||this._getRegistryForType(n);i||r.isForType(n)||r===this.plugins&&n.id?this._exec(t,r,n):H(n,o=>{let a=i||this._getRegistryForType(o);this._exec(t,a,o)})})}_exec(t,e,i){let n=Mi(t);j(i["before"+n],[],i),e[t](i),j(i["after"+n],[],i)}_getRegistryForType(t){for(let e=0;e0&&this.getParsed(e-1);for(let w=e;w0&&Math.abs(S[f]-_[f])>y,p&&(k.parsed=S,k.raw=c.data[w]),d&&(k.options=u||this.resolveDataElementOptions(w,x.active?"active":n)),b||this.updateElement(x,w,k,n),_=S}this.updateSharedOptions(u,n,h)}getMaxOverflow(){let t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let a=0;for(let l=e.length-1;l>=0;--l)a=Math.max(a,e[l].size(this.resolveDataElementOptions(l))/2);return a>0&&a}let i=t.dataset,n=i.options&&i.options.borderWidth||0;if(!e.length)return n;let r=e[0].size(this.resolveDataElementOptions(0)),o=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(n,r,o)/2}};qe.id="scatter";qe.defaults={datasetElementType:!1,dataElementType:"point",showLine:!1,fill:!1};qe.overrides={interaction:{mode:"point"},plugins:{tooltip:{callbacks:{title(){return""},label(s){return"("+s.label+", "+s.formattedValue+")"}}}},scales:{x:{type:"linear"},y:{type:"linear"}}};var Su=Object.freeze({__proto__:null,BarController:$e,BubbleController:je,DoughnutController:oe,LineController:Ue,PolarAreaController:Ye,PieController:Is,RadarController:Ze,ScatterController:qe});function be(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}var Cs=class{constructor(t){this.options=t||{}}init(t){}formats(){return be()}parse(t,e){return be()}format(t,e){return be()}add(t,e,i){return be()}diff(t,e,i){return be()}startOf(t,e,i){return be()}endOf(t,e){return be()}};Cs.override=function(s){Object.assign(Cs.prototype,s)};var kr={_date:Cs};function ku(s,t,e,i){let{controller:n,data:r,_sorted:o}=s,a=n._cachedMeta.iScale;if(a&&t===a.axis&&t!=="r"&&o&&r.length){let l=a._reversePixels?Co:Ct;if(i){if(n._sharedOptions){let c=r[0],h=typeof c.getRange=="function"&&c.getRange(t);if(h){let u=l(r,t,e-h),d=l(r,t,e+h);return{lo:u.lo,hi:d.hi}}}}else return l(r,t,e)}return{lo:0,hi:r.length-1}}function Ws(s,t,e,i,n){let r=s.getSortedVisibleDatasetMetas(),o=e[t];for(let a=0,l=r.length;a{l[o](t[e],n)&&(r.push({element:l,datasetIndex:c,index:h}),a=a||l.inRange(t.x,t.y,n))}),i&&!a?[]:r}var Ou={evaluateInteractionItems:Ws,modes:{index(s,t,e,i){let n=ie(t,s),r=e.axis||"x",o=e.includeInvisible||!1,a=e.intersect?nr(s,n,r,i,o):rr(s,n,r,!1,i,o),l=[];return a.length?(s.getSortedVisibleDatasetMetas().forEach(c=>{let h=a[0].index,u=c.data[h];u&&!u.skip&&l.push({element:u,datasetIndex:c.index,index:h})}),l):[]},dataset(s,t,e,i){let n=ie(t,s),r=e.axis||"xy",o=e.includeInvisible||!1,a=e.intersect?nr(s,n,r,i,o):rr(s,n,r,!1,i,o);if(a.length>0){let l=a[0].datasetIndex,c=s.getDatasetMeta(l).data;a=[];for(let h=0;he.pos===t)}function ya(s,t){return s.filter(e=>Ka.indexOf(e.pos)===-1&&e.box.axis===t)}function vs(s,t){return s.sort((e,i)=>{let n=t?i:e,r=t?e:i;return n.weight===r.weight?n.index-r.index:n.weight-r.weight})}function Du(s){let t=[],e,i,n,r,o,a;for(e=0,i=(s||[]).length;ec.box.fullSize),!0),i=vs(Ts(t,"left"),!0),n=vs(Ts(t,"right")),r=vs(Ts(t,"top"),!0),o=vs(Ts(t,"bottom")),a=ya(t,"x"),l=ya(t,"y");return{fullSize:e,leftAndTop:i.concat(r),rightAndBottom:n.concat(l).concat(o).concat(a),chartArea:Ts(t,"chartArea"),vertical:i.concat(n).concat(l),horizontal:r.concat(o).concat(a)}}function ba(s,t,e,i){return Math.max(s[e],t[e])+Math.max(s[i],t[i])}function Ja(s,t){s.top=Math.max(s.top,t.top),s.left=Math.max(s.left,t.left),s.bottom=Math.max(s.bottom,t.bottom),s.right=Math.max(s.right,t.right)}function Fu(s,t,e,i){let{pos:n,box:r}=e,o=s.maxPadding;if(!A(n)){e.size&&(s[n]-=e.size);let u=i[e.stack]||{size:0,count:1};u.size=Math.max(u.size,e.horizontal?r.height:r.width),e.size=u.size/u.count,s[n]+=e.size}r.getPadding&&Ja(o,r.getPadding());let a=Math.max(0,t.outerWidth-ba(o,s,"left","right")),l=Math.max(0,t.outerHeight-ba(o,s,"top","bottom")),c=a!==s.w,h=l!==s.h;return s.w=a,s.h=l,e.horizontal?{same:c,other:h}:{same:h,other:c}}function Au(s){let t=s.maxPadding;function e(i){let n=Math.max(t[i]-s[i],0);return s[i]+=n,n}s.y+=e("top"),s.x+=e("left"),e("right"),e("bottom")}function Lu(s,t){let e=t.maxPadding;function i(n){let r={left:0,top:0,right:0,bottom:0};return n.forEach(o=>{r[o]=Math.max(t[o],e[o])}),r}return i(s?["left","right"]:["top","bottom"])}function Ds(s,t,e,i){let n=[],r,o,a,l,c,h;for(r=0,o=s.length,c=0;r{typeof g.beforeLayout=="function"&&g.beforeLayout()});let h=l.reduce((g,p)=>p.box.options&&p.box.options.display===!1?g:g+1,0)||1,u=Object.freeze({outerWidth:t,outerHeight:e,padding:n,availableWidth:r,availableHeight:o,vBoxMaxWidth:r/2/h,hBoxMaxHeight:o/2}),d=Object.assign({},n);Ja(d,at(i));let f=Object.assign({maxPadding:d,w:r,h:o,x:n.left,y:n.top},n),m=Iu(l.concat(c),u);Ds(a.fullSize,f,u,m),Ds(l,f,u,m),Ds(c,f,u,m)&&Ds(l,f,u,m),Au(f),xa(a.leftAndTop,f,u,m),f.x+=f.w,f.y+=f.h,xa(a.rightAndBottom,f,u,m),s.chartArea={left:f.left,top:f.top,right:f.left+f.w,bottom:f.top+f.h,height:f.h,width:f.w},H(a.chartArea,g=>{let p=g.box;Object.assign(p,s.chartArea),p.update(f.w,f.h,{left:0,top:0,right:0,bottom:0})})}},Bi=class{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,n){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,n?Math.floor(e/n):i)}}isAttached(t){return!0}updateConfig(t){}},fr=class extends Bi{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}},Vi="$chartjs",Pu={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},_a=s=>s===null||s==="";function Nu(s,t){let e=s.style,i=s.getAttribute("height"),n=s.getAttribute("width");if(s[Vi]={initial:{height:i,width:n,style:{display:e.display,height:e.height,width:e.width}}},e.display=e.display||"block",e.boxSizing=e.boxSizing||"border-box",_a(n)){let r=Xn(s,"width");r!==void 0&&(s.width=r)}if(_a(i))if(s.style.height==="")s.height=s.width/(t||2);else{let r=Xn(s,"height");r!==void 0&&(s.height=r)}return s}var Qa=Jo?{passive:!0}:!1;function Ru(s,t,e){s.addEventListener(t,e,Qa)}function Wu(s,t,e){s.canvas.removeEventListener(t,e,Qa)}function zu(s,t){let e=Pu[s.type]||s.type,{x:i,y:n}=ie(s,t);return{type:e,chart:t,native:s,x:i!==void 0?i:null,y:n!==void 0?n:null}}function $i(s,t){for(let e of s)if(e===t||e.contains(t))return!0}function Vu(s,t,e){let i=s.canvas,n=new MutationObserver(r=>{let o=!1;for(let a of r)o=o||$i(a.addedNodes,i),o=o&&!$i(a.removedNodes,i);o&&e()});return n.observe(document,{childList:!0,subtree:!0}),n}function Hu(s,t,e){let i=s.canvas,n=new MutationObserver(r=>{let o=!1;for(let a of r)o=o||$i(a.removedNodes,i),o=o&&!$i(a.addedNodes,i);o&&e()});return n.observe(document,{childList:!0,subtree:!0}),n}var Fs=new Map,wa=0;function tl(){let s=window.devicePixelRatio;s!==wa&&(wa=s,Fs.forEach((t,e)=>{e.currentDevicePixelRatio!==s&&t()}))}function Bu(s,t){Fs.size||window.addEventListener("resize",tl),Fs.set(s,t)}function $u(s){Fs.delete(s),Fs.size||window.removeEventListener("resize",tl)}function ju(s,t,e){let i=s.canvas,n=i&&Fi(i);if(!n)return;let r=Ln((a,l)=>{let c=n.clientWidth;e(a,l),c{let l=a[0],c=l.contentRect.width,h=l.contentRect.height;c===0&&h===0||r(c,h)});return o.observe(n),Bu(s,r),o}function or(s,t,e){e&&e.disconnect(),t==="resize"&&$u(s)}function Uu(s,t,e){let i=s.canvas,n=Ln(r=>{s.ctx!==null&&e(zu(r,s))},s,r=>{let o=r[0];return[o,o.offsetX,o.offsetY]});return Ru(i,t,n),n}var mr=class extends Bi{acquireContext(t,e){let i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(Nu(t,e),i):null}releaseContext(t){let e=t.canvas;if(!e[Vi])return!1;let i=e[Vi].initial;["height","width"].forEach(r=>{let o=i[r];R(o)?e.removeAttribute(r):e.setAttribute(r,o)});let n=i.style||{};return Object.keys(n).forEach(r=>{e.style[r]=n[r]}),e.width=e.width,delete e[Vi],!0}addEventListener(t,e,i){this.removeEventListener(t,e);let n=t.$proxies||(t.$proxies={}),o={attach:Vu,detach:Hu,resize:ju}[e]||Uu;n[e]=o(t,e,i)}removeEventListener(t,e){let i=t.$proxies||(t.$proxies={}),n=i[e];if(!n)return;({attach:or,detach:or,resize:or}[e]||Wu)(t,e,n),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,n){return Ko(t,e,i,n)}isAttached(t){let e=Fi(t);return!!(e&&e.isConnected)}};function Yu(s){return!qn()||typeof OffscreenCanvas<"u"&&s instanceof OffscreenCanvas?fr:mr}var gr=class{constructor(){this._init=[]}notify(t,e,i,n){e==="beforeInit"&&(this._init=this._createDescriptors(t,!0),this._notify(this._init,t,"install"));let r=n?this._descriptors(t).filter(n):this._descriptors(t),o=this._notify(r,t,e,i);return e==="afterDestroy"&&(this._notify(r,t,"stop"),this._notify(this._init,t,"uninstall")),o}_notify(t,e,i,n){n=n||{};for(let r of t){let o=r.plugin,a=o[i],l=[e,n,r.options];if(j(a,l,o)===!1&&n.cancelable)return!1}return!0}invalidate(){R(this._cache)||(this._oldCache=this._cache,this._cache=void 0)}_descriptors(t){if(this._cache)return this._cache;let e=this._cache=this._createDescriptors(t);return this._notifyStateChanges(t),e}_createDescriptors(t,e){let i=t&&t.config,n=I(i.options&&i.options.plugins,{}),r=Zu(i);return n===!1&&!e?[]:Gu(t,r,n,e)}_notifyStateChanges(t){let e=this._oldCache||[],i=this._cache,n=(r,o)=>r.filter(a=>!o.some(l=>a.plugin.id===l.plugin.id));this._notify(n(e,i),t,"stop"),this._notify(n(i,e),t,"start")}};function Zu(s){let t={},e=[],i=Object.keys(Pt.plugins.items);for(let r=0;r{let l=i[a];if(!A(l))return console.error(`Invalid scale configuration for scale: ${a}`);if(l._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${a}`);let c=yr(a,l),h=Ju(c,n),u=e.scales||{};r[c]=r[c]||a,o[a]=Pe(Object.create(null),[{axis:c},l,u[c],u[h]])}),s.data.datasets.forEach(a=>{let l=a.type||s.type,c=a.indexAxis||pr(l,t),u=(Qt[l]||{}).scales||{};Object.keys(u).forEach(d=>{let f=Ku(d,c),m=a[f+"AxisID"]||r[f]||f;o[m]=o[m]||Object.create(null),Pe(o[m],[{axis:f},i[m],u[d]])})}),Object.keys(o).forEach(a=>{let l=o[a];Pe(l,[L.scales[l.type],L.scale])}),o}function el(s){let t=s.options||(s.options={});t.plugins=I(t.plugins,{}),t.scales=td(s,t)}function sl(s){return s=s||{},s.datasets=s.datasets||[],s.labels=s.labels||[],s}function ed(s){return s=s||{},s.data=sl(s.data),el(s),s}var Sa=new Map,il=new Set;function Ni(s,t){let e=Sa.get(s);return e||(e=t(),Sa.set(s,e),il.add(e)),e}var Os=(s,t,e)=>{let i=Bt(t,e);i!==void 0&&s.add(i)},br=class{constructor(t){this._config=ed(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=sl(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){let t=this._config;this.clearCache(),el(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return Ni(t,()=>[[`datasets.${t}`,""]])}datasetAnimationScopeKeys(t,e){return Ni(`${t}.transition.${e}`,()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]])}datasetElementScopeKeys(t,e){return Ni(`${t}-${e}`,()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]])}pluginScopeKeys(t){let e=t.id,i=this.type;return Ni(`${i}-plugin-${e}`,()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]])}_cachedScopes(t,e){let i=this._scopeCache,n=i.get(t);return(!n||e)&&(n=new Map,i.set(t,n)),n}getOptionScopes(t,e,i){let{options:n,type:r}=this,o=this._cachedScopes(t,i),a=o.get(e);if(a)return a;let l=new Set;e.forEach(h=>{t&&(l.add(t),h.forEach(u=>Os(l,t,u))),h.forEach(u=>Os(l,n,u)),h.forEach(u=>Os(l,Qt[r]||{},u)),h.forEach(u=>Os(l,L,u)),h.forEach(u=>Os(l,Di,u))});let c=Array.from(l);return c.length===0&&c.push(Object.create(null)),il.has(e)&&o.set(e,c),c}chartOptionScopes(){let{options:t,type:e}=this;return[t,Qt[e]||{},L.datasets[e]||{},{type:e},L,Di]}resolveNamedOptions(t,e,i,n=[""]){let r={$shared:!0},{resolver:o,subPrefixes:a}=ka(this._resolverCache,t,n),l=o;if(id(o,e)){r.$shared=!1,i=Ht(i)?i():i;let c=this.createResolver(t,i,a);l=ge(o,i,c)}for(let c of e)r[c]=l[c];return r}createResolver(t,e,i=[""],n){let{resolver:r}=ka(this._resolverCache,t,i);return A(e)?ge(r,e,void 0,n):r}};function ka(s,t,e){let i=s.get(t);i||(i=new Map,s.set(t,i));let n=e.join(),r=i.get(n);return r||(r={resolver:Ci(t,e),subPrefixes:e.filter(a=>!a.toLowerCase().includes("hover"))},i.set(n,r)),r}var sd=s=>A(s)&&Object.getOwnPropertyNames(s).reduce((t,e)=>t||Ht(s[e]),!1);function id(s,t){let{isScriptable:e,isIndexable:i}=jn(s);for(let n of t){let r=e(n),o=i(n),a=(o||r)&&s[n];if(r&&(Ht(a)||sd(a))||o&&$(a))return!0}return!1}var nd="3.9.1",rd=["top","bottom","left","right","chartArea"];function Ma(s,t){return s==="top"||s==="bottom"||rd.indexOf(s)===-1&&t==="x"}function Ta(s,t){return function(e,i){return e[s]===i[s]?e[t]-i[t]:e[s]-i[s]}}function va(s){let t=s.chart,e=t.options.animation;t.notifyPlugins("afterRender"),j(e&&e.onComplete,[s],t)}function od(s){let t=s.chart,e=t.options.animation;j(e&&e.onProgress,[s],t)}function nl(s){return qn()&&typeof s=="string"?s=document.getElementById(s):s&&s.length&&(s=s[0]),s&&s.canvas&&(s=s.canvas),s}var ji={},rl=s=>{let t=nl(s);return Object.values(ji).filter(e=>e.canvas===t).pop()};function ad(s,t,e){let i=Object.keys(s);for(let n of i){let r=+n;if(r>=t){let o=s[n];delete s[n],(e>0||r>t)&&(s[r+e]=o)}}}function ld(s,t,e,i){return!e||s.type==="mouseout"?null:i?t:s}var xe=class{constructor(t,e){let i=this.config=new br(e),n=nl(t),r=rl(n);if(r)throw new Error("Canvas is already in use. Chart with ID '"+r.id+"' must be destroyed before the canvas with ID '"+r.canvas.id+"' can be reused.");let o=i.createResolver(i.chartOptionScopes(),this.getContext());this.platform=new(i.platform||Yu(n)),this.platform.updateConfig(i);let a=this.platform.acquireContext(n,o.aspectRatio),l=a&&a.canvas,c=l&&l.height,h=l&&l.width;if(this.id=Mo(),this.ctx=a,this.canvas=l,this.width=h,this.height=c,this._options=o,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new gr,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=Po(u=>this.update(u),o.resizeDelay||0),this._dataChanges=[],ji[this.id]=this,!a||!l){console.error("Failed to create chart: can't acquire context from the given item");return}jt.listen(this,"complete",va),jt.listen(this,"progress",od),this._initialize(),this.attached&&this.update()}get aspectRatio(){let{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:n,_aspectRatio:r}=this;return R(t)?e&&r?r:n?i/n:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():Gn(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Hn(this.canvas,this.ctx),this}stop(){return jt.stop(this),this}resize(t,e){jt.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){let i=this.options,n=this.canvas,r=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(n,t,e,r),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),l=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,Gn(this,a,!0)&&(this.notifyPlugins("resize",{size:o}),j(i.onResize,[this,o],this),this.attached&&this._doResize(l)&&this.render())}ensureScalesHaveIDs(){let e=this.options.scales||{};H(e,(i,n)=>{i.id=n})}buildOrUpdateScales(){let t=this.options,e=t.scales,i=this.scales,n=Object.keys(i).reduce((o,a)=>(o[a]=!1,o),{}),r=[];e&&(r=r.concat(Object.keys(e).map(o=>{let a=e[o],l=yr(o,a),c=l==="r",h=l==="x";return{options:a,dposition:c?"chartArea":h?"bottom":"left",dtype:c?"radialLinear":h?"category":"linear"}}))),H(r,o=>{let a=o.options,l=a.id,c=yr(l,a),h=I(a.type,o.dtype);(a.position===void 0||Ma(a.position,c)!==Ma(o.dposition))&&(a.position=o.dposition),n[l]=!0;let u=null;if(l in i&&i[l].type===h)u=i[l];else{let d=Pt.getScale(h);u=new d({id:l,type:h,ctx:this.ctx,chart:this}),i[u.id]=u}u.init(a,t)}),H(n,(o,a)=>{o||delete i[a]}),H(i,o=>{lt.configure(this,o,o.options),lt.addBox(this,o)})}_updateMetasets(){let t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort((n,r)=>n.index-r.index),i>e){for(let n=e;ne.length&&delete this._stacks,t.forEach((i,n)=>{e.filter(r=>r===i._dataset).length===0&&this._destroyDatasetMeta(n)})}buildOrUpdateControllers(){let t=[],e=this.data.datasets,i,n;for(this._removeUnreferencedMetasets(),i=0,n=e.length;i{this.getDatasetMeta(e).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){let e=this.config;e.update();let i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),n=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0})===!1)return;let r=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let c=0,h=this.data.datasets.length;c{c.reset()}),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(Ta("z","_idx"));let{_active:a,_lastEvent:l}=this;l?this._eventHandler(l,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){H(this.scales,t=>{lt.removeBox(this,t)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){let t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);(!vn(e,i)||!!this._responsiveListeners!==t.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){let{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(let{method:i,start:n,count:r}of e){let o=i==="_removeElements"?-r:r;ad(t,n,o)}}_getUniformDataChanges(){let t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];let e=this.data.datasets.length,i=r=>new Set(t.filter(o=>o[0]===r).map((o,a)=>a+","+o.splice(1).join(","))),n=i(0);for(let r=1;rr.split(",")).map(r=>({method:r[1],start:+r[2],count:+r[3]}))}_updateLayout(t){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;lt.update(this,this.width,this.height,t);let e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],H(this.boxes,n=>{i&&n.position==="chartArea"||(n.configure&&n.configure(),this._layers.push(...n._layers()))},this),this._layers.forEach((n,r)=>{n._idx=r}),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})!==!1){for(let e=0,i=this.data.datasets.length;e=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){let e=this.ctx,i=t._clip,n=!i.disabled,r=this.chartArea,o={meta:t,index:t.index,cancelable:!0};this.notifyPlugins("beforeDatasetDraw",o)!==!1&&(n&&ws(e,{left:i.left===!1?0:r.left-i.left,right:i.right===!1?this.width:r.right+i.right,top:i.top===!1?0:r.top-i.top,bottom:i.bottom===!1?this.height:r.bottom+i.bottom}),t.controller.draw(),n&&Ss(e),o.cancelable=!1,this.notifyPlugins("afterDatasetDraw",o))}isPointInArea(t){return Ae(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,i,n){let r=Ou.modes[e];return typeof r=="function"?r(this,t,i,n):[]}getDatasetMeta(t){let e=this.data.datasets[t],i=this._metasets,n=i.filter(r=>r&&r._dataset===e).pop();return n||(n={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(n)),n}getContext(){return this.$context||(this.$context=$t(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){let e=this.data.datasets[t];if(!e)return!1;let i=this.getDatasetMeta(t);return typeof i.hidden=="boolean"?!i.hidden:!e.hidden}setDatasetVisibility(t,e){let i=this.getDatasetMeta(t);i.hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){let n=i?"show":"hide",r=this.getDatasetMeta(t),o=r.controller._resolveAnimations(void 0,n);ft(e)?(r.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),o.update(r,{visible:i}),this.update(a=>a.datasetIndex===t?n:void 0))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){let e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),jt.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,r,o),t[r]=o},n=(r,o,a)=>{r.offsetX=o,r.offsetY=a,this._eventHandler(r)};H(this.options.events,r=>i(r,n))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});let t=this._responsiveListeners,e=this.platform,i=(l,c)=>{e.addEventListener(this,l,c),t[l]=c},n=(l,c)=>{t[l]&&(e.removeEventListener(this,l,c),delete t[l])},r=(l,c)=>{this.canvas&&this.resize(l,c)},o,a=()=>{n("attach",a),this.attached=!0,this.resize(),i("resize",r),i("detach",o)};o=()=>{this.attached=!1,n("resize",r),this._stop(),this._resize(0,0),i("attach",a)},e.isAttached(this.canvas)?a():o()}unbindEvents(){H(this._listeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._listeners={},H(this._responsiveListeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){let n=i?"set":"remove",r,o,a,l;for(e==="dataset"&&(r=this.getDatasetMeta(t[0].datasetIndex),r.controller["_"+n+"DatasetHoverStyle"]()),a=0,l=t.length;a{let a=this.getDatasetMeta(r);if(!a)throw new Error("No dataset found at index "+r);return{datasetIndex:r,element:a.data[o],index:o}});!xs(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}_updateHoverStyles(t,e,i){let n=this.options.hover,r=(l,c)=>l.filter(h=>!c.some(u=>h.datasetIndex===u.datasetIndex&&h.index===u.index)),o=r(e,t),a=i?t:r(t,e);o.length&&this.updateHoverStyle(o,n.mode,!1),a.length&&n.mode&&this.updateHoverStyle(a,n.mode,!0)}_eventHandler(t,e){let i={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},n=o=>(o.options.events||this.options.events).includes(t.native.type);if(this.notifyPlugins("beforeEvent",i,n)===!1)return;let r=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,n),(r||i.changed)&&this.render(),this}_handleEvent(t,e,i){let{_active:n=[],options:r}=this,o=e,a=this._getActiveElements(t,n,i,o),l=Oo(t),c=ld(t,this._lastEvent,i,l);i&&(this._lastEvent=null,j(r.onHover,[t,a,this],this),l&&j(r.onClick,[t,a,this],this));let h=!xs(a,n);return(h||e)&&(this._active=a,this._updateHoverStyles(a,n,e)),this._lastEvent=c,h}_getActiveElements(t,e,i,n){if(t.type==="mouseout")return[];if(!i)return e;let r=this.options.hover;return this.getElementsAtEventForMode(t,r.mode,r,n)}},Oa=()=>H(xe.instances,s=>s._plugins.invalidate()),ne=!0;Object.defineProperties(xe,{defaults:{enumerable:ne,value:L},instances:{enumerable:ne,value:ji},overrides:{enumerable:ne,value:Qt},registry:{enumerable:ne,value:Pt},version:{enumerable:ne,value:nd},getChart:{enumerable:ne,value:rl},register:{enumerable:ne,value:(...s)=>{Pt.add(...s),Oa()}},unregister:{enumerable:ne,value:(...s)=>{Pt.remove(...s),Oa()}}});function ol(s,t,e){let{startAngle:i,pixelMargin:n,x:r,y:o,outerRadius:a,innerRadius:l}=t,c=n/a;s.beginPath(),s.arc(r,o,a,i-c,e+c),l>n?(c=n/l,s.arc(r,o,l,e+c,i-c,!0)):s.arc(r,o,n,e+Z,i-Z),s.closePath(),s.clip()}function cd(s){return Ii(s,["outerStart","outerEnd","innerStart","innerEnd"])}function hd(s,t,e,i){let n=cd(s.options.borderRadius),r=(e-t)/2,o=Math.min(r,i*t/2),a=l=>{let c=(e-Math.min(r,l))*i/2;return it(l,0,Math.min(r,c))};return{outerStart:a(n.outerStart),outerEnd:a(n.outerEnd),innerStart:it(n.innerStart,0,o),innerEnd:it(n.innerEnd,0,o)}}function He(s,t,e,i){return{x:e+s*Math.cos(t),y:i+s*Math.sin(t)}}function xr(s,t,e,i,n,r){let{x:o,y:a,startAngle:l,pixelMargin:c,innerRadius:h}=t,u=Math.max(t.outerRadius+i+e-c,0),d=h>0?h+i+e+c:0,f=0,m=n-l;if(i){let E=h>0?h-i:0,tt=u>0?u-i:0,J=(E+tt)/2,fe=J!==0?m*J/(J+i):m;f=(m-fe)/2}let g=Math.max(.001,m*u-e/Y)/u,p=(m-g)/2,y=l+p+f,b=n-p-f,{outerStart:_,outerEnd:w,innerStart:x,innerEnd:S}=hd(t,d,u,b-y),k=u-_,O=u-w,T=y+_/k,F=b-w/O,W=d+x,P=d+S,Q=y+x/W,ct=b-S/P;if(s.beginPath(),r){if(s.arc(o,a,u,T,F),w>0){let J=He(O,F,o,a);s.arc(J.x,J.y,w,F,b+Z)}let E=He(P,b,o,a);if(s.lineTo(E.x,E.y),S>0){let J=He(P,ct,o,a);s.arc(J.x,J.y,S,b+Z,ct+Math.PI)}if(s.arc(o,a,d,b-S/d,y+x/d,!0),x>0){let J=He(W,Q,o,a);s.arc(J.x,J.y,x,Q+Math.PI,y-Z)}let tt=He(k,y,o,a);if(s.lineTo(tt.x,tt.y),_>0){let J=He(k,T,o,a);s.arc(J.x,J.y,_,y-Z,T)}}else{s.moveTo(o,a);let E=Math.cos(T)*u+o,tt=Math.sin(T)*u+a;s.lineTo(E,tt);let J=Math.cos(F)*u+o,fe=Math.sin(F)*u+a;s.lineTo(J,fe)}s.closePath()}function ud(s,t,e,i,n){let{fullCircles:r,startAngle:o,circumference:a}=t,l=t.endAngle;if(r){xr(s,t,e,i,o+B,n);for(let c=0;c=B||Re(r,a,l),g=At(o,c+d,h+d);return m&&g}getCenterPoint(t){let{x:e,y:i,startAngle:n,endAngle:r,innerRadius:o,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius","circumference"],t),{offset:l,spacing:c}=this.options,h=(n+r)/2,u=(o+a+c+l)/2;return{x:e+Math.cos(h)*u,y:i+Math.sin(h)*u}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){let{options:e,circumference:i}=this,n=(e.offset||0)/2,r=(e.spacing||0)/2,o=e.circular;if(this.pixelMargin=e.borderAlign==="inner"?.33:0,this.fullCircles=i>B?Math.floor(i/B):0,i===0||this.innerRadius<0||this.outerRadius<0)return;t.save();let a=0;if(n){a=n/2;let c=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(c)*a,Math.sin(c)*a),this.circumference>=Y&&(a=n)}t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor;let l=ud(t,this,a,r,o);fd(t,this,a,r,l,o),t.restore()}};Ge.id="arc";Ge.defaults={borderAlign:"center",borderColor:"#fff",borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0};Ge.defaultRoutes={backgroundColor:"backgroundColor"};function al(s,t,e=t){s.lineCap=I(e.borderCapStyle,t.borderCapStyle),s.setLineDash(I(e.borderDash,t.borderDash)),s.lineDashOffset=I(e.borderDashOffset,t.borderDashOffset),s.lineJoin=I(e.borderJoinStyle,t.borderJoinStyle),s.lineWidth=I(e.borderWidth,t.borderWidth),s.strokeStyle=I(e.borderColor,t.borderColor)}function md(s,t,e){s.lineTo(e.x,e.y)}function gd(s){return s.stepped?$o:s.tension||s.cubicInterpolationMode==="monotone"?jo:md}function ll(s,t,e={}){let i=s.length,{start:n=0,end:r=i-1}=e,{start:o,end:a}=t,l=Math.max(n,o),c=Math.min(r,a),h=na&&r>a;return{count:i,start:l,loop:t.loop,ilen:c(o+(c?a-w:w))%r,_=()=>{g!==p&&(s.lineTo(h,p),s.lineTo(h,g),s.lineTo(h,y))};for(l&&(f=n[b(0)],s.moveTo(f.x,f.y)),d=0;d<=a;++d){if(f=n[b(d)],f.skip)continue;let w=f.x,x=f.y,S=w|0;S===m?(xp&&(p=x),h=(u*h+w)/++u):(_(),s.lineTo(w,x),m=S,u=0,g=p=x),y=x}_()}function _r(s){let t=s.options,e=t.borderDash&&t.borderDash.length;return!s._decimated&&!s._loop&&!t.tension&&t.cubicInterpolationMode!=="monotone"&&!t.stepped&&!e?yd:pd}function bd(s){return s.stepped?Qo:s.tension||s.cubicInterpolationMode==="monotone"?ta:Xt}function xd(s,t,e,i){let n=t._path;n||(n=t._path=new Path2D,t.path(n,e,i)&&n.closePath()),al(s,t.options),s.stroke(n)}function _d(s,t,e,i){let{segments:n,options:r}=t,o=_r(t);for(let a of n)al(s,r,a.style),s.beginPath(),o(s,t,a,{start:e,end:e+i-1})&&s.closePath(),s.stroke()}var wd=typeof Path2D=="function";function Sd(s,t,e,i){wd&&!t.options.segment?xd(s,t,e,i):_d(s,t,e,i)}var Nt=class extends yt{constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){let i=this.options;if((i.tension||i.cubicInterpolationMode==="monotone")&&!i.stepped&&!this._pointsUpdated){let n=i.spanGaps?this._loop:this._fullLoop;Xo(this._points,i,t,n,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=sa(this,this.options.segment))}first(){let t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){let t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){let i=this.options,n=t[e],r=this.points,o=tr(this,{property:e,start:n,end:n});if(!o.length)return;let a=[],l=bd(i),c,h;for(c=0,h=o.length;cs!=="borderDash"&&s!=="fill"};function Da(s,t,e,i){let n=s.options,{[e]:r}=s.getProps([e],i);return Math.abs(t-r)=e)return s.slice(t,t+e);let o=[],a=(e-2)/(r-2),l=0,c=t+e-1,h=t,u,d,f,m,g;for(o[l++]=s[h],u=0;uf&&(f=m,d=s[b],g=b);o[l++]=d,h=g}return o[l++]=s[c],o}function Id(s,t,e,i){let n=0,r=0,o,a,l,c,h,u,d,f,m,g,p=[],y=t+e-1,b=s[t].x,w=s[y].x-b;for(o=t;og&&(g=c,d=o),n=(r*n+a.x)/++r;else{let S=o-1;if(!R(u)&&!R(d)){let k=Math.min(u,d),O=Math.max(u,d);k!==f&&k!==S&&p.push({...s[k],x:n}),O!==f&&O!==S&&p.push({...s[O],x:n})}o>0&&S!==f&&p.push(s[S]),p.push(a),h=x,r=0,m=g=c,u=d=f=o}}return p}function hl(s){if(s._decimated){let t=s._data;delete s._decimated,delete s._data,Object.defineProperty(s,"data",{value:t})}}function Ea(s){s.data.datasets.forEach(t=>{hl(t)})}function Cd(s,t){let e=t.length,i=0,n,{iScale:r}=s,{min:o,max:a,minDefined:l,maxDefined:c}=r.getUserBounds();return l&&(i=it(Ct(t,r.axis,o).lo,0,e-1)),c?n=it(Ct(t,r.axis,a).hi+1,i,e)-i:n=e-i,{start:i,count:n}}var Fd={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(s,t,e)=>{if(!e.enabled){Ea(s);return}let i=s.width;s.data.datasets.forEach((n,r)=>{let{_data:o,indexAxis:a}=n,l=s.getDatasetMeta(r),c=o||n.data;if(ze([a,s.options.indexAxis])==="y"||!l.controller.supportsDecimation)return;let h=s.scales[l.xAxisID];if(h.type!=="linear"&&h.type!=="time"||s.options.parsing)return;let{start:u,count:d}=Cd(l,c),f=e.threshold||4*i;if(d<=f){hl(n);return}R(o)&&(n._data=c,delete n.data,Object.defineProperty(n,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(g){this._data=g}}));let m;switch(e.algorithm){case"lttb":m=Ed(c,u,d,i,e);break;case"min-max":m=Id(c,u,d,i);break;default:throw new Error(`Unsupported decimation algorithm '${e.algorithm}'`)}n._decimated=m})},destroy(s){Ea(s)}};function Ad(s,t,e){let i=s.segments,n=s.points,r=t.points,o=[];for(let a of i){let{start:l,end:c}=a;c=Mr(l,c,n);let h=wr(e,n[l],n[c],a.loop);if(!t.segments){o.push({source:a,target:h,start:n[l],end:n[c]});continue}let u=tr(t,h);for(let d of u){let f=wr(e,r[d.start],r[d.end],d.loop),m=Qn(a,n,f);for(let g of m)o.push({source:g,target:d,start:{[e]:Ia(h,f,"start",Math.max)},end:{[e]:Ia(h,f,"end",Math.min)}})}}return o}function wr(s,t,e,i){if(i)return;let n=t[s],r=e[s];return s==="angle"&&(n=ht(n),r=ht(r)),{property:s,start:n,end:r}}function Ld(s,t){let{x:e=null,y:i=null}=s||{},n=t.points,r=[];return t.segments.forEach(({start:o,end:a})=>{a=Mr(o,a,n);let l=n[o],c=n[a];i!==null?(r.push({x:l.x,y:i}),r.push({x:c.x,y:i})):e!==null&&(r.push({x:e,y:l.y}),r.push({x:e,y:c.y}))}),r}function Mr(s,t,e){for(;t>s;t--){let i=e[t];if(!isNaN(i.x)&&!isNaN(i.y))break}return t}function Ia(s,t,e,i){return s&&t?i(s[e],t[e]):s?s[e]:t?t[e]:0}function ul(s,t){let e=[],i=!1;return $(s)?(i=!0,e=s):e=Ld(s,t),e.length?new Nt({points:e,options:{tension:0},_loop:i,_fullLoop:i}):null}function Ca(s){return s&&s.fill!==!1}function Pd(s,t,e){let n=s[t].fill,r=[t],o;if(!e)return n;for(;n!==!1&&r.indexOf(n)===-1;){if(!K(n))return n;if(o=s[n],!o)return!1;if(o.visible)return n;r.push(n),n=o.fill}return!1}function Nd(s,t,e){let i=Vd(s);if(A(i))return isNaN(i.value)?!1:i;let n=parseFloat(i);return K(n)&&Math.floor(n)===n?Rd(i[0],t,n,e):["origin","start","end","stack","shape"].indexOf(i)>=0&&i}function Rd(s,t,e,i){return(s==="-"||s==="+")&&(e=t+e),e===t||e<0||e>=i?!1:e}function Wd(s,t){let e=null;return s==="start"?e=t.bottom:s==="end"?e=t.top:A(s)?e=t.getPixelForValue(s.value):t.getBasePixel&&(e=t.getBasePixel()),e}function zd(s,t,e){let i;return s==="start"?i=e:s==="end"?i=t.options.reverse?t.min:t.max:A(s)?i=s.value:i=t.getBaseValue(),i}function Vd(s){let t=s.options,e=t.fill,i=I(e&&e.target,e);return i===void 0&&(i=!!t.backgroundColor),i===!1||i===null?!1:i===!0?"origin":i}function Hd(s){let{scale:t,index:e,line:i}=s,n=[],r=i.segments,o=i.points,a=Bd(t,e);a.push(ul({x:null,y:t.bottom},i));for(let l=0;l=0;--o){let a=n[o].$filler;a&&(a.line.updateControlPoints(r,a.axis),i&&a.fill&&cr(s.ctx,a,r))}},beforeDatasetsDraw(s,t,e){if(e.drawTime!=="beforeDatasetsDraw")return;let i=s.getSortedVisibleDatasetMetas();for(let n=i.length-1;n>=0;--n){let r=i[n].$filler;Ca(r)&&cr(s.ctx,r,s.chartArea)}},beforeDatasetDraw(s,t,e){let i=t.meta.$filler;!Ca(i)||e.drawTime!=="beforeDatasetDraw"||cr(s.ctx,i,s.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}},Pa=(s,t)=>{let{boxHeight:e=t,boxWidth:i=t}=s;return s.usePointStyle&&(e=Math.min(e,t),i=s.pointStyleWidth||Math.min(i,t)),{boxWidth:i,boxHeight:e,itemHeight:Math.max(t,e)}},Qd=(s,t)=>s!==null&&t!==null&&s.datasetIndex===t.datasetIndex&&s.index===t.index,Yi=class extends yt{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){let t=this.options.labels||{},e=j(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter(i=>t.filter(i,this.chart.data))),t.sort&&(e=e.sort((i,n)=>t.sort(i,n,this.chart.data))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){let{options:t,ctx:e}=this;if(!t.display){this.width=this.height=0;return}let i=t.labels,n=et(i.font),r=n.size,o=this._computeTitleHeight(),{boxWidth:a,itemHeight:l}=Pa(i,r),c,h;e.font=n.string,this.isHorizontal()?(c=this.maxWidth,h=this._fitRows(o,r,a,l)+10):(h=this.maxHeight,c=this._fitCols(o,r,a,l)+10),this.width=Math.min(c,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,n){let{ctx:r,maxWidth:o,options:{labels:{padding:a}}}=this,l=this.legendHitBoxes=[],c=this.lineWidths=[0],h=n+a,u=t;r.textAlign="left",r.textBaseline="middle";let d=-1,f=-h;return this.legendItems.forEach((m,g)=>{let p=i+e/2+r.measureText(m.text).width;(g===0||c[c.length-1]+p+2*a>o)&&(u+=h,c[c.length-(g>0?0:1)]=0,f+=h,d++),l[g]={left:0,top:f,row:d,width:p,height:n},c[c.length-1]+=p+a}),u}_fitCols(t,e,i,n){let{ctx:r,maxHeight:o,options:{labels:{padding:a}}}=this,l=this.legendHitBoxes=[],c=this.columnSizes=[],h=o-t,u=a,d=0,f=0,m=0,g=0;return this.legendItems.forEach((p,y)=>{let b=i+e/2+r.measureText(p.text).width;y>0&&f+n+2*a>h&&(u+=d+a,c.push({width:d,height:f}),m+=d+a,g++,d=f=0),l[y]={left:m,top:f,col:g,width:b,height:n},d=Math.max(d,b),f+=n+a}),u+=d,c.push({width:d,height:f}),u}adjustHitBoxes(){if(!this.options.display)return;let t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:n},rtl:r}}=this,o=ye(r,this.left,this.width);if(this.isHorizontal()){let a=0,l=ot(i,this.left+n,this.right-this.lineWidths[a]);for(let c of e)a!==c.row&&(a=c.row,l=ot(i,this.left+n,this.right-this.lineWidths[a])),c.top+=this.top+t+n,c.left=o.leftForLtr(o.x(l),c.width),l+=c.width+n}else{let a=0,l=ot(i,this.top+t+n,this.bottom-this.columnSizes[a].height);for(let c of e)c.col!==a&&(a=c.col,l=ot(i,this.top+t+n,this.bottom-this.columnSizes[a].height)),c.top=l,c.left+=this.left+n,c.left=o.leftForLtr(o.x(c.left),c.width),l+=c.height+n}}isHorizontal(){return this.options.position==="top"||this.options.position==="bottom"}draw(){if(this.options.display){let t=this.ctx;ws(t,this),this._draw(),Ss(t)}}_draw(){let{options:t,columnSizes:e,lineWidths:i,ctx:n}=this,{align:r,labels:o}=t,a=L.color,l=ye(t.rtl,this.left,this.width),c=et(o.font),{color:h,padding:u}=o,d=c.size,f=d/2,m;this.drawTitle(),n.textAlign=l.textAlign("left"),n.textBaseline="middle",n.lineWidth=.5,n.font=c.string;let{boxWidth:g,boxHeight:p,itemHeight:y}=Pa(o,d),b=function(k,O,T){if(isNaN(g)||g<=0||isNaN(p)||p<0)return;n.save();let F=I(T.lineWidth,1);if(n.fillStyle=I(T.fillStyle,a),n.lineCap=I(T.lineCap,"butt"),n.lineDashOffset=I(T.lineDashOffset,0),n.lineJoin=I(T.lineJoin,"miter"),n.lineWidth=F,n.strokeStyle=I(T.strokeStyle,a),n.setLineDash(I(T.lineDash,[])),o.usePointStyle){let W={radius:p*Math.SQRT2/2,pointStyle:T.pointStyle,rotation:T.rotation,borderWidth:F},P=l.xPlus(k,g/2),Q=O+f;Bn(n,W,P,Q,o.pointStyleWidth&&g)}else{let W=O+Math.max((d-p)/2,0),P=l.leftForLtr(k,g),Q=se(T.borderRadius);n.beginPath(),Object.values(Q).some(ct=>ct!==0)?We(n,{x:P,y:W,w:g,h:p,radius:Q}):n.rect(P,W,g,p),n.fill(),F!==0&&n.stroke()}n.restore()},_=function(k,O,T){ee(n,T.text,k,O+y/2,c,{strikethrough:T.hidden,textAlign:l.textAlign(T.textAlign)})},w=this.isHorizontal(),x=this._computeTitleHeight();w?m={x:ot(r,this.left+u,this.right-i[0]),y:this.top+u+x,line:0}:m={x:this.left+u,y:ot(r,this.top+x+u,this.bottom-e[0].height),line:0},Kn(this.ctx,t.textDirection);let S=y+u;this.legendItems.forEach((k,O)=>{n.strokeStyle=k.fontColor||h,n.fillStyle=k.fontColor||h;let T=n.measureText(k.text).width,F=l.textAlign(k.textAlign||(k.textAlign=o.textAlign)),W=g+f+T,P=m.x,Q=m.y;l.setWidth(this.width),w?O>0&&P+W+u>this.right&&(Q=m.y+=S,m.line++,P=m.x=ot(r,this.left+u,this.right-i[m.line])):O>0&&Q+S>this.bottom&&(P=m.x=P+e[m.line].width+u,m.line++,Q=m.y=ot(r,this.top+x+u,this.bottom-e[m.line].height));let ct=l.x(P);b(ct,Q,k),P=No(F,P+g+f,w?P+W:this.right,t.rtl),_(l.x(P),Q,k),w?m.x+=W+u:m.y+=S}),Jn(this.ctx,t.textDirection)}drawTitle(){let t=this.options,e=t.title,i=et(e.font),n=at(e.padding);if(!e.display)return;let r=ye(t.rtl,this.left,this.width),o=this.ctx,a=e.position,l=i.size/2,c=n.top+l,h,u=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),h=this.top+c,u=ot(t.align,u,this.right-d);else{let m=this.columnSizes.reduce((g,p)=>Math.max(g,p.height),0);h=c+ot(t.align,this.top,this.bottom-m-t.labels.padding-this._computeTitleHeight())}let f=ot(a,u,u+d);o.textAlign=r.textAlign(Oi(a)),o.textBaseline="middle",o.strokeStyle=e.color,o.fillStyle=e.color,o.font=i.string,ee(o,e.text,f,h,i)}_computeTitleHeight(){let t=this.options.title,e=et(t.font),i=at(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,n,r;if(At(t,this.left,this.right)&&At(e,this.top,this.bottom)){for(r=this.legendHitBoxes,i=0;is.chart.options.color,boxWidth:40,padding:10,generateLabels(s){let t=s.data.datasets,{labels:{usePointStyle:e,pointStyle:i,textAlign:n,color:r}}=s.legend.options;return s._getSortedDatasetMetas().map(o=>{let a=o.controller.getStyle(e?0:void 0),l=at(a.borderWidth);return{text:t[o.index].label,fillStyle:a.backgroundColor,fontColor:r,hidden:!o.visible,lineCap:a.borderCapStyle,lineDash:a.borderDash,lineDashOffset:a.borderDashOffset,lineJoin:a.borderJoinStyle,lineWidth:(l.width+l.height)/4,strokeStyle:a.borderColor,pointStyle:i||a.pointStyle,rotation:a.rotation,textAlign:n||a.textAlign,borderRadius:0,datasetIndex:o.index}},this)}},title:{color:s=>s.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:s=>!s.startsWith("on"),labels:{_scriptable:s=>!["generateLabels","filter","sort"].includes(s)}}},As=class extends yt{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){let i=this.options;if(this.left=0,this.top=0,!i.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=t,this.height=this.bottom=e;let n=$(i.text)?i.text.length:1;this._padding=at(i.padding);let r=n*et(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=r:this.width=r}isHorizontal(){let t=this.options.position;return t==="top"||t==="bottom"}_drawArgs(t){let{top:e,left:i,bottom:n,right:r,options:o}=this,a=o.align,l=0,c,h,u;return this.isHorizontal()?(h=ot(a,i,r),u=e+t,c=r-i):(o.position==="left"?(h=i+t,u=ot(a,n,e),l=Y*-.5):(h=r-t,u=ot(a,e,n),l=Y*.5),c=n-e),{titleX:h,titleY:u,maxWidth:c,rotation:l}}draw(){let t=this.ctx,e=this.options;if(!e.display)return;let i=et(e.font),r=i.lineHeight/2+this._padding.top,{titleX:o,titleY:a,maxWidth:l,rotation:c}=this._drawArgs(r);ee(t,e.text,0,0,i,{color:e.color,maxWidth:l,rotation:c,textAlign:Oi(e.align),textBaseline:"middle",translation:[o,a]})}};function sf(s,t){let e=new As({ctx:s.ctx,options:t,chart:s});lt.configure(s,e,t),lt.addBox(s,e),s.titleBlock=e}var nf={id:"title",_element:As,start(s,t,e){sf(s,e)},stop(s){let t=s.titleBlock;lt.removeBox(s,t),delete s.titleBlock},beforeUpdate(s,t,e){let i=s.titleBlock;lt.configure(s,i,e),i.options=e},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}},Ri=new WeakMap,rf={id:"subtitle",start(s,t,e){let i=new As({ctx:s.ctx,options:e,chart:s});lt.configure(s,i,e),lt.addBox(s,i),Ri.set(s,i)},stop(s){lt.removeBox(s,Ri.get(s)),Ri.delete(s)},beforeUpdate(s,t,e){let i=Ri.get(s);lt.configure(s,i,e),i.options=e},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}},Es={average(s){if(!s.length)return!1;let t,e,i=0,n=0,r=0;for(t=0,e=s.length;t-1?s.split(` +`):s}function of(s,t){let{element:e,datasetIndex:i,index:n}=t,r=s.getDatasetMeta(i).controller,{label:o,value:a}=r.getLabelAndValue(n);return{chart:s,label:o,parsed:r.getParsed(n),raw:s.data.datasets[i].data[n],formattedValue:a,dataset:r.getDataset(),dataIndex:n,datasetIndex:i,element:e}}function Na(s,t){let e=s.chart.ctx,{body:i,footer:n,title:r}=s,{boxWidth:o,boxHeight:a}=t,l=et(t.bodyFont),c=et(t.titleFont),h=et(t.footerFont),u=r.length,d=n.length,f=i.length,m=at(t.padding),g=m.height,p=0,y=i.reduce((w,x)=>w+x.before.length+x.lines.length+x.after.length,0);if(y+=s.beforeBody.length+s.afterBody.length,u&&(g+=u*c.lineHeight+(u-1)*t.titleSpacing+t.titleMarginBottom),y){let w=t.displayColors?Math.max(a,l.lineHeight):l.lineHeight;g+=f*w+(y-f)*l.lineHeight+(y-1)*t.bodySpacing}d&&(g+=t.footerMarginTop+d*h.lineHeight+(d-1)*t.footerSpacing);let b=0,_=function(w){p=Math.max(p,e.measureText(w).width+b)};return e.save(),e.font=c.string,H(s.title,_),e.font=l.string,H(s.beforeBody.concat(s.afterBody),_),b=t.displayColors?o+2+t.boxPadding:0,H(i,w=>{H(w.before,_),H(w.lines,_),H(w.after,_)}),b=0,e.font=h.string,H(s.footer,_),e.restore(),p+=m.width,{width:p,height:g}}function af(s,t){let{y:e,height:i}=t;return es.height-i/2?"bottom":"center"}function lf(s,t,e,i){let{x:n,width:r}=i,o=e.caretSize+e.caretPadding;if(s==="left"&&n+r+o>t.width||s==="right"&&n-r-o<0)return!0}function cf(s,t,e,i){let{x:n,width:r}=e,{width:o,chartArea:{left:a,right:l}}=s,c="center";return i==="center"?c=n<=(a+l)/2?"left":"right":n<=r/2?c="left":n>=o-r/2&&(c="right"),lf(c,s,t,e)&&(c="center"),c}function Ra(s,t,e){let i=e.yAlign||t.yAlign||af(s,e);return{xAlign:e.xAlign||t.xAlign||cf(s,t,e,i),yAlign:i}}function hf(s,t){let{x:e,width:i}=s;return t==="right"?e-=i:t==="center"&&(e-=i/2),e}function uf(s,t,e){let{y:i,height:n}=s;return t==="top"?i+=e:t==="bottom"?i-=n+e:i-=n/2,i}function Wa(s,t,e,i){let{caretSize:n,caretPadding:r,cornerRadius:o}=s,{xAlign:a,yAlign:l}=e,c=n+r,{topLeft:h,topRight:u,bottomLeft:d,bottomRight:f}=se(o),m=hf(t,a),g=uf(t,l,c);return l==="center"?a==="left"?m+=c:a==="right"&&(m-=c):a==="left"?m-=Math.max(h,d)+n:a==="right"&&(m+=Math.max(u,f)+n),{x:it(m,0,i.width-t.width),y:it(g,0,i.height-t.height)}}function Wi(s,t,e){let i=at(e.padding);return t==="center"?s.x+s.width/2:t==="right"?s.x+s.width-i.right:s.x+i.left}function za(s){return Lt([],Ut(s))}function df(s,t,e){return $t(s,{tooltip:t,tooltipItems:e,type:"tooltip"})}function Va(s,t){let e=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return e?s.override(e):s}var Ls=class extends yt{constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart||t._chart,this._chart=this.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){let t=this._cachedAnimations;if(t)return t;let e=this.chart,i=this.options.setContext(this.getContext()),n=i.enabled&&e.options.animation&&i.animations,r=new Hi(this.chart,n);return n._cacheable&&(this._cachedAnimations=Object.freeze(r)),r}getContext(){return this.$context||(this.$context=df(this.chart.getContext(),this,this._tooltipItems))}getTitle(t,e){let{callbacks:i}=e,n=i.beforeTitle.apply(this,[t]),r=i.title.apply(this,[t]),o=i.afterTitle.apply(this,[t]),a=[];return a=Lt(a,Ut(n)),a=Lt(a,Ut(r)),a=Lt(a,Ut(o)),a}getBeforeBody(t,e){return za(e.callbacks.beforeBody.apply(this,[t]))}getBody(t,e){let{callbacks:i}=e,n=[];return H(t,r=>{let o={before:[],lines:[],after:[]},a=Va(i,r);Lt(o.before,Ut(a.beforeLabel.call(this,r))),Lt(o.lines,a.label.call(this,r)),Lt(o.after,Ut(a.afterLabel.call(this,r))),n.push(o)}),n}getAfterBody(t,e){return za(e.callbacks.afterBody.apply(this,[t]))}getFooter(t,e){let{callbacks:i}=e,n=i.beforeFooter.apply(this,[t]),r=i.footer.apply(this,[t]),o=i.afterFooter.apply(this,[t]),a=[];return a=Lt(a,Ut(n)),a=Lt(a,Ut(r)),a=Lt(a,Ut(o)),a}_createItems(t){let e=this._active,i=this.chart.data,n=[],r=[],o=[],a=[],l,c;for(l=0,c=e.length;lt.filter(h,u,d,i))),t.itemSort&&(a=a.sort((h,u)=>t.itemSort(h,u,i))),H(a,h=>{let u=Va(t.callbacks,h);n.push(u.labelColor.call(this,h)),r.push(u.labelPointStyle.call(this,h)),o.push(u.labelTextColor.call(this,h))}),this.labelColors=n,this.labelPointStyles=r,this.labelTextColors=o,this.dataPoints=a,a}update(t,e){let i=this.options.setContext(this.getContext()),n=this._active,r,o=[];if(!n.length)this.opacity!==0&&(r={opacity:0});else{let a=Es[i.position].call(this,n,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);let l=this._size=Na(this,i),c=Object.assign({},a,l),h=Ra(this.chart,i,c),u=Wa(i,c,h,this.chart);this.xAlign=h.xAlign,this.yAlign=h.yAlign,r={opacity:1,x:u.x,y:u.y,width:l.width,height:l.height,caretX:a.x,caretY:a.y}}this._tooltipItems=o,this.$context=void 0,r&&this._resolveAnimations().update(this,r),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,n){let r=this.getCaretPosition(t,i,n);e.lineTo(r.x1,r.y1),e.lineTo(r.x2,r.y2),e.lineTo(r.x3,r.y3)}getCaretPosition(t,e,i){let{xAlign:n,yAlign:r}=this,{caretSize:o,cornerRadius:a}=i,{topLeft:l,topRight:c,bottomLeft:h,bottomRight:u}=se(a),{x:d,y:f}=t,{width:m,height:g}=e,p,y,b,_,w,x;return r==="center"?(w=f+g/2,n==="left"?(p=d,y=p-o,_=w+o,x=w-o):(p=d+m,y=p+o,_=w-o,x=w+o),b=p):(n==="left"?y=d+Math.max(l,h)+o:n==="right"?y=d+m-Math.max(c,u)-o:y=this.caretX,r==="top"?(_=f,w=_-o,p=y-o,b=y+o):(_=f+g,w=_+o,p=y+o,b=y-o),x=_),{x1:p,x2:y,x3:b,y1:_,y2:w,y3:x}}drawTitle(t,e,i){let n=this.title,r=n.length,o,a,l;if(r){let c=ye(i.rtl,this.x,this.width);for(t.x=Wi(this,i.titleAlign,i),e.textAlign=c.textAlign(i.titleAlign),e.textBaseline="middle",o=et(i.titleFont),a=i.titleSpacing,e.fillStyle=i.titleColor,e.font=o.string,l=0;l_!==0)?(t.beginPath(),t.fillStyle=r.multiKeyBackground,We(t,{x:p,y:g,w:c,h:l,radius:b}),t.fill(),t.stroke(),t.fillStyle=o.backgroundColor,t.beginPath(),We(t,{x:y,y:g+1,w:c-2,h:l-2,radius:b}),t.fill()):(t.fillStyle=r.multiKeyBackground,t.fillRect(p,g,c,l),t.strokeRect(p,g,c,l),t.fillStyle=o.backgroundColor,t.fillRect(y,g+1,c-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){let{body:n}=this,{bodySpacing:r,bodyAlign:o,displayColors:a,boxHeight:l,boxWidth:c,boxPadding:h}=i,u=et(i.bodyFont),d=u.lineHeight,f=0,m=ye(i.rtl,this.x,this.width),g=function(O){e.fillText(O,m.x(t.x+f),t.y+d/2),t.y+=d+r},p=m.textAlign(o),y,b,_,w,x,S,k;for(e.textAlign=o,e.textBaseline="middle",e.font=u.string,t.x=Wi(this,p,i),e.fillStyle=i.bodyColor,H(this.beforeBody,g),f=a&&p!=="right"?o==="center"?c/2+h:c+2+h:0,w=0,S=n.length;w0&&e.stroke()}_updateAnimationTarget(t){let e=this.chart,i=this.$animations,n=i&&i.x,r=i&&i.y;if(n||r){let o=Es[t.position].call(this,this._active,this._eventPosition);if(!o)return;let a=this._size=Na(this,t),l=Object.assign({},o,this._size),c=Ra(e,t,l),h=Wa(t,l,c,e);(n._to!==h.x||r._to!==h.y)&&(this.xAlign=c.xAlign,this.yAlign=c.yAlign,this.width=a.width,this.height=a.height,this.caretX=o.x,this.caretY=o.y,this._resolveAnimations().update(this,h))}}_willRender(){return!!this.opacity}draw(t){let e=this.options.setContext(this.getContext()),i=this.opacity;if(!i)return;this._updateAnimationTarget(e);let n={width:this.width,height:this.height},r={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;let o=at(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(r,t,n,e),Kn(t,e.textDirection),r.y+=o.top,this.drawTitle(r,t,e),this.drawBody(r,t,e),this.drawFooter(r,t,e),Jn(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){let i=this._active,n=t.map(({datasetIndex:a,index:l})=>{let c=this.chart.getDatasetMeta(a);if(!c)throw new Error("Cannot find a dataset at index "+a);return{datasetIndex:a,element:c.data[l],index:l}}),r=!xs(i,n),o=this._positionChanged(n,e);(r||o)&&(this._active=n,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;let n=this.options,r=this._active||[],o=this._getActiveElements(t,r,e,i),a=this._positionChanged(o,t),l=e||!xs(o,r)||a;return l&&(this._active=o,(n.enabled||n.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),l}_getActiveElements(t,e,i,n){let r=this.options;if(t.type==="mouseout")return[];if(!n)return e;let o=this.chart.getElementsAtEventForMode(t,r.mode,r,i);return r.reverse&&o.reverse(),o}_positionChanged(t,e){let{caretX:i,caretY:n,options:r}=this,o=Es[r.position].call(this,t,e);return o!==!1&&(i!==o.x||n!==o.y)}};Ls.positioners=Es;var ff={id:"tooltip",_element:Ls,positioners:Es,afterInit(s,t,e){e&&(s.tooltip=new Ls({chart:s,options:e}))},beforeUpdate(s,t,e){s.tooltip&&s.tooltip.initialize(e)},reset(s,t,e){s.tooltip&&s.tooltip.initialize(e)},afterDraw(s){let t=s.tooltip;if(t&&t._willRender()){let e={tooltip:t};if(s.notifyPlugins("beforeTooltipDraw",e)===!1)return;t.draw(s.ctx),s.notifyPlugins("afterTooltipDraw",e)}},afterEvent(s,t){if(s.tooltip){let e=t.replay;s.tooltip.handleEvent(t.event,e,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(s,t)=>t.bodyFont.size,boxWidth:(s,t)=>t.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:{beforeTitle:Ft,title(s){if(s.length>0){let t=s[0],e=t.chart.data.labels,i=e?e.length:0;if(this&&this.options&&this.options.mode==="dataset")return t.dataset.label||"";if(t.label)return t.label;if(i>0&&t.dataIndexs!=="filter"&&s!=="itemSort"&&s!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},mf=Object.freeze({__proto__:null,Decimation:Fd,Filler:Jd,Legend:ef,SubTitle:rf,Title:nf,Tooltip:ff}),gf=(s,t,e,i)=>(typeof t=="string"?(e=s.push(t)-1,i.unshift({index:e,label:t})):isNaN(t)&&(e=null),e);function pf(s,t,e,i){let n=s.indexOf(t);if(n===-1)return gf(s,t,e,i);let r=s.lastIndexOf(t);return n!==r?e:n}var yf=(s,t)=>s===null?null:it(Math.round(s),0,t),Je=class extends Yt{constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){let e=this._addedLabels;if(e.length){let i=this.getLabels();for(let{index:n,label:r}of e)i[n]===r&&i.splice(n,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(R(t))return null;let i=this.getLabels();return e=isFinite(e)&&i[e]===t?e:pf(i,t,I(e,t),this._addedLabels),yf(e,i.length-1)}determineDataLimits(){let{minDefined:t,maxDefined:e}=this.getUserBounds(),{min:i,max:n}=this.getMinMax(!0);this.options.bounds==="ticks"&&(t||(i=0),e||(n=this.getLabels().length-1)),this.min=i,this.max=n}buildTicks(){let t=this.min,e=this.max,i=this.options.offset,n=[],r=this.getLabels();r=t===0&&e===r.length-1?r:r.slice(t,e+1),this._valueRange=Math.max(r.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let o=t;o<=e;o++)n.push({value:o});return n}getLabelForValue(t){let e=this.getLabels();return t>=0&&te.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}};Je.id="category";Je.defaults={ticks:{callback:Je.prototype.getLabelForValue}};function bf(s,t){let e=[],{bounds:n,step:r,min:o,max:a,precision:l,count:c,maxTicks:h,maxDigits:u,includeBounds:d}=s,f=r||1,m=h-1,{min:g,max:p}=t,y=!R(o),b=!R(a),_=!R(c),w=(p-g)/(u+1),x=On((p-g)/m/f)*f,S,k,O,T;if(x<1e-14&&!y&&!b)return[{value:g},{value:p}];T=Math.ceil(p/x)-Math.floor(g/x),T>m&&(x=On(T*x/m/f)*f),R(l)||(S=Math.pow(10,l),x=Math.ceil(x*S)/S),n==="ticks"?(k=Math.floor(g/x)*x,O=Math.ceil(p/x)*x):(k=g,O=p),y&&b&&r&&Eo((a-o)/r,x/1e3)?(T=Math.round(Math.min((a-o)/x,h)),x=(a-o)/T,k=o,O=a):_?(k=y?o:k,O=b?a:O,T=c-1,x=(O-k)/T):(T=(O-k)/x,Ne(T,Math.round(T),x/1e3)?T=Math.round(T):T=Math.ceil(T));let F=Math.max(En(x),En(k));S=Math.pow(10,R(l)?F:l),k=Math.round(k*S)/S,O=Math.round(O*S)/S;let W=0;for(y&&(d&&k!==o?(e.push({value:o}),kn=e?n:l,a=l=>r=i?r:l;if(t){let l=Tt(n),c=Tt(r);l<0&&c<0?a(0):l>0&&c>0&&o(0)}if(n===r){let l=1;(r>=Number.MAX_SAFE_INTEGER||n<=Number.MIN_SAFE_INTEGER)&&(l=Math.abs(r*.05)),a(r+l),t||o(n-l)}this.min=n,this.max=r}getTickLimit(){let t=this.options.ticks,{maxTicksLimit:e,stepSize:i}=t,n;return i?(n=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,n>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${n} ticks. Limiting to 1000.`),n=1e3)):(n=this.computeTickLimit(),e=e||11),e&&(n=Math.min(e,n)),n}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){let t=this.options,e=t.ticks,i=this.getTickLimit();i=Math.max(2,i);let n={maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:e.includeBounds!==!1},r=this._range||this,o=bf(n,r);return t.bounds==="ticks"&&Dn(o,this,"value"),t.reverse?(o.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),o}configure(){let t=this.ticks,e=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){let n=(i-e)/Math.max(t.length-1,1)/2;e-=n,i+=n}this._startValue=e,this._endValue=i,this._valueRange=i-e}getLabelForValue(t){return Ve(t,this.chart.options.locale,this.options.ticks.format)}},Ps=class extends Qe{determineDataLimits(){let{min:t,max:e}=this.getMinMax(!0);this.min=K(t)?t:0,this.max=K(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){let t=this.isHorizontal(),e=t?this.width:this.height,i=wt(this.options.ticks.minRotation),n=(t?Math.sin(i):Math.cos(i))||.001,r=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,r.lineHeight/n))}getPixelForValue(t){return t===null?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}};Ps.id="linear";Ps.defaults={ticks:{callback:Zi.formatters.numeric}};function Ba(s){return s/Math.pow(10,Math.floor(gt(s)))===1}function xf(s,t){let e=Math.floor(gt(t.max)),i=Math.ceil(t.max/Math.pow(10,e)),n=[],r=mt(s.min,Math.pow(10,Math.floor(gt(t.min)))),o=Math.floor(gt(r)),a=Math.floor(r/Math.pow(10,o)),l=o<0?Math.pow(10,Math.abs(o)):1;do n.push({value:r,major:Ba(r)}),++a,a===10&&(a=1,++o,l=o>=0?1:l),r=Math.round(a*Math.pow(10,o)*l)/l;while(o0?i:null}determineDataLimits(){let{min:t,max:e}=this.getMinMax(!0);this.min=K(t)?Math.max(0,t):null,this.max=K(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this.handleTickRangeOptions()}handleTickRangeOptions(){let{minDefined:t,maxDefined:e}=this.getUserBounds(),i=this.min,n=this.max,r=l=>i=t?i:l,o=l=>n=e?n:l,a=(l,c)=>Math.pow(10,Math.floor(gt(l))+c);i===n&&(i<=0?(r(1),o(10)):(r(a(i,-1)),o(a(n,1)))),i<=0&&r(a(n,-1)),n<=0&&o(a(i,1)),this._zero&&this.min!==this._suggestedMin&&i===a(this.min,0)&&r(a(i,-1)),this.min=i,this.max=n}buildTicks(){let t=this.options,e={min:this._userMin,max:this._userMax},i=xf(e,this);return t.bounds==="ticks"&&Dn(i,this,"value"),t.reverse?(i.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),i}getLabelForValue(t){return t===void 0?"0":Ve(t,this.chart.options.locale,this.options.ticks.format)}configure(){let t=this.min;super.configure(),this._startValue=gt(t),this._valueRange=gt(this.max)-gt(t)}getPixelForValue(t){return(t===void 0||t===0)&&(t=this.min),t===null||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(gt(t)-this._startValue)/this._valueRange)}getValueForPixel(t){let e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}};Ns.id="logarithmic";Ns.defaults={ticks:{callback:Zi.formatters.logarithmic,major:{enabled:!0}}};function Sr(s){let t=s.ticks;if(t.display&&s.display){let e=at(t.backdropPadding);return I(t.font&&t.font.size,L.font.size)+e.height}return 0}function _f(s,t,e){return e=$(e)?e:[e],{w:Bo(s,t.string,e),h:e.length*t.lineHeight}}function $a(s,t,e,i,n){return s===i||s===n?{start:t-e/2,end:t+e/2}:sn?{start:t-e,end:t}:{start:t,end:t+e}}function wf(s){let t={l:s.left+s._padding.left,r:s.right-s._padding.right,t:s.top+s._padding.top,b:s.bottom-s._padding.bottom},e=Object.assign({},t),i=[],n=[],r=s._pointLabels.length,o=s.options.pointLabels,a=o.centerPointLabels?Y/r:0;for(let l=0;lt.r&&(a=(i.end-t.r)/r,s.r=Math.max(s.r,t.r+a)),n.startt.b&&(l=(n.end-t.b)/o,s.b=Math.max(s.b,t.b+l))}function kf(s,t,e){let i=[],n=s._pointLabels.length,r=s.options,o=Sr(r)/2,a=s.drawingArea,l=r.pointLabels.centerPointLabels?Y/n:0;for(let c=0;c270||e<90)&&(s-=t),s}function Of(s,t){let{ctx:e,options:{pointLabels:i}}=s;for(let n=t-1;n>=0;n--){let r=i.setContext(s.getPointLabelContext(n)),o=et(r.font),{x:a,y:l,textAlign:c,left:h,top:u,right:d,bottom:f}=s._pointLabelItems[n],{backdropColor:m}=r;if(!R(m)){let g=se(r.borderRadius),p=at(r.backdropPadding);e.fillStyle=m;let y=h-p.left,b=u-p.top,_=d-h+p.width,w=f-u+p.height;Object.values(g).some(x=>x!==0)?(e.beginPath(),We(e,{x:y,y:b,w:_,h:w,radius:g}),e.fill()):e.fillRect(y,b,_,w)}ee(e,s._pointLabels[n],a,l+o.lineHeight/2,o,{color:r.color,textAlign:c,textBaseline:"middle"})}}function dl(s,t,e,i){let{ctx:n}=s;if(e)n.arc(s.xCenter,s.yCenter,t,0,B);else{let r=s.getPointPosition(0,t);n.moveTo(r.x,r.y);for(let o=1;o{let n=j(this.options.pointLabels.callback,[e,i],this);return n||n===0?n:""}).filter((e,i)=>this.chart.getDataVisibility(i))}fit(){let t=this.options;t.display&&t.pointLabels.display?wf(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,n){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-n)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,n))}getIndexAngle(t){let e=B/(this._pointLabels.length||1),i=this.options.startAngle||0;return ht(t*e+wt(i))}getDistanceFromCenterForValue(t){if(R(t))return NaN;let e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(R(t))return NaN;let e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){let e=this._pointLabels||[];if(t>=0&&t{if(h!==0){a=this.getDistanceFromCenterForValue(c.value);let u=n.setContext(this.getContext(h-1));Df(this,u,a,r)}}),i.display){for(t.save(),o=r-1;o>=0;o--){let c=i.setContext(this.getPointLabelContext(o)),{color:h,lineWidth:u}=c;!u||!h||(t.lineWidth=u,t.strokeStyle=h,t.setLineDash(c.borderDash),t.lineDashOffset=c.borderDashOffset,a=this.getDistanceFromCenterForValue(e.ticks.reverse?this.min:this.max),l=this.getPointPosition(o,a),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(l.x,l.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){let t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;let n=this.getIndexAngle(0),r,o;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(n),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach((a,l)=>{if(l===0&&!e.reverse)return;let c=i.setContext(this.getContext(l)),h=et(c.font);if(r=this.getDistanceFromCenterForValue(this.ticks[l].value),c.showLabelBackdrop){t.font=h.string,o=t.measureText(a.label).width,t.fillStyle=c.backdropColor;let u=at(c.backdropPadding);t.fillRect(-o/2-u.left,-r-h.size/2-u.top,o+u.width,h.size+u.height)}ee(t,a.label,0,-r,h,{color:c.color})}),t.restore()}drawTitle(){}};_e.id="radialLinear";_e.defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:Zi.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(s){return s},padding:5,centerPointLabels:!1}};_e.defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};_e.descriptors={angleLines:{_fallback:"grid"}};var qi={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},ut=Object.keys(qi);function If(s,t){return s-t}function ja(s,t){if(R(t))return null;let e=s._adapter,{parser:i,round:n,isoWeekday:r}=s._parseOpts,o=t;return typeof i=="function"&&(o=i(o)),K(o)||(o=typeof i=="string"?e.parse(o,i):e.parse(o)),o===null?null:(n&&(o=n==="week"&&(pe(r)||r===!0)?e.startOf(o,"isoWeek",r):e.startOf(o,n)),+o)}function Ua(s,t,e,i){let n=ut.length;for(let r=ut.indexOf(s);r=ut.indexOf(e);r--){let o=ut[r];if(qi[o].common&&s._adapter.diff(n,i,o)>=t-1)return o}return ut[e?ut.indexOf(e):0]}function Ff(s){for(let t=ut.indexOf(s)+1,e=ut.length;t=t?e[i]:e[n];s[r]=!0}}function Af(s,t,e,i){let n=s._adapter,r=+n.startOf(t[0].value,i),o=t[t.length-1].value,a,l;for(a=r;a<=o;a=+n.add(a,1,i))l=e[a],l>=0&&(t[l].major=!0);return t}function Za(s,t,e){let i=[],n={},r=t.length,o,a;for(o=0;o+t.value))}initOffsets(t){let e=0,i=0,n,r;this.options.offset&&t.length&&(n=this.getDecimalForValue(t[0]),t.length===1?e=1-n:e=(this.getDecimalForValue(t[1])-n)/2,r=this.getDecimalForValue(t[t.length-1]),t.length===1?i=r:i=(r-this.getDecimalForValue(t[t.length-2]))/2);let o=t.length<3?.5:.25;e=it(e,0,o),i=it(i,0,o),this._offsets={start:e,end:i,factor:1/(e+1+i)}}_generate(){let t=this._adapter,e=this.min,i=this.max,n=this.options,r=n.time,o=r.unit||Ua(r.minUnit,e,i,this._getLabelCapacity(e)),a=I(r.stepSize,1),l=o==="week"?r.isoWeekday:!1,c=pe(l)||l===!0,h={},u=e,d,f;if(c&&(u=+t.startOf(u,"isoWeek",l)),u=+t.startOf(u,c?"day":o),t.diff(i,e,o)>1e5*a)throw new Error(e+" and "+i+" are too far apart with stepSize of "+a+" "+o);let m=n.ticks.source==="data"&&this.getDataTimestamps();for(d=u,f=0;dg-p).map(g=>+g)}getLabelForValue(t){let e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}_tickFormatFunction(t,e,i,n){let r=this.options,o=r.time.displayFormats,a=this._unit,l=this._majorUnit,c=a&&o[a],h=l&&o[l],u=i[e],d=l&&h&&u&&u.major,f=this._adapter.format(t,n||(d?h:c)),m=r.ticks.callback;return m?j(m,[f,e,i],this):f}generateTickLabels(t){let e,i,n;for(e=0,i=t.length;e0?a:1}getDataTimestamps(){let t=this._cache.data||[],e,i;if(t.length)return t;let n=this.getMatchingVisibleMetas();if(this._normalized&&n.length)return this._cache.data=n[0].controller.getAllParsedValues(this);for(e=0,i=n.length;e=s[i].pos&&t<=s[n].pos&&({lo:i,hi:n}=Ct(s,"pos",t)),{pos:r,time:a}=s[i],{pos:o,time:l}=s[n]):(t>=s[i].time&&t<=s[n].time&&({lo:i,hi:n}=Ct(s,"time",t)),{time:r,pos:a}=s[i],{time:o,pos:l}=s[n]);let c=o-r;return c?a+(l-a)*(t-r)/c:a}var Rs=class extends we{constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){let t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=zi(e,this.min),this._tableRange=zi(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){let{min:e,max:i}=this,n=[],r=[],o,a,l,c,h;for(o=0,a=t.length;o=e&&c<=i&&n.push(c);if(n.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(o=0,a=n.length;o=0?m:1e3+m,(d-f)/(60*1e3)}equals(t){return t.type==="iana"&&t.name===this.name}get isValid(){return this.valid}};var ml={};function zf(s,t={}){let e=JSON.stringify([s,t]),i=ml[e];return i||(i=new Intl.ListFormat(s,t),ml[e]=i),i}var Dr={};function Er(s,t={}){let e=JSON.stringify([s,t]),i=Dr[e];return i||(i=new Intl.DateTimeFormat(s,t),Dr[e]=i),i}var Ir={};function Vf(s,t={}){let e=JSON.stringify([s,t]),i=Ir[e];return i||(i=new Intl.NumberFormat(s,t),Ir[e]=i),i}var Cr={};function Hf(s,t={}){let{base:e,...i}=t,n=JSON.stringify([s,i]),r=Cr[n];return r||(r=new Intl.RelativeTimeFormat(s,t),Cr[n]=r),r}var ni=null;function Bf(){return ni||(ni=new Intl.DateTimeFormat().resolvedOptions().locale,ni)}var gl={};function $f(s){let t=gl[s];if(!t){let e=new Intl.Locale(s);t="getWeekInfo"in e?e.getWeekInfo():e.weekInfo,gl[s]=t}return t}function jf(s){let t=s.indexOf("-x-");t!==-1&&(s=s.substring(0,t));let e=s.indexOf("-u-");if(e===-1)return[s];{let i,n;try{i=Er(s).resolvedOptions(),n=s}catch{let l=s.substring(0,e);i=Er(l).resolvedOptions(),n=l}let{numberingSystem:r,calendar:o}=i;return[n,r,o]}}function Uf(s,t,e){return(e||t)&&(s.includes("-u-")||(s+="-u"),e&&(s+=`-ca-${e}`),t&&(s+=`-nu-${t}`)),s}function Yf(s){let t=[];for(let e=1;e<=12;e++){let i=v.utc(2009,e,1);t.push(s(i))}return t}function Zf(s){let t=[];for(let e=1;e<=7;e++){let i=v.utc(2016,11,13+e);t.push(s(i))}return t}function sn(s,t,e,i){let n=s.listingMode();return n==="error"?null:n==="en"?e(t):i(t)}function qf(s){return s.numberingSystem&&s.numberingSystem!=="latn"?!1:s.numberingSystem==="latn"||!s.locale||s.locale.startsWith("en")||new Intl.DateTimeFormat(s.intl).resolvedOptions().numberingSystem==="latn"}var Fr=class{constructor(t,e,i){this.padTo=i.padTo||0,this.floor=i.floor||!1;let{padTo:n,floor:r,...o}=i;if(!e||Object.keys(o).length>0){let a={useGrouping:!1,...i};i.padTo>0&&(a.minimumIntegerDigits=i.padTo),this.inf=Vf(t,a)}}format(t){if(this.inf){let e=this.floor?Math.floor(t):t;return this.inf.format(e)}else{let e=this.floor?Math.floor(t):ss(t,3);return q(e,this.padTo)}}},Ar=class{constructor(t,e,i){this.opts=i,this.originalZone=void 0;let n;if(this.opts.timeZone)this.dt=t;else if(t.zone.type==="fixed"){let o=-1*(t.offset/60),a=o>=0?`Etc/GMT+${o}`:`Etc/GMT${o}`;t.offset!==0&&nt.create(a).valid?(n=a,this.dt=t):(n="UTC",this.dt=t.offset===0?t:t.setZone("UTC").plus({minutes:t.offset}),this.originalZone=t.zone)}else t.zone.type==="system"?this.dt=t:t.zone.type==="iana"?(this.dt=t,n=t.zone.name):(n="UTC",this.dt=t.setZone("UTC").plus({minutes:t.offset}),this.originalZone=t.zone);let r={...this.opts};r.timeZone=r.timeZone||n,this.dtf=Er(e,r)}format(){return this.originalZone?this.formatToParts().map(({value:t})=>t).join(""):this.dtf.format(this.dt.toJSDate())}formatToParts(){let t=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?t.map(e=>{if(e.type==="timeZoneName"){let i=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...e,value:i}}else return e}):t}resolvedOptions(){return this.dtf.resolvedOptions()}},Lr=class{constructor(t,e,i){this.opts={style:"long",...i},!e&&nn()&&(this.rtf=Hf(t,i))}format(t,e){return this.rtf?this.rtf.format(t,e):pl(e,t,this.opts.numeric,this.opts.style!=="long")}formatToParts(t,e){return this.rtf?this.rtf.formatToParts(t,e):[]}},Gf={firstDay:1,minimalDays:4,weekend:[6,7]},N=class{static fromOpts(t){return N.create(t.locale,t.numberingSystem,t.outputCalendar,t.weekSettings,t.defaultToEN)}static create(t,e,i,n,r=!1){let o=t||z.defaultLocale,a=o||(r?"en-US":Bf()),l=e||z.defaultNumberingSystem,c=i||z.defaultOutputCalendar,h=ri(n)||z.defaultWeekSettings;return new N(a,l,c,h,o)}static resetCache(){ni=null,Dr={},Ir={},Cr={}}static fromObject({locale:t,numberingSystem:e,outputCalendar:i,weekSettings:n}={}){return N.create(t,e,i,n)}constructor(t,e,i,n,r){let[o,a,l]=jf(t);this.locale=o,this.numberingSystem=e||a||null,this.outputCalendar=i||l||null,this.weekSettings=n,this.intl=Uf(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=r,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=qf(this)),this.fastNumbersCached}listingMode(){let t=this.isEnglish(),e=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return t&&e?"en":"intl"}clone(t){return!t||Object.getOwnPropertyNames(t).length===0?this:N.create(t.locale||this.specifiedLocale,t.numberingSystem||this.numberingSystem,t.outputCalendar||this.outputCalendar,ri(t.weekSettings)||this.weekSettings,t.defaultToEN||!1)}redefaultToEN(t={}){return this.clone({...t,defaultToEN:!0})}redefaultToSystem(t={}){return this.clone({...t,defaultToEN:!1})}months(t,e=!1){return sn(this,t,Pr,()=>{let i=e?{month:t,day:"numeric"}:{month:t},n=e?"format":"standalone";return this.monthsCache[n][t]||(this.monthsCache[n][t]=Yf(r=>this.extract(r,i,"month"))),this.monthsCache[n][t]})}weekdays(t,e=!1){return sn(this,t,Nr,()=>{let i=e?{weekday:t,year:"numeric",month:"long",day:"numeric"}:{weekday:t},n=e?"format":"standalone";return this.weekdaysCache[n][t]||(this.weekdaysCache[n][t]=Zf(r=>this.extract(r,i,"weekday"))),this.weekdaysCache[n][t]})}meridiems(){return sn(this,void 0,()=>Rr,()=>{if(!this.meridiemCache){let t={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[v.utc(2016,11,13,9),v.utc(2016,11,13,19)].map(e=>this.extract(e,t,"dayperiod"))}return this.meridiemCache})}eras(t){return sn(this,t,Wr,()=>{let e={era:t};return this.eraCache[t]||(this.eraCache[t]=[v.utc(-40,1,1),v.utc(2017,1,1)].map(i=>this.extract(i,e,"era"))),this.eraCache[t]})}extract(t,e,i){let n=this.dtFormatter(t,e),r=n.formatToParts(),o=r.find(a=>a.type.toLowerCase()===i);return o?o.value:null}numberFormatter(t={}){return new Fr(this.intl,t.forceSimple||this.fastNumbers,t)}dtFormatter(t,e={}){return new Ar(t,this.intl,e)}relFormatter(t={}){return new Lr(this.intl,this.isEnglish(),t)}listFormatter(t={}){return zf(this.intl,t)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}getWeekSettings(){return this.weekSettings?this.weekSettings:rn()?$f(this.locale):Gf}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(t){return this.locale===t.locale&&this.numberingSystem===t.numberingSystem&&this.outputCalendar===t.outputCalendar}};var Vr=null,G=class extends dt{static get utcInstance(){return Vr===null&&(Vr=new G(0)),Vr}static instance(t){return t===0?G.utcInstance:new G(t)}static parseSpecifier(t){if(t){let e=t.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(e)return new G(Se(e[1],e[2]))}return null}constructor(t){super(),this.fixed=t}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${le(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${le(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(t,e){return le(this.fixed,e)}get isUniversal(){return!0}offset(){return this.fixed}equals(t){return t.type==="fixed"&&t.fixed===this.fixed}get isValid(){return!0}};var is=class extends dt{constructor(t){super(),this.zoneName=t}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}};function Et(s,t){let e;if(D(s)||s===null)return t;if(s instanceof dt)return s;if(yl(s)){let i=s.toLowerCase();return i==="default"?t:i==="local"||i==="system"?Wt.instance:i==="utc"||i==="gmt"?G.utcInstance:G.parseSpecifier(i)||nt.create(s)}else return zt(s)?G.instance(s):typeof s=="object"&&"offset"in s&&typeof s.offset=="function"?s:new is(s)}var bl=()=>Date.now(),xl="system",_l=null,wl=null,Sl=null,kl=60,Ml,Tl=null,z=class{static get now(){return bl}static set now(t){bl=t}static set defaultZone(t){xl=t}static get defaultZone(){return Et(xl,Wt.instance)}static get defaultLocale(){return _l}static set defaultLocale(t){_l=t}static get defaultNumberingSystem(){return wl}static set defaultNumberingSystem(t){wl=t}static get defaultOutputCalendar(){return Sl}static set defaultOutputCalendar(t){Sl=t}static get defaultWeekSettings(){return Tl}static set defaultWeekSettings(t){Tl=ri(t)}static get twoDigitCutoffYear(){return kl}static set twoDigitCutoffYear(t){kl=t%100}static get throwOnInvalid(){return Ml}static set throwOnInvalid(t){Ml=t}static resetCaches(){N.resetCache(),nt.resetCache()}};var rt=class{constructor(t,e){this.reason=t,this.explanation=e}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}};var vl=[0,31,59,90,120,151,181,212,243,273,304,334],Ol=[0,31,60,91,121,152,182,213,244,274,305,335];function St(s,t){return new rt("unit out of range",`you specified ${t} (of type ${typeof t}) as a ${s}, which is invalid`)}function on(s,t,e){let i=new Date(Date.UTC(s,t-1,e));s<100&&s>=0&&i.setUTCFullYear(i.getUTCFullYear()-1900);let n=i.getUTCDay();return n===0?7:n}function Dl(s,t,e){return e+(Me(s)?Ol:vl)[t-1]}function El(s,t){let e=Me(s)?Ol:vl,i=e.findIndex(r=>rke(i,t,e)?(c=i+1,l=1):c=i,{weekYear:c,weekNumber:l,weekday:a,...li(s)}}function Hr(s,t=4,e=1){let{weekYear:i,weekNumber:n,weekday:r}=s,o=an(on(i,1,t),e),a=ce(i),l=n*7+r-o-7+t,c;l<1?(c=i-1,l+=ce(c)):l>a?(c=i+1,l-=ce(i)):c=i;let{month:h,day:u}=El(c,l);return{year:c,month:h,day:u,...li(s)}}function ln(s){let{year:t,month:e,day:i}=s,n=Dl(t,e,i);return{year:t,ordinal:n,...li(s)}}function Br(s){let{year:t,ordinal:e}=s,{month:i,day:n}=El(t,e);return{year:t,month:i,day:n,...li(s)}}function $r(s,t){if(!D(s.localWeekday)||!D(s.localWeekNumber)||!D(s.localWeekYear)){if(!D(s.weekday)||!D(s.weekNumber)||!D(s.weekYear))throw new vt("Cannot mix locale-based week fields with ISO-based week fields");return D(s.localWeekday)||(s.weekday=s.localWeekday),D(s.localWeekNumber)||(s.weekNumber=s.localWeekNumber),D(s.localWeekYear)||(s.weekYear=s.localWeekYear),delete s.localWeekday,delete s.localWeekNumber,delete s.localWeekYear,{minDaysInFirstWeek:t.getMinDaysInFirstWeek(),startOfWeek:t.getStartOfWeek()}}else return{minDaysInFirstWeek:4,startOfWeek:1}}function Il(s,t=4,e=1){let i=ai(s.weekYear),n=xt(s.weekNumber,1,ke(s.weekYear,t,e)),r=xt(s.weekday,1,7);return i?n?r?!1:St("weekday",s.weekday):St("week",s.weekNumber):St("weekYear",s.weekYear)}function Cl(s){let t=ai(s.year),e=xt(s.ordinal,1,ce(s.year));return t?e?!1:St("ordinal",s.ordinal):St("year",s.year)}function jr(s){let t=ai(s.year),e=xt(s.month,1,12),i=xt(s.day,1,ns(s.year,s.month));return t?e?i?!1:St("day",s.day):St("month",s.month):St("year",s.year)}function Ur(s){let{hour:t,minute:e,second:i,millisecond:n}=s,r=xt(t,0,23)||t===24&&e===0&&i===0&&n===0,o=xt(e,0,59),a=xt(i,0,59),l=xt(n,0,999);return r?o?a?l?!1:St("millisecond",n):St("second",i):St("minute",e):St("hour",t)}function D(s){return typeof s>"u"}function zt(s){return typeof s=="number"}function ai(s){return typeof s=="number"&&s%1===0}function yl(s){return typeof s=="string"}function Al(s){return Object.prototype.toString.call(s)==="[object Date]"}function nn(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function rn(){try{return typeof Intl<"u"&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch{return!1}}function Ll(s){return Array.isArray(s)?s:[s]}function Yr(s,t,e){if(s.length!==0)return s.reduce((i,n)=>{let r=[t(n),n];return i&&e(i[0],r[0])===i[0]?i:r},null)[1]}function Pl(s,t){return t.reduce((e,i)=>(e[i]=s[i],e),{})}function he(s,t){return Object.prototype.hasOwnProperty.call(s,t)}function ri(s){if(s==null)return null;if(typeof s!="object")throw new st("Week settings must be an object");if(!xt(s.firstDay,1,7)||!xt(s.minimalDays,1,7)||!Array.isArray(s.weekend)||s.weekend.some(t=>!xt(t,1,7)))throw new st("Invalid week settings");return{firstDay:s.firstDay,minimalDays:s.minimalDays,weekend:Array.from(s.weekend)}}function xt(s,t,e){return ai(s)&&s>=t&&s<=e}function Xf(s,t){return s-t*Math.floor(s/t)}function q(s,t=2){let e=s<0,i;return e?i="-"+(""+-s).padStart(t,"0"):i=(""+s).padStart(t,"0"),i}function qt(s){if(!(D(s)||s===null||s===""))return parseInt(s,10)}function ue(s){if(!(D(s)||s===null||s===""))return parseFloat(s)}function ci(s){if(!(D(s)||s===null||s==="")){let t=parseFloat("0."+s)*1e3;return Math.floor(t)}}function ss(s,t,e=!1){let i=10**t;return(e?Math.trunc:Math.round)(s*i)/i}function Me(s){return s%4===0&&(s%100!==0||s%400===0)}function ce(s){return Me(s)?366:365}function ns(s,t){let e=Xf(t-1,12)+1,i=s+(t-e)/12;return e===2?Me(i)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][e-1]}function es(s){let t=Date.UTC(s.year,s.month-1,s.day,s.hour,s.minute,s.second,s.millisecond);return s.year<100&&s.year>=0&&(t=new Date(t),t.setUTCFullYear(s.year,s.month-1,s.day)),+t}function Fl(s,t,e){return-an(on(s,1,t),e)+t-1}function ke(s,t=4,e=1){let i=Fl(s,t,e),n=Fl(s+1,t,e);return(ce(s)-i+n)/7}function hi(s){return s>99?s:s>z.twoDigitCutoffYear?1900+s:2e3+s}function Qi(s,t,e,i=null){let n=new Date(s),r={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};i&&(r.timeZone=i);let o={timeZoneName:t,...r},a=new Intl.DateTimeFormat(e,o).formatToParts(n).find(l=>l.type.toLowerCase()==="timezonename");return a?a.value:null}function Se(s,t){let e=parseInt(s,10);Number.isNaN(e)&&(e=0);let i=parseInt(t,10)||0,n=e<0||Object.is(e,-0)?-i:i;return e*60+n}function Zr(s){let t=Number(s);if(typeof s=="boolean"||s===""||Number.isNaN(t))throw new st(`Invalid unit value ${s}`);return t}function rs(s,t){let e={};for(let i in s)if(he(s,i)){let n=s[i];if(n==null)continue;e[t(i)]=Zr(n)}return e}function le(s,t){let e=Math.trunc(Math.abs(s/60)),i=Math.trunc(Math.abs(s%60)),n=s>=0?"+":"-";switch(t){case"short":return`${n}${q(e,2)}:${q(i,2)}`;case"narrow":return`${n}${e}${i>0?`:${i}`:""}`;case"techie":return`${n}${q(e,2)}${q(i,2)}`;default:throw new RangeError(`Value format ${t} is out of range for property format`)}}function li(s){return Pl(s,["hour","minute","second","millisecond"])}var Kf=["January","February","March","April","May","June","July","August","September","October","November","December"],qr=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Jf=["J","F","M","A","M","J","J","A","S","O","N","D"];function Pr(s){switch(s){case"narrow":return[...Jf];case"short":return[...qr];case"long":return[...Kf];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}var Gr=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],Xr=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],Qf=["M","T","W","T","F","S","S"];function Nr(s){switch(s){case"narrow":return[...Qf];case"short":return[...Xr];case"long":return[...Gr];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}var Rr=["AM","PM"],tm=["Before Christ","Anno Domini"],em=["BC","AD"],sm=["B","A"];function Wr(s){switch(s){case"narrow":return[...sm];case"short":return[...em];case"long":return[...tm];default:return null}}function Nl(s){return Rr[s.hour<12?0:1]}function Rl(s,t){return Nr(t)[s.weekday-1]}function Wl(s,t){return Pr(t)[s.month-1]}function zl(s,t){return Wr(t)[s.year<0?0:1]}function pl(s,t,e="always",i=!1){let n={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},r=["hours","minutes","seconds"].indexOf(s)===-1;if(e==="auto"&&r){let u=s==="days";switch(t){case 1:return u?"tomorrow":`next ${n[s][0]}`;case-1:return u?"yesterday":`last ${n[s][0]}`;case 0:return u?"today":`this ${n[s][0]}`;default:}}let o=Object.is(t,-0)||t<0,a=Math.abs(t),l=a===1,c=n[s],h=i?l?c[1]:c[2]||c[1]:l?n[s][0]:s;return o?`${a} ${h} ago`:`in ${a} ${h}`}function Vl(s,t){let e="";for(let i of s)i.literal?e+=i.val:e+=t(i.val);return e}var im={D:ae,DD:zs,DDD:Vs,DDDD:Hs,t:Bs,tt:$s,ttt:js,tttt:Us,T:Ys,TT:Zs,TTT:qs,TTTT:Gs,f:Xs,ff:Js,fff:ti,ffff:si,F:Ks,FF:Qs,FFF:ei,FFFF:ii},X=class{static create(t,e={}){return new X(t,e)}static parseFormat(t){let e=null,i="",n=!1,r=[];for(let o=0;o0&&r.push({literal:n||/^\s+$/.test(i),val:i}),e=null,i="",n=!n):n||a===e?i+=a:(i.length>0&&r.push({literal:/^\s+$/.test(i),val:i}),i=a,e=a)}return i.length>0&&r.push({literal:n||/^\s+$/.test(i),val:i}),r}static macroTokenToFormatOpts(t){return im[t]}constructor(t,e){this.opts=e,this.loc=t,this.systemLoc=null}formatWithSystemDefault(t,e){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(t,{...this.opts,...e}).format()}dtFormatter(t,e={}){return this.loc.dtFormatter(t,{...this.opts,...e})}formatDateTime(t,e){return this.dtFormatter(t,e).format()}formatDateTimeParts(t,e){return this.dtFormatter(t,e).formatToParts()}formatInterval(t,e){return this.dtFormatter(t.start,e).dtf.formatRange(t.start.toJSDate(),t.end.toJSDate())}resolvedOptions(t,e){return this.dtFormatter(t,e).resolvedOptions()}num(t,e=0){if(this.opts.forceSimple)return q(t,e);let i={...this.opts};return e>0&&(i.padTo=e),this.loc.numberFormatter(i).format(t)}formatDateTimeFromString(t,e){let i=this.loc.listingMode()==="en",n=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",r=(f,m)=>this.loc.extract(t,f,m),o=f=>t.isOffsetFixed&&t.offset===0&&f.allowZ?"Z":t.isValid?t.zone.formatOffset(t.ts,f.format):"",a=()=>i?Nl(t):r({hour:"numeric",hourCycle:"h12"},"dayperiod"),l=(f,m)=>i?Wl(t,f):r(m?{month:f}:{month:f,day:"numeric"},"month"),c=(f,m)=>i?Rl(t,f):r(m?{weekday:f}:{weekday:f,month:"long",day:"numeric"},"weekday"),h=f=>{let m=X.macroTokenToFormatOpts(f);return m?this.formatWithSystemDefault(t,m):f},u=f=>i?zl(t,f):r({era:f},"era"),d=f=>{switch(f){case"S":return this.num(t.millisecond);case"u":case"SSS":return this.num(t.millisecond,3);case"s":return this.num(t.second);case"ss":return this.num(t.second,2);case"uu":return this.num(Math.floor(t.millisecond/10),2);case"uuu":return this.num(Math.floor(t.millisecond/100));case"m":return this.num(t.minute);case"mm":return this.num(t.minute,2);case"h":return this.num(t.hour%12===0?12:t.hour%12);case"hh":return this.num(t.hour%12===0?12:t.hour%12,2);case"H":return this.num(t.hour);case"HH":return this.num(t.hour,2);case"Z":return o({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return o({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return o({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return t.zone.offsetName(t.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return t.zone.offsetName(t.ts,{format:"long",locale:this.loc.locale});case"z":return t.zoneName;case"a":return a();case"d":return n?r({day:"numeric"},"day"):this.num(t.day);case"dd":return n?r({day:"2-digit"},"day"):this.num(t.day,2);case"c":return this.num(t.weekday);case"ccc":return c("short",!0);case"cccc":return c("long",!0);case"ccccc":return c("narrow",!0);case"E":return this.num(t.weekday);case"EEE":return c("short",!1);case"EEEE":return c("long",!1);case"EEEEE":return c("narrow",!1);case"L":return n?r({month:"numeric",day:"numeric"},"month"):this.num(t.month);case"LL":return n?r({month:"2-digit",day:"numeric"},"month"):this.num(t.month,2);case"LLL":return l("short",!0);case"LLLL":return l("long",!0);case"LLLLL":return l("narrow",!0);case"M":return n?r({month:"numeric"},"month"):this.num(t.month);case"MM":return n?r({month:"2-digit"},"month"):this.num(t.month,2);case"MMM":return l("short",!1);case"MMMM":return l("long",!1);case"MMMMM":return l("narrow",!1);case"y":return n?r({year:"numeric"},"year"):this.num(t.year);case"yy":return n?r({year:"2-digit"},"year"):this.num(t.year.toString().slice(-2),2);case"yyyy":return n?r({year:"numeric"},"year"):this.num(t.year,4);case"yyyyyy":return n?r({year:"numeric"},"year"):this.num(t.year,6);case"G":return u("short");case"GG":return u("long");case"GGGGG":return u("narrow");case"kk":return this.num(t.weekYear.toString().slice(-2),2);case"kkkk":return this.num(t.weekYear,4);case"W":return this.num(t.weekNumber);case"WW":return this.num(t.weekNumber,2);case"n":return this.num(t.localWeekNumber);case"nn":return this.num(t.localWeekNumber,2);case"ii":return this.num(t.localWeekYear.toString().slice(-2),2);case"iiii":return this.num(t.localWeekYear,4);case"o":return this.num(t.ordinal);case"ooo":return this.num(t.ordinal,3);case"q":return this.num(t.quarter);case"qq":return this.num(t.quarter,2);case"X":return this.num(Math.floor(t.ts/1e3));case"x":return this.num(t.ts);default:return h(f)}};return Vl(X.parseFormat(e),d)}formatDurationFromString(t,e){let i=l=>{switch(l[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},n=l=>c=>{let h=i(c);return h?this.num(l.get(h),c.length):c},r=X.parseFormat(e),o=r.reduce((l,{literal:c,val:h})=>c?l:l.concat(h),[]),a=t.shiftTo(...o.map(i).filter(l=>l));return Vl(r,n(a))}};var Bl=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function as(...s){let t=s.reduce((e,i)=>e+i.source,"");return RegExp(`^${t}$`)}function ls(...s){return t=>s.reduce(([e,i,n],r)=>{let[o,a,l]=r(t,n);return[{...e,...o},a||i,l]},[{},null,1]).slice(0,2)}function cs(s,...t){if(s==null)return[null,null];for(let[e,i]of t){let n=e.exec(s);if(n)return i(n)}return[null,null]}function $l(...s){return(t,e)=>{let i={},n;for(n=0;nf!==void 0&&(m||f&&h)?-f:f;return[{years:d(ue(e)),months:d(ue(i)),weeks:d(ue(n)),days:d(ue(r)),hours:d(ue(o)),minutes:d(ue(a)),seconds:d(ue(l),l==="-0"),milliseconds:d(ci(c),u)}]}var pm={GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function Qr(s,t,e,i,n,r,o){let a={year:t.length===2?hi(qt(t)):qt(t),month:qr.indexOf(e)+1,day:qt(i),hour:qt(n),minute:qt(r)};return o&&(a.second=qt(o)),s&&(a.weekday=s.length>3?Gr.indexOf(s)+1:Xr.indexOf(s)+1),a}var ym=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function bm(s){let[,t,e,i,n,r,o,a,l,c,h,u]=s,d=Qr(t,n,i,e,r,o,a),f;return l?f=pm[l]:c?f=0:f=Se(h,u),[d,new G(f)]}function xm(s){return s.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}var _m=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,wm=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,Sm=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function Hl(s){let[,t,e,i,n,r,o,a]=s;return[Qr(t,n,i,e,r,o,a),G.utcInstance]}function km(s){let[,t,e,i,n,r,o,a]=s;return[Qr(t,a,e,i,n,r,o),G.utcInstance]}var Mm=as(rm,Jr),Tm=as(om,Jr),vm=as(am,Jr),Om=as(Ul),Zl=ls(dm,hs,ui,di),Dm=ls(lm,hs,ui,di),Em=ls(cm,hs,ui,di),Im=ls(hs,ui,di);function ql(s){return cs(s,[Mm,Zl],[Tm,Dm],[vm,Em],[Om,Im])}function Gl(s){return cs(xm(s),[ym,bm])}function Xl(s){return cs(s,[_m,Hl],[wm,Hl],[Sm,km])}function Kl(s){return cs(s,[mm,gm])}var Cm=ls(hs);function Jl(s){return cs(s,[fm,Cm])}var Fm=as(hm,um),Am=as(Yl),Lm=ls(hs,ui,di);function Ql(s){return cs(s,[Fm,Zl],[Am,Lm])}var tc="Invalid Duration",sc={weeks:{days:7,hours:7*24,minutes:7*24*60,seconds:7*24*60*60,milliseconds:7*24*60*60*1e3},days:{hours:24,minutes:24*60,seconds:24*60*60,milliseconds:24*60*60*1e3},hours:{minutes:60,seconds:60*60,milliseconds:60*60*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},Pm={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:91*24,minutes:91*24*60,seconds:91*24*60*60,milliseconds:91*24*60*60*1e3},months:{weeks:4,days:30,hours:30*24,minutes:30*24*60,seconds:30*24*60*60,milliseconds:30*24*60*60*1e3},...sc},kt=146097/400,us=146097/4800,Nm={years:{quarters:4,months:12,weeks:kt/7,days:kt,hours:kt*24,minutes:kt*24*60,seconds:kt*24*60*60,milliseconds:kt*24*60*60*1e3},quarters:{months:3,weeks:kt/28,days:kt/4,hours:kt*24/4,minutes:kt*24*60/4,seconds:kt*24*60*60/4,milliseconds:kt*24*60*60*1e3/4},months:{weeks:us/7,days:us,hours:us*24,minutes:us*24*60,seconds:us*24*60*60,milliseconds:us*24*60*60*1e3},...sc},Te=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],Rm=Te.slice(0).reverse();function de(s,t,e=!1){let i={values:e?t.values:{...s.values,...t.values||{}},loc:s.loc.clone(t.loc),conversionAccuracy:t.conversionAccuracy||s.conversionAccuracy,matrix:t.matrix||s.matrix};return new C(i)}function ic(s,t){let e=t.milliseconds??0;for(let i of Rm.slice(1))t[i]&&(e+=t[i]*s[i].milliseconds);return e}function ec(s,t){let e=ic(s,t)<0?-1:1;Te.reduceRight((i,n)=>{if(D(t[n]))return i;if(i){let r=t[i]*e,o=s[n][i],a=Math.floor(r/o);t[n]+=a*e,t[i]-=a*o*e}return n},null),Te.reduce((i,n)=>{if(D(t[n]))return i;if(i){let r=t[i]%1;t[i]-=r,t[n]+=r*s[i][n]}return n},null)}function Wm(s){let t={};for(let[e,i]of Object.entries(s))i!==0&&(t[e]=i);return t}var C=class{constructor(t){let e=t.conversionAccuracy==="longterm"||!1,i=e?Nm:Pm;t.matrix&&(i=t.matrix),this.values=t.values,this.loc=t.loc||N.create(),this.conversionAccuracy=e?"longterm":"casual",this.invalid=t.invalid||null,this.matrix=i,this.isLuxonDuration=!0}static fromMillis(t,e){return C.fromObject({milliseconds:t},e)}static fromObject(t,e={}){if(t==null||typeof t!="object")throw new st(`Duration.fromObject: argument expected to be an object, got ${t===null?"null":typeof t}`);return new C({values:rs(t,C.normalizeUnit),loc:N.fromObject(e),conversionAccuracy:e.conversionAccuracy,matrix:e.matrix})}static fromDurationLike(t){if(zt(t))return C.fromMillis(t);if(C.isDuration(t))return t;if(typeof t=="object")return C.fromObject(t);throw new st(`Unknown duration argument ${t} of type ${typeof t}`)}static fromISO(t,e){let[i]=Kl(t);return i?C.fromObject(i,e):C.invalid("unparsable",`the input "${t}" can't be parsed as ISO 8601`)}static fromISOTime(t,e){let[i]=Jl(t);return i?C.fromObject(i,e):C.invalid("unparsable",`the input "${t}" can't be parsed as ISO 8601`)}static invalid(t,e=null){if(!t)throw new st("need to specify a reason the Duration is invalid");let i=t instanceof rt?t:new rt(t,e);if(z.throwOnInvalid)throw new Ki(i);return new C({invalid:i})}static normalizeUnit(t){let e={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[t&&t.toLowerCase()];if(!e)throw new ts(t);return e}static isDuration(t){return t&&t.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(t,e={}){let i={...e,floor:e.round!==!1&&e.floor!==!1};return this.isValid?X.create(this.loc,i).formatDurationFromString(this,t):tc}toHuman(t={}){if(!this.isValid)return tc;let e=Te.map(i=>{let n=this.values[i];return D(n)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...t,unit:i.slice(0,-1)}).format(n)}).filter(i=>i);return this.loc.listFormatter({type:"conjunction",style:t.listStyle||"narrow",...t}).format(e)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let t="P";return this.years!==0&&(t+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(t+=this.months+this.quarters*3+"M"),this.weeks!==0&&(t+=this.weeks+"W"),this.days!==0&&(t+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(t+="T"),this.hours!==0&&(t+=this.hours+"H"),this.minutes!==0&&(t+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(t+=ss(this.seconds+this.milliseconds/1e3,3)+"S"),t==="P"&&(t+="T0S"),t}toISOTime(t={}){if(!this.isValid)return null;let e=this.toMillis();return e<0||e>=864e5?null:(t={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...t,includeOffset:!1},v.fromMillis(e,{zone:"UTC"}).toISOTime(t))}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?ic(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(t){if(!this.isValid)return this;let e=C.fromDurationLike(t),i={};for(let n of Te)(he(e.values,n)||he(this.values,n))&&(i[n]=e.get(n)+this.get(n));return de(this,{values:i},!0)}minus(t){if(!this.isValid)return this;let e=C.fromDurationLike(t);return this.plus(e.negate())}mapUnits(t){if(!this.isValid)return this;let e={};for(let i of Object.keys(this.values))e[i]=Zr(t(this.values[i],i));return de(this,{values:e},!0)}get(t){return this[C.normalizeUnit(t)]}set(t){if(!this.isValid)return this;let e={...this.values,...rs(t,C.normalizeUnit)};return de(this,{values:e})}reconfigure({locale:t,numberingSystem:e,conversionAccuracy:i,matrix:n}={}){let o={loc:this.loc.clone({locale:t,numberingSystem:e}),matrix:n,conversionAccuracy:i};return de(this,o)}as(t){return this.isValid?this.shiftTo(t).get(t):NaN}normalize(){if(!this.isValid)return this;let t=this.toObject();return ec(this.matrix,t),de(this,{values:t},!0)}rescale(){if(!this.isValid)return this;let t=Wm(this.normalize().shiftToAll().toObject());return de(this,{values:t},!0)}shiftTo(...t){if(!this.isValid)return this;if(t.length===0)return this;t=t.map(o=>C.normalizeUnit(o));let e={},i={},n=this.toObject(),r;for(let o of Te)if(t.indexOf(o)>=0){r=o;let a=0;for(let c in i)a+=this.matrix[c][o]*i[c],i[c]=0;zt(n[o])&&(a+=n[o]);let l=Math.trunc(a);e[o]=l,i[o]=(a*1e3-l*1e3)/1e3}else zt(n[o])&&(i[o]=n[o]);for(let o in i)i[o]!==0&&(e[r]+=o===r?i[o]:i[o]/this.matrix[r][o]);return ec(this.matrix,e),de(this,{values:e},!0)}shiftToAll(){return this.isValid?this.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds"):this}negate(){if(!this.isValid)return this;let t={};for(let e of Object.keys(this.values))t[e]=this.values[e]===0?0:-this.values[e];return de(this,{values:t},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(t){if(!this.isValid||!t.isValid||!this.loc.equals(t.loc))return!1;function e(i,n){return i===void 0||i===0?n===void 0||n===0:i===n}for(let i of Te)if(!e(this.values[i],t.values[i]))return!1;return!0}};var ds="Invalid Interval";function zm(s,t){return!s||!s.isValid?U.invalid("missing or invalid start"):!t||!t.isValid?U.invalid("missing or invalid end"):tt:!1}isBefore(t){return this.isValid?this.e<=t:!1}contains(t){return this.isValid?this.s<=t&&this.e>t:!1}set({start:t,end:e}={}){return this.isValid?U.fromDateTimes(t||this.s,e||this.e):this}splitAt(...t){if(!this.isValid)return[];let e=t.map(fs).filter(o=>this.contains(o)).sort((o,a)=>o.toMillis()-a.toMillis()),i=[],{s:n}=this,r=0;for(;n+this.e?this.e:o;i.push(U.fromDateTimes(n,a)),n=a,r+=1}return i}splitBy(t){let e=C.fromDurationLike(t);if(!this.isValid||!e.isValid||e.as("milliseconds")===0)return[];let{s:i}=this,n=1,r,o=[];for(;il*n));r=+a>+this.e?this.e:a,o.push(U.fromDateTimes(i,r)),i=r,n+=1}return o}divideEqually(t){return this.isValid?this.splitBy(this.length()/t).slice(0,t):[]}overlaps(t){return this.e>t.s&&this.s=t.e:!1}equals(t){return!this.isValid||!t.isValid?!1:this.s.equals(t.s)&&this.e.equals(t.e)}intersection(t){if(!this.isValid)return this;let e=this.s>t.s?this.s:t.s,i=this.e=i?null:U.fromDateTimes(e,i)}union(t){if(!this.isValid)return this;let e=this.st.e?this.e:t.e;return U.fromDateTimes(e,i)}static merge(t){let[e,i]=t.sort((n,r)=>n.s-r.s).reduce(([n,r],o)=>r?r.overlaps(o)||r.abutsStart(o)?[n,r.union(o)]:[n.concat([r]),o]:[n,o],[[],null]);return i&&e.push(i),e}static xor(t){let e=null,i=0,n=[],r=t.map(l=>[{time:l.s,type:"s"},{time:l.e,type:"e"}]),o=Array.prototype.concat(...r),a=o.sort((l,c)=>l.time-c.time);for(let l of a)i+=l.type==="s"?1:-1,i===1?e=l.time:(e&&+e!=+l.time&&n.push(U.fromDateTimes(e,l.time)),e=null);return U.merge(n)}difference(...t){return U.xor([this].concat(t)).map(e=>this.intersection(e)).filter(e=>e&&!e.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} \u2013 ${this.e.toISO()})`:ds}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`:`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(t=ae,e={}){return this.isValid?X.create(this.s.loc.clone(e),t).formatInterval(this):ds}toISO(t){return this.isValid?`${this.s.toISO(t)}/${this.e.toISO(t)}`:ds}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:ds}toISOTime(t){return this.isValid?`${this.s.toISOTime(t)}/${this.e.toISOTime(t)}`:ds}toFormat(t,{separator:e=" \u2013 "}={}){return this.isValid?`${this.s.toFormat(t)}${e}${this.e.toFormat(t)}`:ds}toDuration(t,e){return this.isValid?this.e.diff(this.s,t,e):C.invalid(this.invalidReason)}mapEndpoints(t){return U.fromDateTimes(t(this.s),t(this.e))}};var Gt=class{static hasDST(t=z.defaultZone){let e=v.now().setZone(t).set({month:12});return!t.isUniversal&&e.offset!==e.set({month:6}).offset}static isValidIANAZone(t){return nt.isValidZone(t)}static normalizeZone(t){return Et(t,z.defaultZone)}static getStartOfWeek({locale:t=null,locObj:e=null}={}){return(e||N.create(t)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:t=null,locObj:e=null}={}){return(e||N.create(t)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:t=null,locObj:e=null}={}){return(e||N.create(t)).getWeekendDays().slice()}static months(t="long",{locale:e=null,numberingSystem:i=null,locObj:n=null,outputCalendar:r="gregory"}={}){return(n||N.create(e,i,r)).months(t)}static monthsFormat(t="long",{locale:e=null,numberingSystem:i=null,locObj:n=null,outputCalendar:r="gregory"}={}){return(n||N.create(e,i,r)).months(t,!0)}static weekdays(t="long",{locale:e=null,numberingSystem:i=null,locObj:n=null}={}){return(n||N.create(e,i,null)).weekdays(t)}static weekdaysFormat(t="long",{locale:e=null,numberingSystem:i=null,locObj:n=null}={}){return(n||N.create(e,i,null)).weekdays(t,!0)}static meridiems({locale:t=null}={}){return N.create(t).meridiems()}static eras(t="short",{locale:e=null}={}){return N.create(e,null,"gregory").eras(t)}static features(){return{relative:nn(),localeWeek:rn()}}};function nc(s,t){let e=n=>n.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),i=e(t)-e(s);return Math.floor(C.fromMillis(i).as("days"))}function Vm(s,t,e){let i=[["years",(l,c)=>c.year-l.year],["quarters",(l,c)=>c.quarter-l.quarter+(c.year-l.year)*4],["months",(l,c)=>c.month-l.month+(c.year-l.year)*12],["weeks",(l,c)=>{let h=nc(l,c);return(h-h%7)/7}],["days",nc]],n={},r=s,o,a;for(let[l,c]of i)e.indexOf(l)>=0&&(o=l,n[l]=c(s,t),a=r.plus(n),a>t?(n[l]--,s=r.plus(n),s>t&&(a=s,n[l]--,s=r.plus(n))):s=a);return[s,n,a,o]}function rc(s,t,e,i){let[n,r,o,a]=Vm(s,t,e),l=t-n,c=e.filter(u=>["hours","minutes","seconds","milliseconds"].indexOf(u)>=0);c.length===0&&(o0?C.fromMillis(l,i).shiftTo(...c).plus(h):h}var to={arab:"[\u0660-\u0669]",arabext:"[\u06F0-\u06F9]",bali:"[\u1B50-\u1B59]",beng:"[\u09E6-\u09EF]",deva:"[\u0966-\u096F]",fullwide:"[\uFF10-\uFF19]",gujr:"[\u0AE6-\u0AEF]",hanidec:"[\u3007|\u4E00|\u4E8C|\u4E09|\u56DB|\u4E94|\u516D|\u4E03|\u516B|\u4E5D]",khmr:"[\u17E0-\u17E9]",knda:"[\u0CE6-\u0CEF]",laoo:"[\u0ED0-\u0ED9]",limb:"[\u1946-\u194F]",mlym:"[\u0D66-\u0D6F]",mong:"[\u1810-\u1819]",mymr:"[\u1040-\u1049]",orya:"[\u0B66-\u0B6F]",tamldec:"[\u0BE6-\u0BEF]",telu:"[\u0C66-\u0C6F]",thai:"[\u0E50-\u0E59]",tibt:"[\u0F20-\u0F29]",latn:"\\d"},oc={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},Hm=to.hanidec.replace(/[\[|\]]/g,"").split("");function ac(s){let t=parseInt(s,10);if(isNaN(t)){t="";for(let e=0;e=r&&i<=o&&(t+=i-r)}}return parseInt(t,10)}else return t}function Mt({numberingSystem:s},t=""){return new RegExp(`${to[s||"latn"]}${t}`)}var Bm="missing Intl.DateTimeFormat.formatToParts support";function V(s,t=e=>e){return{regex:s,deser:([e])=>t(ac(e))}}var $m=String.fromCharCode(160),hc=`[ ${$m}]`,uc=new RegExp(hc,"g");function jm(s){return s.replace(/\./g,"\\.?").replace(uc,hc)}function lc(s){return s.replace(/\./g,"").replace(uc," ").toLowerCase()}function It(s,t){return s===null?null:{regex:RegExp(s.map(jm).join("|")),deser:([e])=>s.findIndex(i=>lc(e)===lc(i))+t}}function cc(s,t){return{regex:s,deser:([,e,i])=>Se(e,i),groups:t}}function cn(s){return{regex:s,deser:([t])=>t}}function Um(s){return s.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function Ym(s,t){let e=Mt(t),i=Mt(t,"{2}"),n=Mt(t,"{3}"),r=Mt(t,"{4}"),o=Mt(t,"{6}"),a=Mt(t,"{1,2}"),l=Mt(t,"{1,3}"),c=Mt(t,"{1,6}"),h=Mt(t,"{1,9}"),u=Mt(t,"{2,4}"),d=Mt(t,"{4,6}"),f=p=>({regex:RegExp(Um(p.val)),deser:([y])=>y,literal:!0}),g=(p=>{if(s.literal)return f(p);switch(p.val){case"G":return It(t.eras("short"),0);case"GG":return It(t.eras("long"),0);case"y":return V(c);case"yy":return V(u,hi);case"yyyy":return V(r);case"yyyyy":return V(d);case"yyyyyy":return V(o);case"M":return V(a);case"MM":return V(i);case"MMM":return It(t.months("short",!0),1);case"MMMM":return It(t.months("long",!0),1);case"L":return V(a);case"LL":return V(i);case"LLL":return It(t.months("short",!1),1);case"LLLL":return It(t.months("long",!1),1);case"d":return V(a);case"dd":return V(i);case"o":return V(l);case"ooo":return V(n);case"HH":return V(i);case"H":return V(a);case"hh":return V(i);case"h":return V(a);case"mm":return V(i);case"m":return V(a);case"q":return V(a);case"qq":return V(i);case"s":return V(a);case"ss":return V(i);case"S":return V(l);case"SSS":return V(n);case"u":return cn(h);case"uu":return cn(a);case"uuu":return V(e);case"a":return It(t.meridiems(),0);case"kkkk":return V(r);case"kk":return V(u,hi);case"W":return V(a);case"WW":return V(i);case"E":case"c":return V(e);case"EEE":return It(t.weekdays("short",!1),1);case"EEEE":return It(t.weekdays("long",!1),1);case"ccc":return It(t.weekdays("short",!0),1);case"cccc":return It(t.weekdays("long",!0),1);case"Z":case"ZZ":return cc(new RegExp(`([+-]${a.source})(?::(${i.source}))?`),2);case"ZZZ":return cc(new RegExp(`([+-]${a.source})(${i.source})?`),2);case"z":return cn(/[a-z_+-/]{1,256}?/i);case" ":return cn(/[^\S\n\r]/);default:return f(p)}})(s)||{invalidReason:Bm};return g.token=s,g}var Zm={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour12:{numeric:"h","2-digit":"hh"},hour24:{numeric:"H","2-digit":"HH"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};function qm(s,t,e){let{type:i,value:n}=s;if(i==="literal"){let l=/^\s+$/.test(n);return{literal:!l,val:l?" ":n}}let r=t[i],o=i;i==="hour"&&(t.hour12!=null?o=t.hour12?"hour12":"hour24":t.hourCycle!=null?t.hourCycle==="h11"||t.hourCycle==="h12"?o="hour12":o="hour24":o=e.hour12?"hour12":"hour24");let a=Zm[o];if(typeof a=="object"&&(a=a[r]),a)return{literal:!1,val:a}}function Gm(s){return[`^${s.map(e=>e.regex).reduce((e,i)=>`${e}(${i.source})`,"")}$`,s]}function Xm(s,t,e){let i=s.match(t);if(i){let n={},r=1;for(let o in e)if(he(e,o)){let a=e[o],l=a.groups?a.groups+1:1;!a.literal&&a.token&&(n[a.token.val[0]]=a.deser(i.slice(r,r+l))),r+=l}return[i,n]}else return[i,{}]}function Km(s){let t=r=>{switch(r){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}},e=null,i;return D(s.z)||(e=nt.create(s.z)),D(s.Z)||(e||(e=new G(s.Z)),i=s.Z),D(s.q)||(s.M=(s.q-1)*3+1),D(s.h)||(s.h<12&&s.a===1?s.h+=12:s.h===12&&s.a===0&&(s.h=0)),s.G===0&&s.y&&(s.y=-s.y),D(s.u)||(s.S=ci(s.u)),[Object.keys(s).reduce((r,o)=>{let a=t(o);return a&&(r[a]=s[o]),r},{}),e,i]}var eo=null;function Jm(){return eo||(eo=v.fromMillis(1555555555555)),eo}function Qm(s,t){if(s.literal)return s;let e=X.macroTokenToFormatOpts(s.val),i=no(e,t);return i==null||i.includes(void 0)?s:i}function so(s,t){return Array.prototype.concat(...s.map(e=>Qm(e,t)))}function io(s,t,e){let i=so(X.parseFormat(e),s),n=i.map(o=>Ym(o,s)),r=n.find(o=>o.invalidReason);if(r)return{input:t,tokens:i,invalidReason:r.invalidReason};{let[o,a]=Gm(n),l=RegExp(o,"i"),[c,h]=Xm(t,l,a),[u,d,f]=h?Km(h):[null,null,void 0];if(he(h,"a")&&he(h,"H"))throw new vt("Can't include meridiem when specifying 24-hour format");return{input:t,tokens:i,regex:l,rawMatches:c,matches:h,result:u,zone:d,specificOffset:f}}}function dc(s,t,e){let{result:i,zone:n,specificOffset:r,invalidReason:o}=io(s,t,e);return[i,n,r,o]}function no(s,t){if(!s)return null;let i=X.create(t,s).dtFormatter(Jm()),n=i.formatToParts(),r=i.resolvedOptions();return n.map(o=>qm(o,s,r))}var ro="Invalid DateTime",fc=864e13;function hn(s){return new rt("unsupported zone",`the zone "${s.name}" is not supported`)}function oo(s){return s.weekData===null&&(s.weekData=oi(s.c)),s.weekData}function ao(s){return s.localWeekData===null&&(s.localWeekData=oi(s.c,s.loc.getMinDaysInFirstWeek(),s.loc.getStartOfWeek())),s.localWeekData}function ve(s,t){let e={ts:s.ts,zone:s.zone,c:s.c,o:s.o,loc:s.loc,invalid:s.invalid};return new v({...e,...t,old:e})}function _c(s,t,e){let i=s-t*60*1e3,n=e.offset(i);if(t===n)return[i,t];i-=(n-t)*60*1e3;let r=e.offset(i);return n===r?[i,n]:[s-Math.min(n,r)*60*1e3,Math.max(n,r)]}function un(s,t){s+=t*60*1e3;let e=new Date(s);return{year:e.getUTCFullYear(),month:e.getUTCMonth()+1,day:e.getUTCDate(),hour:e.getUTCHours(),minute:e.getUTCMinutes(),second:e.getUTCSeconds(),millisecond:e.getUTCMilliseconds()}}function fn(s,t,e){return _c(es(s),t,e)}function mc(s,t){let e=s.o,i=s.c.year+Math.trunc(t.years),n=s.c.month+Math.trunc(t.months)+Math.trunc(t.quarters)*3,r={...s.c,year:i,month:n,day:Math.min(s.c.day,ns(i,n))+Math.trunc(t.days)+Math.trunc(t.weeks)*7},o=C.fromObject({years:t.years-Math.trunc(t.years),quarters:t.quarters-Math.trunc(t.quarters),months:t.months-Math.trunc(t.months),weeks:t.weeks-Math.trunc(t.weeks),days:t.days-Math.trunc(t.days),hours:t.hours,minutes:t.minutes,seconds:t.seconds,milliseconds:t.milliseconds}).as("milliseconds"),a=es(r),[l,c]=_c(a,e,s.zone);return o!==0&&(l+=o,c=s.zone.offset(l)),{ts:l,o:c}}function fi(s,t,e,i,n,r){let{setZone:o,zone:a}=e;if(s&&Object.keys(s).length!==0||t){let l=t||a,c=v.fromObject(s,{...e,zone:l,specificOffset:r});return o?c:c.setZone(a)}else return v.invalid(new rt("unparsable",`the input "${n}" can't be parsed as ${i}`))}function dn(s,t,e=!0){return s.isValid?X.create(N.create("en-US"),{allowZ:e,forceSimple:!0}).formatDateTimeFromString(s,t):null}function lo(s,t){let e=s.c.year>9999||s.c.year<0,i="";return e&&s.c.year>=0&&(i+="+"),i+=q(s.c.year,e?6:4),t?(i+="-",i+=q(s.c.month),i+="-",i+=q(s.c.day)):(i+=q(s.c.month),i+=q(s.c.day)),i}function gc(s,t,e,i,n,r){let o=q(s.c.hour);return t?(o+=":",o+=q(s.c.minute),(s.c.millisecond!==0||s.c.second!==0||!e)&&(o+=":")):o+=q(s.c.minute),(s.c.millisecond!==0||s.c.second!==0||!e)&&(o+=q(s.c.second),(s.c.millisecond!==0||!i)&&(o+=".",o+=q(s.c.millisecond,3))),n&&(s.isOffsetFixed&&s.offset===0&&!r?o+="Z":s.o<0?(o+="-",o+=q(Math.trunc(-s.o/60)),o+=":",o+=q(Math.trunc(-s.o%60))):(o+="+",o+=q(Math.trunc(s.o/60)),o+=":",o+=q(Math.trunc(s.o%60)))),r&&(o+="["+s.zone.ianaName+"]"),o}var wc={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},tg={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},eg={ordinal:1,hour:0,minute:0,second:0,millisecond:0},Sc=["year","month","day","hour","minute","second","millisecond"],sg=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],ig=["year","ordinal","hour","minute","second","millisecond"];function ng(s){let t={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[s.toLowerCase()];if(!t)throw new ts(s);return t}function pc(s){switch(s.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return ng(s)}}function yc(s,t){let e=Et(t.zone,z.defaultZone),i=N.fromObject(t),n=z.now(),r,o;if(D(s.year))r=n;else{for(let c of Sc)D(s[c])&&(s[c]=wc[c]);let a=jr(s)||Ur(s);if(a)return v.invalid(a);let l=e.offset(n);[r,o]=fn(s,l,e)}return new v({ts:r,zone:e,loc:i,o})}function bc(s,t,e){let i=D(e.round)?!0:e.round,n=(o,a)=>(o=ss(o,i||e.calendary?0:2,!0),t.loc.clone(e).relFormatter(e).format(o,a)),r=o=>e.calendary?t.hasSame(s,o)?0:t.startOf(o).diff(s.startOf(o),o).get(o):t.diff(s,o).get(o);if(e.unit)return n(r(e.unit),e.unit);for(let o of e.units){let a=r(o);if(Math.abs(a)>=1)return n(a,o)}return n(s>t?-0:0,e.units[e.units.length-1])}function xc(s){let t={},e;return s.length>0&&typeof s[s.length-1]=="object"?(t=s[s.length-1],e=Array.from(s).slice(0,s.length-1)):e=Array.from(s),[t,e]}var v=class{constructor(t){let e=t.zone||z.defaultZone,i=t.invalid||(Number.isNaN(t.ts)?new rt("invalid input"):null)||(e.isValid?null:hn(e));this.ts=D(t.ts)?z.now():t.ts;let n=null,r=null;if(!i)if(t.old&&t.old.ts===this.ts&&t.old.zone.equals(e))[n,r]=[t.old.c,t.old.o];else{let a=e.offset(this.ts);n=un(this.ts,a),i=Number.isNaN(n.year)?new rt("invalid input"):null,n=i?null:n,r=i?null:a}this._zone=e,this.loc=t.loc||N.create(),this.invalid=i,this.weekData=null,this.localWeekData=null,this.c=n,this.o=r,this.isLuxonDateTime=!0}static now(){return new v({})}static local(){let[t,e]=xc(arguments),[i,n,r,o,a,l,c]=e;return yc({year:i,month:n,day:r,hour:o,minute:a,second:l,millisecond:c},t)}static utc(){let[t,e]=xc(arguments),[i,n,r,o,a,l,c]=e;return t.zone=G.utcInstance,yc({year:i,month:n,day:r,hour:o,minute:a,second:l,millisecond:c},t)}static fromJSDate(t,e={}){let i=Al(t)?t.valueOf():NaN;if(Number.isNaN(i))return v.invalid("invalid input");let n=Et(e.zone,z.defaultZone);return n.isValid?new v({ts:i,zone:n,loc:N.fromObject(e)}):v.invalid(hn(n))}static fromMillis(t,e={}){if(zt(t))return t<-fc||t>fc?v.invalid("Timestamp out of range"):new v({ts:t,zone:Et(e.zone,z.defaultZone),loc:N.fromObject(e)});throw new st(`fromMillis requires a numerical input, but received a ${typeof t} with value ${t}`)}static fromSeconds(t,e={}){if(zt(t))return new v({ts:t*1e3,zone:Et(e.zone,z.defaultZone),loc:N.fromObject(e)});throw new st("fromSeconds requires a numerical input")}static fromObject(t,e={}){t=t||{};let i=Et(e.zone,z.defaultZone);if(!i.isValid)return v.invalid(hn(i));let n=N.fromObject(e),r=rs(t,pc),{minDaysInFirstWeek:o,startOfWeek:a}=$r(r,n),l=z.now(),c=D(e.specificOffset)?i.offset(l):e.specificOffset,h=!D(r.ordinal),u=!D(r.year),d=!D(r.month)||!D(r.day),f=u||d,m=r.weekYear||r.weekNumber;if((f||h)&&m)throw new vt("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(d&&h)throw new vt("Can't mix ordinal dates with month/day");let g=m||r.weekday&&!f,p,y,b=un(l,c);g?(p=sg,y=tg,b=oi(b,o,a)):h?(p=ig,y=eg,b=ln(b)):(p=Sc,y=wc);let _=!1;for(let F of p){let W=r[F];D(W)?_?r[F]=y[F]:r[F]=b[F]:_=!0}let w=g?Il(r,o,a):h?Cl(r):jr(r),x=w||Ur(r);if(x)return v.invalid(x);let S=g?Hr(r,o,a):h?Br(r):r,[k,O]=fn(S,c,i),T=new v({ts:k,zone:i,o:O,loc:n});return r.weekday&&f&&t.weekday!==T.weekday?v.invalid("mismatched weekday",`you can't specify both a weekday of ${r.weekday} and a date of ${T.toISO()}`):T}static fromISO(t,e={}){let[i,n]=ql(t);return fi(i,n,e,"ISO 8601",t)}static fromRFC2822(t,e={}){let[i,n]=Gl(t);return fi(i,n,e,"RFC 2822",t)}static fromHTTP(t,e={}){let[i,n]=Xl(t);return fi(i,n,e,"HTTP",e)}static fromFormat(t,e,i={}){if(D(t)||D(e))throw new st("fromFormat requires an input string and a format");let{locale:n=null,numberingSystem:r=null}=i,o=N.fromOpts({locale:n,numberingSystem:r,defaultToEN:!0}),[a,l,c,h]=dc(o,t,e);return h?v.invalid(h):fi(a,l,i,`format ${e}`,t,c)}static fromString(t,e,i={}){return v.fromFormat(t,e,i)}static fromSQL(t,e={}){let[i,n]=Ql(t);return fi(i,n,e,"SQL",t)}static invalid(t,e=null){if(!t)throw new st("need to specify a reason the DateTime is invalid");let i=t instanceof rt?t:new rt(t,e);if(z.throwOnInvalid)throw new Gi(i);return new v({invalid:i})}static isDateTime(t){return t&&t.isLuxonDateTime||!1}static parseFormatForOpts(t,e={}){let i=no(t,N.fromObject(e));return i?i.map(n=>n?n.val:null).join(""):null}static expandFormat(t,e={}){return so(X.parseFormat(t),N.fromObject(e)).map(n=>n.val).join("")}get(t){return this[t]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?oo(this).weekYear:NaN}get weekNumber(){return this.isValid?oo(this).weekNumber:NaN}get weekday(){return this.isValid?oo(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?ao(this).weekday:NaN}get localWeekNumber(){return this.isValid?ao(this).weekNumber:NaN}get localWeekYear(){return this.isValid?ao(this).weekYear:NaN}get ordinal(){return this.isValid?ln(this.c).ordinal:NaN}get monthShort(){return this.isValid?Gt.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Gt.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Gt.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Gt.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];let t=864e5,e=6e4,i=es(this.c),n=this.zone.offset(i-t),r=this.zone.offset(i+t),o=this.zone.offset(i-n*e),a=this.zone.offset(i-r*e);if(o===a)return[this];let l=i-o*e,c=i-a*e,h=un(l,o),u=un(c,a);return h.hour===u.hour&&h.minute===u.minute&&h.second===u.second&&h.millisecond===u.millisecond?[ve(this,{ts:l}),ve(this,{ts:c})]:[this]}get isInLeapYear(){return Me(this.year)}get daysInMonth(){return ns(this.year,this.month)}get daysInYear(){return this.isValid?ce(this.year):NaN}get weeksInWeekYear(){return this.isValid?ke(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?ke(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(t={}){let{locale:e,numberingSystem:i,calendar:n}=X.create(this.loc.clone(t),t).resolvedOptions(this);return{locale:e,numberingSystem:i,outputCalendar:n}}toUTC(t=0,e={}){return this.setZone(G.instance(t),e)}toLocal(){return this.setZone(z.defaultZone)}setZone(t,{keepLocalTime:e=!1,keepCalendarTime:i=!1}={}){if(t=Et(t,z.defaultZone),t.equals(this.zone))return this;if(t.isValid){let n=this.ts;if(e||i){let r=t.offset(this.ts),o=this.toObject();[n]=fn(o,r,t)}return ve(this,{ts:n,zone:t})}else return v.invalid(hn(t))}reconfigure({locale:t,numberingSystem:e,outputCalendar:i}={}){let n=this.loc.clone({locale:t,numberingSystem:e,outputCalendar:i});return ve(this,{loc:n})}setLocale(t){return this.reconfigure({locale:t})}set(t){if(!this.isValid)return this;let e=rs(t,pc),{minDaysInFirstWeek:i,startOfWeek:n}=$r(e,this.loc),r=!D(e.weekYear)||!D(e.weekNumber)||!D(e.weekday),o=!D(e.ordinal),a=!D(e.year),l=!D(e.month)||!D(e.day),c=a||l,h=e.weekYear||e.weekNumber;if((c||o)&&h)throw new vt("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&o)throw new vt("Can't mix ordinal dates with month/day");let u;r?u=Hr({...oi(this.c,i,n),...e},i,n):D(e.ordinal)?(u={...this.toObject(),...e},D(e.day)&&(u.day=Math.min(ns(u.year,u.month),u.day))):u=Br({...ln(this.c),...e});let[d,f]=fn(u,this.o,this.zone);return ve(this,{ts:d,o:f})}plus(t){if(!this.isValid)return this;let e=C.fromDurationLike(t);return ve(this,mc(this,e))}minus(t){if(!this.isValid)return this;let e=C.fromDurationLike(t).negate();return ve(this,mc(this,e))}startOf(t,{useLocaleWeeks:e=!1}={}){if(!this.isValid)return this;let i={},n=C.normalizeUnit(t);switch(n){case"years":i.month=1;case"quarters":case"months":i.day=1;case"weeks":case"days":i.hour=0;case"hours":i.minute=0;case"minutes":i.second=0;case"seconds":i.millisecond=0;break;case"milliseconds":break}if(n==="weeks")if(e){let r=this.loc.getStartOfWeek(),{weekday:o}=this;othis.valueOf(),a=o?this:t,l=o?t:this,c=rc(a,l,r,n);return o?c.negate():c}diffNow(t="milliseconds",e={}){return this.diff(v.now(),t,e)}until(t){return this.isValid?U.fromDateTimes(this,t):this}hasSame(t,e,i){if(!this.isValid)return!1;let n=t.valueOf(),r=this.setZone(t.zone,{keepLocalTime:!0});return r.startOf(e,i)<=n&&n<=r.endOf(e,i)}equals(t){return this.isValid&&t.isValid&&this.valueOf()===t.valueOf()&&this.zone.equals(t.zone)&&this.loc.equals(t.loc)}toRelative(t={}){if(!this.isValid)return null;let e=t.base||v.fromObject({},{zone:this.zone}),i=t.padding?thise.valueOf(),Math.min)}static max(...t){if(!t.every(v.isDateTime))throw new st("max requires all arguments be DateTimes");return Yr(t,e=>e.valueOf(),Math.max)}static fromFormatExplain(t,e,i={}){let{locale:n=null,numberingSystem:r=null}=i,o=N.fromOpts({locale:n,numberingSystem:r,defaultToEN:!0});return io(o,t,e)}static fromStringExplain(t,e,i={}){return v.fromFormatExplain(t,e,i)}static get DATE_SHORT(){return ae}static get DATE_MED(){return zs}static get DATE_MED_WITH_WEEKDAY(){return Tr}static get DATE_FULL(){return Vs}static get DATE_HUGE(){return Hs}static get TIME_SIMPLE(){return Bs}static get TIME_WITH_SECONDS(){return $s}static get TIME_WITH_SHORT_OFFSET(){return js}static get TIME_WITH_LONG_OFFSET(){return Us}static get TIME_24_SIMPLE(){return Ys}static get TIME_24_WITH_SECONDS(){return Zs}static get TIME_24_WITH_SHORT_OFFSET(){return qs}static get TIME_24_WITH_LONG_OFFSET(){return Gs}static get DATETIME_SHORT(){return Xs}static get DATETIME_SHORT_WITH_SECONDS(){return Ks}static get DATETIME_MED(){return Js}static get DATETIME_MED_WITH_SECONDS(){return Qs}static get DATETIME_MED_WITH_WEEKDAY(){return vr}static get DATETIME_FULL(){return ti}static get DATETIME_FULL_WITH_SECONDS(){return ei}static get DATETIME_HUGE(){return si}static get DATETIME_HUGE_WITH_SECONDS(){return ii}};function fs(s){if(v.isDateTime(s))return s;if(s&&s.valueOf&&zt(s.valueOf()))return v.fromJSDate(s);if(s&&typeof s=="object")return v.fromObject(s);throw new st(`Unknown datetime argument: ${s}, of type ${typeof s}`)}var rg={datetime:v.DATETIME_MED_WITH_SECONDS,millisecond:"h:mm:ss.SSS a",second:v.TIME_WITH_SECONDS,minute:v.TIME_SIMPLE,hour:{hour:"numeric"},day:{day:"numeric",month:"short"},week:"DD",month:{month:"short",year:"numeric"},quarter:"'Q'q - yyyy",year:{year:"numeric"}};kr._date.override({_id:"luxon",_create:function(s){return v.fromMillis(s,this.options)},init(s){this.options.locale||(this.options.locale=s.locale)},formats:function(){return rg},parse:function(s,t){let e=this.options,i=typeof s;return s===null||i==="undefined"?null:(i==="number"?s=this._create(s):i==="string"?typeof t=="string"?s=v.fromFormat(s,t,e):s=v.fromISO(s,e):s instanceof Date?s=v.fromJSDate(s,e):i==="object"&&!(s instanceof v)&&(s=v.fromObject(s,e)),s.isValid?s.valueOf():null)},format:function(s,t){let e=this._create(s);return typeof t=="string"?e.toFormat(t):e.toLocaleString(t)},add:function(s,t,e){let i={};return i[e]=t,this._create(s).plus(i).valueOf()},diff:function(s,t,e){return this._create(s).diff(this._create(t)).as(e).valueOf()},startOf:function(s,t,e){if(t==="isoWeek"){e=Math.trunc(Math.min(Math.max(0,e),6));let i=this._create(s);return i.minus({days:(i.weekday-e+7)%7}).startOf("day").valueOf()}return t?this._create(s).startOf(t).valueOf():s},endOf:function(s,t){return this._create(s).endOf(t).valueOf()}});function mn({cachedData:s,options:t,type:e}){return{init:function(){this.initChart(),this.$wire.$on("updateChartData",({data:i})=>{mn=this.getChart(),mn.data=i,mn.update("resize")}),Alpine.effect(()=>{Alpine.store("theme"),this.$nextTick(()=>{this.getChart()&&(this.getChart().destroy(),this.initChart())})}),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{Alpine.store("theme")==="system"&&this.$nextTick(()=>{this.getChart().destroy(),this.initChart()})})},initChart:function(i=null){var o,a,l,c,h,u,d;Rt.defaults.animation.duration=0,Rt.defaults.backgroundColor=getComputedStyle(this.$refs.backgroundColorElement).color;let n=getComputedStyle(this.$refs.borderColorElement).color;Rt.defaults.borderColor=n,Rt.defaults.color=getComputedStyle(this.$refs.textColorElement).color,Rt.defaults.font.family=getComputedStyle(this.$el).fontFamily,Rt.defaults.plugins.legend.labels.boxWidth=12,Rt.defaults.plugins.legend.position="bottom";let r=getComputedStyle(this.$refs.gridColorElement).color;return t??(t={}),t.borderWidth??(t.borderWidth=2),t.pointBackgroundColor??(t.pointBackgroundColor=n),t.pointHitRadius??(t.pointHitRadius=4),t.pointRadius??(t.pointRadius=2),t.scales??(t.scales={}),(o=t.scales).x??(o.x={}),(a=t.scales.x).grid??(a.grid={}),t.scales.x.grid.color=r,(l=t.scales.x.grid).display??(l.display=!1),(c=t.scales.x.grid).drawBorder??(c.drawBorder=!1),(h=t.scales).y??(h.y={}),(u=t.scales.y).grid??(u.grid={}),t.scales.y.grid.color=r,(d=t.scales.y.grid).drawBorder??(d.drawBorder=!1),new Rt(this.$refs.canvas,{type:e,data:i??s,options:t})},getChart:function(){return Rt.getChart(this.$refs.canvas)}}}export{mn as default}; +/*! Bundled license information: + +chart.js/dist/chunks/helpers.segment.mjs: + (*! + * Chart.js v3.9.1 + * https://www.chartjs.org + * (c) 2022 Chart.js Contributors + * Released under the MIT License + *) + +chart.js/dist/chunks/helpers.segment.mjs: + (*! + * @kurkle/color v0.2.1 + * https://github.com/kurkle/color#readme + * (c) 2022 Jukka Kurkela + * Released under the MIT License + *) + +chart.js/dist/chart.mjs: + (*! + * Chart.js v3.9.1 + * https://www.chartjs.org + * (c) 2022 Chart.js Contributors + * Released under the MIT License + *) + +chartjs-adapter-luxon/dist/chartjs-adapter-luxon.esm.js: + (*! + * chartjs-adapter-luxon v1.3.1 + * https://www.chartjs.org + * (c) 2023 chartjs-adapter-luxon Contributors + * Released under the MIT license + *) +*/ diff --git a/public/js/filament/widgets/components/stats-overview/stat/chart.js b/public/js/filament/widgets/components/stats-overview/stat/chart.js new file mode 100644 index 000000000..ea2cbe7d3 --- /dev/null +++ b/public/js/filament/widgets/components/stats-overview/stat/chart.js @@ -0,0 +1,29 @@ +function rt(){}var Hs=function(){let i=0;return function(){return i++}}();function T(i){return i===null||typeof i>"u"}function I(i){if(Array.isArray&&Array.isArray(i))return!0;let t=Object.prototype.toString.call(i);return t.slice(0,7)==="[object"&&t.slice(-6)==="Array]"}function D(i){return i!==null&&Object.prototype.toString.call(i)==="[object Object]"}var W=i=>(typeof i=="number"||i instanceof Number)&&isFinite(+i);function Q(i,t){return W(i)?i:t}function C(i,t){return typeof i>"u"?t:i}var js=(i,t)=>typeof i=="string"&&i.endsWith("%")?parseFloat(i)/100:i/t,Oi=(i,t)=>typeof i=="string"&&i.endsWith("%")?parseFloat(i)/100*t:+i;function z(i,t,e){if(i&&typeof i.call=="function")return i.apply(e,t)}function E(i,t,e,s){let n,o,a;if(I(i))if(o=i.length,s)for(n=o-1;n>=0;n--)t.call(e,i[n],n);else for(n=0;ni,x:i=>i.x,y:i=>i.y};function gt(i,t){return(Ds[t]||(Ds[t]=Io(t)))(i)}function Io(i){let t=zo(i);return e=>{for(let s of t){if(s==="")break;e=e&&e[s]}return e}}function zo(i){let t=i.split("."),e=[],s="";for(let n of t)s+=n,s.endsWith("\\")?s=s.slice(0,-1)+".":(e.push(s),s="");return e}function Ke(i){return i.charAt(0).toUpperCase()+i.slice(1)}var J=i=>typeof i<"u",ft=i=>typeof i=="function",Ai=(i,t)=>{if(i.size!==t.size)return!1;for(let e of i)if(!t.has(e))return!1;return!0};function Ys(i){return i.type==="mouseup"||i.type==="click"||i.type==="contextmenu"}var B=Math.PI,F=2*B,Bo=F+B,Ye=Number.POSITIVE_INFINITY,Vo=B/180,V=B/2,fe=B/4,Os=B*2/3,tt=Math.log10,ot=Math.sign;function Ti(i){let t=Math.round(i);i=Kt(i,t,i/1e3)?t:i;let e=Math.pow(10,Math.floor(tt(i))),s=i/e;return(s<=1?1:s<=2?2:s<=5?5:10)*e}function Xs(i){let t=[],e=Math.sqrt(i),s;for(s=1;sn-o).pop(),t}function Rt(i){return!isNaN(parseFloat(i))&&isFinite(i)}function Kt(i,t,e){return Math.abs(i-t)=i}function Li(i,t,e){let s,n,o;for(s=0,n=i.length;sl&&c=Math.min(t,e)-s&&i<=Math.max(t,e)+s}function Ge(i,t,e){e=e||(a=>i[a]1;)o=n+s>>1,e(o)?n=o:s=o;return{lo:n,hi:s}}var at=(i,t,e,s)=>Ge(i,e,s?n=>i[n][t]<=e:n=>i[n][t]Ge(i,e,s=>i[s][t]>=e);function Gs(i,t,e){let s=0,n=i.length;for(;ss&&i[n-1]>e;)n--;return s>0||n{let s="_onData"+Ke(e),n=i[e];Object.defineProperty(i,e,{configurable:!0,enumerable:!1,value(...o){let a=n.apply(this,o);return i._chartjs.listeners.forEach(r=>{typeof r[s]=="function"&&r[s](...o)}),a}})})}function Fi(i,t){let e=i._chartjs;if(!e)return;let s=e.listeners,n=s.indexOf(t);n!==-1&&s.splice(n,1),!(s.length>0)&&(Zs.forEach(o=>{delete i[o]}),delete i._chartjs)}function Ii(i){let t=new Set,e,s;for(e=0,s=i.length;e"u"?function(i){return i()}:window.requestAnimationFrame}();function Bi(i,t,e){let s=e||(a=>Array.prototype.slice.call(a)),n=!1,o=[];return function(...a){o=s(a),n||(n=!0,zi.call(window,()=>{n=!1,i.apply(t,o)}))}}function Qs(i,t){let e;return function(...s){return t?(clearTimeout(e),e=setTimeout(i,t,s)):i.apply(this,s),t}}var Ze=i=>i==="start"?"left":i==="end"?"right":"center",X=(i,t,e)=>i==="start"?t:i==="end"?e:(t+e)/2,tn=(i,t,e,s)=>i===(s?"left":"right")?e:i==="center"?(t+e)/2:t;function Vi(i,t,e){let s=t.length,n=0,o=s;if(i._sorted){let{iScale:a,_parsed:r}=i,l=a.axis,{min:c,max:h,minDefined:d,maxDefined:u}=a.getUserBounds();d&&(n=Y(Math.min(at(r,a.axis,c).lo,e?s:at(t,l,a.getPixelForValue(c)).lo),0,s-1)),u?o=Y(Math.max(at(r,a.axis,h,!0).hi+1,e?0:at(t,l,a.getPixelForValue(h),!0).hi+1),n,s)-n:o=s-n}return{start:n,count:o}}function Wi(i){let{xScale:t,yScale:e,_scaleRanges:s}=i,n={xmin:t.min,xmax:t.max,ymin:e.min,ymax:e.max};if(!s)return i._scaleRanges=n,!0;let o=s.xmin!==t.min||s.xmax!==t.max||s.ymin!==e.min||s.ymax!==e.max;return Object.assign(s,n),o}var Ve=i=>i===0||i===1,As=(i,t,e)=>-(Math.pow(2,10*(i-=1))*Math.sin((i-t)*F/e)),Ts=(i,t,e)=>Math.pow(2,-10*i)*Math.sin((i-t)*F/e)+1,Ht={linear:i=>i,easeInQuad:i=>i*i,easeOutQuad:i=>-i*(i-2),easeInOutQuad:i=>(i/=.5)<1?.5*i*i:-.5*(--i*(i-2)-1),easeInCubic:i=>i*i*i,easeOutCubic:i=>(i-=1)*i*i+1,easeInOutCubic:i=>(i/=.5)<1?.5*i*i*i:.5*((i-=2)*i*i+2),easeInQuart:i=>i*i*i*i,easeOutQuart:i=>-((i-=1)*i*i*i-1),easeInOutQuart:i=>(i/=.5)<1?.5*i*i*i*i:-.5*((i-=2)*i*i*i-2),easeInQuint:i=>i*i*i*i*i,easeOutQuint:i=>(i-=1)*i*i*i*i+1,easeInOutQuint:i=>(i/=.5)<1?.5*i*i*i*i*i:.5*((i-=2)*i*i*i*i+2),easeInSine:i=>-Math.cos(i*V)+1,easeOutSine:i=>Math.sin(i*V),easeInOutSine:i=>-.5*(Math.cos(B*i)-1),easeInExpo:i=>i===0?0:Math.pow(2,10*(i-1)),easeOutExpo:i=>i===1?1:-Math.pow(2,-10*i)+1,easeInOutExpo:i=>Ve(i)?i:i<.5?.5*Math.pow(2,10*(i*2-1)):.5*(-Math.pow(2,-10*(i*2-1))+2),easeInCirc:i=>i>=1?i:-(Math.sqrt(1-i*i)-1),easeOutCirc:i=>Math.sqrt(1-(i-=1)*i),easeInOutCirc:i=>(i/=.5)<1?-.5*(Math.sqrt(1-i*i)-1):.5*(Math.sqrt(1-(i-=2)*i)+1),easeInElastic:i=>Ve(i)?i:As(i,.075,.3),easeOutElastic:i=>Ve(i)?i:Ts(i,.075,.3),easeInOutElastic(i){return Ve(i)?i:i<.5?.5*As(i*2,.1125,.45):.5+.5*Ts(i*2-1,.1125,.45)},easeInBack(i){return i*i*((1.70158+1)*i-1.70158)},easeOutBack(i){return(i-=1)*i*((1.70158+1)*i+1.70158)+1},easeInOutBack(i){let t=1.70158;return(i/=.5)<1?.5*(i*i*(((t*=1.525)+1)*i-t)):.5*((i-=2)*i*(((t*=1.525)+1)*i+t)+2)},easeInBounce:i=>1-Ht.easeOutBounce(1-i),easeOutBounce(i){return i<1/2.75?7.5625*i*i:i<2/2.75?7.5625*(i-=1.5/2.75)*i+.75:i<2.5/2.75?7.5625*(i-=2.25/2.75)*i+.9375:7.5625*(i-=2.625/2.75)*i+.984375},easeInOutBounce:i=>i<.5?Ht.easeInBounce(i*2)*.5:Ht.easeOutBounce(i*2-1)*.5+.5};function _e(i){return i+.5|0}var yt=(i,t,e)=>Math.max(Math.min(i,e),t);function ge(i){return yt(_e(i*2.55),0,255)}function vt(i){return yt(_e(i*255),0,255)}function ut(i){return yt(_e(i/2.55)/100,0,1)}function Ls(i){return yt(_e(i*100),0,100)}var st={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Ci=[..."0123456789ABCDEF"],No=i=>Ci[i&15],Ho=i=>Ci[(i&240)>>4]+Ci[i&15],We=i=>(i&240)>>4===(i&15),jo=i=>We(i.r)&&We(i.g)&&We(i.b)&&We(i.a);function $o(i){var t=i.length,e;return i[0]==="#"&&(t===4||t===5?e={r:255&st[i[1]]*17,g:255&st[i[2]]*17,b:255&st[i[3]]*17,a:t===5?st[i[4]]*17:255}:(t===7||t===9)&&(e={r:st[i[1]]<<4|st[i[2]],g:st[i[3]]<<4|st[i[4]],b:st[i[5]]<<4|st[i[6]],a:t===9?st[i[7]]<<4|st[i[8]]:255})),e}var Yo=(i,t)=>i<255?t(i):"";function Xo(i){var t=jo(i)?No:Ho;return i?"#"+t(i.r)+t(i.g)+t(i.b)+Yo(i.a,t):void 0}var Uo=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function en(i,t,e){let s=t*Math.min(e,1-e),n=(o,a=(o+i/30)%12)=>e-s*Math.max(Math.min(a-3,9-a,1),-1);return[n(0),n(8),n(4)]}function Ko(i,t,e){let s=(n,o=(n+i/60)%6)=>e-e*t*Math.max(Math.min(o,4-o,1),0);return[s(5),s(3),s(1)]}function qo(i,t,e){let s=en(i,1,.5),n;for(t+e>1&&(n=1/(t+e),t*=n,e*=n),n=0;n<3;n++)s[n]*=1-t-e,s[n]+=t;return s}function Go(i,t,e,s,n){return i===n?(t-e)/s+(t.5?h/(2-o-a):h/(o+a),l=Go(e,s,n,h,o),l=l*60+.5),[l|0,c||0,r]}function Hi(i,t,e,s){return(Array.isArray(t)?i(t[0],t[1],t[2]):i(t,e,s)).map(vt)}function ji(i,t,e){return Hi(en,i,t,e)}function Zo(i,t,e){return Hi(qo,i,t,e)}function Jo(i,t,e){return Hi(Ko,i,t,e)}function sn(i){return(i%360+360)%360}function Qo(i){let t=Uo.exec(i),e=255,s;if(!t)return;t[5]!==s&&(e=t[6]?ge(+t[5]):vt(+t[5]));let n=sn(+t[2]),o=+t[3]/100,a=+t[4]/100;return t[1]==="hwb"?s=Zo(n,o,a):t[1]==="hsv"?s=Jo(n,o,a):s=ji(n,o,a),{r:s[0],g:s[1],b:s[2],a:e}}function ta(i,t){var e=Ni(i);e[0]=sn(e[0]+t),e=ji(e),i.r=e[0],i.g=e[1],i.b=e[2]}function ea(i){if(!i)return;let t=Ni(i),e=t[0],s=Ls(t[1]),n=Ls(t[2]);return i.a<255?`hsla(${e}, ${s}%, ${n}%, ${ut(i.a)})`:`hsl(${e}, ${s}%, ${n}%)`}var Rs={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},Es={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};function ia(){let i={},t=Object.keys(Es),e=Object.keys(Rs),s,n,o,a,r;for(s=0;s>16&255,o>>8&255,o&255]}return i}var Ne;function sa(i){Ne||(Ne=ia(),Ne.transparent=[0,0,0,0]);let t=Ne[i.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:t.length===4?t[3]:255}}var na=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function oa(i){let t=na.exec(i),e=255,s,n,o;if(t){if(t[7]!==s){let a=+t[7];e=t[8]?ge(a):yt(a*255,0,255)}return s=+t[1],n=+t[3],o=+t[5],s=255&(t[2]?ge(s):yt(s,0,255)),n=255&(t[4]?ge(n):yt(n,0,255)),o=255&(t[6]?ge(o):yt(o,0,255)),{r:s,g:n,b:o,a:e}}}function aa(i){return i&&(i.a<255?`rgba(${i.r}, ${i.g}, ${i.b}, ${ut(i.a)})`:`rgb(${i.r}, ${i.g}, ${i.b})`)}var wi=i=>i<=.0031308?i*12.92:Math.pow(i,1/2.4)*1.055-.055,Nt=i=>i<=.04045?i/12.92:Math.pow((i+.055)/1.055,2.4);function ra(i,t,e){let s=Nt(ut(i.r)),n=Nt(ut(i.g)),o=Nt(ut(i.b));return{r:vt(wi(s+e*(Nt(ut(t.r))-s))),g:vt(wi(n+e*(Nt(ut(t.g))-n))),b:vt(wi(o+e*(Nt(ut(t.b))-o))),a:i.a+e*(t.a-i.a)}}function He(i,t,e){if(i){let s=Ni(i);s[t]=Math.max(0,Math.min(s[t]+s[t]*e,t===0?360:1)),s=ji(s),i.r=s[0],i.g=s[1],i.b=s[2]}}function nn(i,t){return i&&Object.assign(t||{},i)}function Fs(i){var t={r:0,g:0,b:0,a:255};return Array.isArray(i)?i.length>=3&&(t={r:i[0],g:i[1],b:i[2],a:255},i.length>3&&(t.a=vt(i[3]))):(t=nn(i,{r:0,g:0,b:0,a:1}),t.a=vt(t.a)),t}function la(i){return i.charAt(0)==="r"?oa(i):Qo(i)}var $t=class{constructor(t){if(t instanceof $t)return t;let e=typeof t,s;e==="object"?s=Fs(t):e==="string"&&(s=$o(t)||sa(t)||la(t)),this._rgb=s,this._valid=!!s}get valid(){return this._valid}get rgb(){var t=nn(this._rgb);return t&&(t.a=ut(t.a)),t}set rgb(t){this._rgb=Fs(t)}rgbString(){return this._valid?aa(this._rgb):void 0}hexString(){return this._valid?Xo(this._rgb):void 0}hslString(){return this._valid?ea(this._rgb):void 0}mix(t,e){if(t){let s=this.rgb,n=t.rgb,o,a=e===o?.5:e,r=2*a-1,l=s.a-n.a,c=((r*l===-1?r:(r+l)/(1+r*l))+1)/2;o=1-c,s.r=255&c*s.r+o*n.r+.5,s.g=255&c*s.g+o*n.g+.5,s.b=255&c*s.b+o*n.b+.5,s.a=a*s.a+(1-a)*n.a,this.rgb=s}return this}interpolate(t,e){return t&&(this._rgb=ra(this._rgb,t._rgb,e)),this}clone(){return new $t(this.rgb)}alpha(t){return this._rgb.a=vt(t),this}clearer(t){let e=this._rgb;return e.a*=1-t,this}greyscale(){let t=this._rgb,e=_e(t.r*.3+t.g*.59+t.b*.11);return t.r=t.g=t.b=e,this}opaquer(t){let e=this._rgb;return e.a*=1+t,this}negate(){let t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return He(this._rgb,2,t),this}darken(t){return He(this._rgb,2,-t),this}saturate(t){return He(this._rgb,1,t),this}desaturate(t){return He(this._rgb,1,-t),this}rotate(t){return ta(this._rgb,t),this}};function on(i){return new $t(i)}function an(i){if(i&&typeof i=="object"){let t=i.toString();return t==="[object CanvasPattern]"||t==="[object CanvasGradient]"}return!1}function $i(i){return an(i)?i:on(i)}function ki(i){return an(i)?i:on(i).saturate(.5).darken(.1).hexString()}var Mt=Object.create(null),Je=Object.create(null);function pe(i,t){if(!t)return i;let e=t.split(".");for(let s=0,n=e.length;se.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(e,s)=>ki(s.backgroundColor),this.hoverBorderColor=(e,s)=>ki(s.borderColor),this.hoverColor=(e,s)=>ki(s.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t)}set(t,e){return Si(this,t,e)}get(t){return pe(this,t)}describe(t,e){return Si(Je,t,e)}override(t,e){return Si(Mt,t,e)}route(t,e,s,n){let o=pe(this,t),a=pe(this,s),r="_"+e;Object.defineProperties(o,{[r]:{value:o[e],writable:!0},[e]:{enumerable:!0,get(){let l=this[r],c=a[n];return D(l)?Object.assign({},c,l):C(l,c)},set(l){this[r]=l}}})}},O=new Di({_scriptable:i=>!i.startsWith("on"),_indexable:i=>i!=="events",hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}});function ca(i){return!i||T(i.size)||T(i.family)?null:(i.style?i.style+" ":"")+(i.weight?i.weight+" ":"")+i.size+"px "+i.family}function me(i,t,e,s,n){let o=t[n];return o||(o=t[n]=i.measureText(n).width,e.push(n)),o>s&&(s=o),s}function rn(i,t,e,s){s=s||{};let n=s.data=s.data||{},o=s.garbageCollect=s.garbageCollect||[];s.font!==t&&(n=s.data={},o=s.garbageCollect=[],s.font=t),i.save(),i.font=t;let a=0,r=e.length,l,c,h,d,u;for(l=0;le.length){for(l=0;l0&&i.stroke()}}function Yt(i,t,e){return e=e||.5,!t||i&&i.x>t.left-e&&i.xt.top-e&&i.y0&&o.strokeColor!=="",l,c;for(i.save(),i.font=n.string,ha(i,o),l=0;l+i||0;function ti(i,t){let e={},s=D(t),n=s?Object.keys(t):t,o=D(i)?s?a=>C(i[a],i[t[a]]):a=>i[a]:()=>i;for(let a of n)e[a]=pa(o(a));return e}function Ui(i){return ti(i,{top:"y",right:"x",bottom:"y",left:"x"})}function St(i){return ti(i,["topLeft","topRight","bottomLeft","bottomRight"])}function U(i){let t=Ui(i);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function $(i,t){i=i||{},t=t||O.font;let e=C(i.size,t.size);typeof e=="string"&&(e=parseInt(e,10));let s=C(i.style,t.style);s&&!(""+s).match(fa)&&(console.warn('Invalid font style specified: "'+s+'"'),s="");let n={family:C(i.family,t.family),lineHeight:ga(C(i.lineHeight,t.lineHeight),e),size:e,style:s,weight:C(i.weight,t.weight),string:""};return n.string=ca(n),n}function Zt(i,t,e,s){let n=!0,o,a,r;for(o=0,a=i.length;oe&&r===0?0:r+l;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function pt(i,t){return Object.assign(Object.create(i),t)}function ei(i,t=[""],e=i,s,n=()=>i[0]){J(s)||(s=fn("_fallback",i));let o={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:i,_rootScopes:e,_fallback:s,_getTarget:n,override:a=>ei([a,...i],t,e,s)};return new Proxy(o,{deleteProperty(a,r){return delete a[r],delete a._keys,delete i[0][r],!0},get(a,r){return dn(a,r,()=>wa(r,t,i,a))},getOwnPropertyDescriptor(a,r){return Reflect.getOwnPropertyDescriptor(a._scopes[0],r)},getPrototypeOf(){return Reflect.getPrototypeOf(i[0])},has(a,r){return zs(a).includes(r)},ownKeys(a){return zs(a)},set(a,r,l){let c=a._storage||(a._storage=n());return a[r]=c[r]=l,delete a._keys,!0}})}function Lt(i,t,e,s){let n={_cacheable:!1,_proxy:i,_context:t,_subProxy:e,_stack:new Set,_descriptors:Ki(i,s),setContext:o=>Lt(i,o,e,s),override:o=>Lt(i.override(o),t,e,s)};return new Proxy(n,{deleteProperty(o,a){return delete o[a],delete i[a],!0},get(o,a,r){return dn(o,a,()=>ba(o,a,r))},getOwnPropertyDescriptor(o,a){return o._descriptors.allKeys?Reflect.has(i,a)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(i,a)},getPrototypeOf(){return Reflect.getPrototypeOf(i)},has(o,a){return Reflect.has(i,a)},ownKeys(){return Reflect.ownKeys(i)},set(o,a,r){return i[a]=r,delete o[a],!0}})}function Ki(i,t={scriptable:!0,indexable:!0}){let{_scriptable:e=t.scriptable,_indexable:s=t.indexable,_allKeys:n=t.allKeys}=i;return{allKeys:n,scriptable:e,indexable:s,isScriptable:ft(e)?e:()=>e,isIndexable:ft(s)?s:()=>s}}var ma=(i,t)=>i?i+Ke(t):t,qi=(i,t)=>D(t)&&i!=="adapters"&&(Object.getPrototypeOf(t)===null||t.constructor===Object);function dn(i,t,e){if(Object.prototype.hasOwnProperty.call(i,t))return i[t];let s=e();return i[t]=s,s}function ba(i,t,e){let{_proxy:s,_context:n,_subProxy:o,_descriptors:a}=i,r=s[t];return ft(r)&&a.isScriptable(t)&&(r=_a(t,r,i,e)),I(r)&&r.length&&(r=xa(t,r,i,a.isIndexable)),qi(t,r)&&(r=Lt(r,n,o&&o[t],a)),r}function _a(i,t,e,s){let{_proxy:n,_context:o,_subProxy:a,_stack:r}=e;if(r.has(i))throw new Error("Recursion detected: "+Array.from(r).join("->")+"->"+i);return r.add(i),t=t(o,a||s),r.delete(i),qi(i,t)&&(t=Gi(n._scopes,n,i,t)),t}function xa(i,t,e,s){let{_proxy:n,_context:o,_subProxy:a,_descriptors:r}=e;if(J(o.index)&&s(i))t=t[o.index%t.length];else if(D(t[0])){let l=t,c=n._scopes.filter(h=>h!==l);t=[];for(let h of l){let d=Gi(c,n,i,h);t.push(Lt(d,o,a&&a[i],r))}}return t}function un(i,t,e){return ft(i)?i(t,e):i}var ya=(i,t)=>i===!0?t:typeof i=="string"?gt(t,i):void 0;function va(i,t,e,s,n){for(let o of t){let a=ya(e,o);if(a){i.add(a);let r=un(a._fallback,e,n);if(J(r)&&r!==e&&r!==s)return r}else if(a===!1&&J(s)&&e!==s)return null}return!1}function Gi(i,t,e,s){let n=t._rootScopes,o=un(t._fallback,e,s),a=[...i,...n],r=new Set;r.add(s);let l=Is(r,a,e,o||e,s);return l===null||J(o)&&o!==e&&(l=Is(r,a,o,l,s),l===null)?!1:ei(Array.from(r),[""],n,o,()=>Ma(t,e,s))}function Is(i,t,e,s,n){for(;e;)e=va(i,t,e,s,n);return e}function Ma(i,t,e){let s=i._getTarget();t in s||(s[t]={});let n=s[t];return I(n)&&D(e)?e:n}function wa(i,t,e,s){let n;for(let o of t)if(n=fn(ma(o,i),e),J(n))return qi(i,n)?Gi(e,s,i,n):n}function fn(i,t){for(let e of t){if(!e)continue;let s=e[i];if(J(s))return s}}function zs(i){let t=i._keys;return t||(t=i._keys=ka(i._scopes)),t}function ka(i){let t=new Set;for(let e of i)for(let s of Object.keys(e).filter(n=>!n.startsWith("_")))t.add(s);return Array.from(t)}function Zi(i,t,e,s){let{iScale:n}=i,{key:o="r"}=this._parsing,a=new Array(s),r,l,c,h;for(r=0,l=s;rti==="x"?"y":"x";function Pa(i,t,e,s){let n=i.skip?t:i,o=t,a=e.skip?t:e,r=Xe(o,n),l=Xe(a,o),c=r/(r+l),h=l/(r+l);c=isNaN(c)?0:c,h=isNaN(h)?0:h;let d=s*c,u=s*h;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+u*(a.x-n.x),y:o.y+u*(a.y-n.y)}}}function Ca(i,t,e){let s=i.length,n,o,a,r,l,c=Xt(i,0);for(let h=0;h!c.skip)),t.cubicInterpolationMode==="monotone")Oa(i,n);else{let c=s?i[i.length-1]:i[0];for(o=0,a=i.length;owindow.getComputedStyle(i,null);function Ta(i,t){return si(i).getPropertyValue(t)}var La=["top","right","bottom","left"];function Tt(i,t,e){let s={};e=e?"-"+e:"";for(let n=0;n<4;n++){let o=La[n];s[o]=parseFloat(i[t+"-"+o+e])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}var Ra=(i,t,e)=>(i>0||t>0)&&(!e||!e.shadowRoot);function Ea(i,t){let e=i.touches,s=e&&e.length?e[0]:i,{offsetX:n,offsetY:o}=s,a=!1,r,l;if(Ra(n,o,i.target))r=n,l=o;else{let c=t.getBoundingClientRect();r=s.clientX-c.left,l=s.clientY-c.top,a=!0}return{x:r,y:l,box:a}}function Pt(i,t){if("native"in i)return i;let{canvas:e,currentDevicePixelRatio:s}=t,n=si(e),o=n.boxSizing==="border-box",a=Tt(n,"padding"),r=Tt(n,"border","width"),{x:l,y:c,box:h}=Ea(i,e),d=a.left+(h&&r.left),u=a.top+(h&&r.top),{width:f,height:g}=t;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*e.width/s),y:Math.round((c-u)/g*e.height/s)}}function Fa(i,t,e){let s,n;if(t===void 0||e===void 0){let o=ii(i);if(!o)t=i.clientWidth,e=i.clientHeight;else{let a=o.getBoundingClientRect(),r=si(o),l=Tt(r,"border","width"),c=Tt(r,"padding");t=a.width-c.width-l.width,e=a.height-c.height-l.height,s=Ue(r.maxWidth,o,"clientWidth"),n=Ue(r.maxHeight,o,"clientHeight")}}return{width:t,height:e,maxWidth:s||Ye,maxHeight:n||Ye}}var Pi=i=>Math.round(i*10)/10;function mn(i,t,e,s){let n=si(i),o=Tt(n,"margin"),a=Ue(n.maxWidth,i,"clientWidth")||Ye,r=Ue(n.maxHeight,i,"clientHeight")||Ye,l=Fa(i,t,e),{width:c,height:h}=l;if(n.boxSizing==="content-box"){let d=Tt(n,"border","width"),u=Tt(n,"padding");c-=u.width+d.width,h-=u.height+d.height}return c=Math.max(0,c-o.width),h=Math.max(0,s?Math.floor(c/s):h-o.height),c=Pi(Math.min(c,a,l.maxWidth)),h=Pi(Math.min(h,r,l.maxHeight)),c&&!h&&(h=Pi(c/2)),{width:c,height:h}}function Qi(i,t,e){let s=t||1,n=Math.floor(i.height*s),o=Math.floor(i.width*s);i.height=n/s,i.width=o/s;let a=i.canvas;return a.style&&(e||!a.style.height&&!a.style.width)&&(a.style.height=`${i.height}px`,a.style.width=`${i.width}px`),i.currentDevicePixelRatio!==s||a.height!==n||a.width!==o?(i.currentDevicePixelRatio=s,a.height=n,a.width=o,i.ctx.setTransform(s,0,0,s,0,0),!0):!1}var bn=function(){let i=!1;try{let t={get passive(){return i=!0,!1}};window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch{}return i}();function ts(i,t){let e=Ta(i,t),s=e&&e.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}function xt(i,t,e,s){return{x:i.x+e*(t.x-i.x),y:i.y+e*(t.y-i.y)}}function _n(i,t,e,s){return{x:i.x+e*(t.x-i.x),y:s==="middle"?e<.5?i.y:t.y:s==="after"?e<1?i.y:t.y:e>0?t.y:i.y}}function xn(i,t,e,s){let n={x:i.cp2x,y:i.cp2y},o={x:t.cp1x,y:t.cp1y},a=xt(i,n,e),r=xt(n,o,e),l=xt(o,t,e),c=xt(a,r,e),h=xt(r,l,e);return xt(c,h,e)}var Bs=new Map;function Ia(i,t){t=t||{};let e=i+JSON.stringify(t),s=Bs.get(e);return s||(s=new Intl.NumberFormat(i,t),Bs.set(e,s)),s}function Jt(i,t,e){return Ia(t,e).format(i)}var za=function(i,t){return{x(e){return i+i+t-e},setWidth(e){t=e},textAlign(e){return e==="center"?e:e==="right"?"left":"right"},xPlus(e,s){return e-s},leftForLtr(e,s){return e-s}}},Ba=function(){return{x(i){return i},setWidth(i){},textAlign(i){return i},xPlus(i,t){return i+t},leftForLtr(i,t){return i}}};function Et(i,t,e){return i?za(t,e):Ba()}function es(i,t){let e,s;(t==="ltr"||t==="rtl")&&(e=i.canvas.style,s=[e.getPropertyValue("direction"),e.getPropertyPriority("direction")],e.setProperty("direction",t,"important"),i.prevTextDirection=s)}function is(i,t){t!==void 0&&(delete i.prevTextDirection,i.canvas.style.setProperty("direction",t[0],t[1]))}function yn(i){return i==="angle"?{between:qt,compare:Wo,normalize:G}:{between:lt,compare:(t,e)=>t-e,normalize:t=>t}}function Vs({start:i,end:t,count:e,loop:s,style:n}){return{start:i%e,end:t%e,loop:s&&(t-i+1)%e===0,style:n}}function Va(i,t,e){let{property:s,start:n,end:o}=e,{between:a,normalize:r}=yn(s),l=t.length,{start:c,end:h,loop:d}=i,u,f;if(d){for(c+=l,h+=l,u=0,f=l;ul(n,v,b)&&r(n,v)!==0,x=()=>r(o,b)===0||l(o,v,b),M=()=>p||y(),w=()=>!p||x();for(let S=h,k=h;S<=d;++S)_=t[S%a],!_.skip&&(b=c(_[s]),b!==v&&(p=l(b,n,o),m===null&&M()&&(m=r(b,n)===0?S:k),m!==null&&w()&&(g.push(Vs({start:m,end:S,loop:u,count:a,style:f})),m=null),k=S,v=b));return m!==null&&g.push(Vs({start:m,end:d,loop:u,count:a,style:f})),g}function ns(i,t){let e=[],s=i.segments;for(let n=0;nn&&i[o%t].skip;)o--;return o%=t,{start:n,end:o}}function Na(i,t,e,s){let n=i.length,o=[],a=t,r=i[t],l;for(l=t+1;l<=e;++l){let c=i[l%n];c.skip||c.stop?r.skip||(s=!1,o.push({start:t%n,end:(l-1)%n,loop:s}),t=a=c.stop?l:null):(a=l,r.skip&&(t=l)),r=c}return a!==null&&o.push({start:t%n,end:a%n,loop:s}),o}function vn(i,t){let e=i.points,s=i.options.spanGaps,n=e.length;if(!n)return[];let o=!!i._loop,{start:a,end:r}=Wa(e,n,o,s);if(s===!0)return Ws(i,[{start:a,end:r,loop:o}],e,t);let l=rr({chart:t,initial:e.initial,numSteps:a,currentStep:Math.min(s-e.start,a)}))}_refresh(){this._request||(this._running=!0,this._request=zi.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(t=Date.now()){let e=0;this._charts.forEach((s,n)=>{if(!s.running||!s.items.length)return;let o=s.items,a=o.length-1,r=!1,l;for(;a>=0;--a)l=o[a],l._active?(l._total>s.duration&&(s.duration=l._total),l.tick(t),r=!0):(o[a]=o[o.length-1],o.pop());r&&(n.draw(),this._notify(n,s,t,"progress")),o.length||(s.running=!1,this._notify(n,s,t,"complete"),s.initial=!1),e+=o.length}),this._lastDate=t,e===0&&(this._running=!1)}_getAnims(t){let e=this._charts,s=e.get(t);return s||(s={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,s)),s}listen(t,e,s){this._getAnims(t).listeners[e].push(s)}add(t,e){!e||!e.length||this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){let e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce((s,n)=>Math.max(s,n._duration),0),this._refresh())}running(t){if(!this._running)return!1;let e=this._charts.get(t);return!(!e||!e.running||!e.items.length)}stop(t){let e=this._charts.get(t);if(!e||!e.items.length)return;let s=e.items,n=s.length-1;for(;n>=0;--n)s[n].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}},mt=new gs,Mn="transparent",$a={boolean(i,t,e){return e>.5?t:i},color(i,t,e){let s=$i(i||Mn),n=s.valid&&$i(t||Mn);return n&&n.valid?n.mix(s,e).hexString():t},number(i,t,e){return i+(t-i)*e}},ps=class{constructor(t,e,s,n){let o=e[s];n=Zt([t.to,n,o,t.from]);let a=Zt([t.from,o,n]);this._active=!0,this._fn=t.fn||$a[t.type||typeof a],this._easing=Ht[t.easing]||Ht.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=s,this._from=a,this._to=n,this._promises=void 0}active(){return this._active}update(t,e,s){if(this._active){this._notify(!1);let n=this._target[this._prop],o=s-this._start,a=this._duration-o;this._start=s,this._duration=Math.floor(Math.max(a,t.duration)),this._total+=o,this._loop=!!t.loop,this._to=Zt([t.to,e,n,t.from]),this._from=Zt([t.from,n,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){let e=t-this._start,s=this._duration,n=this._prop,o=this._from,a=this._loop,r=this._to,l;if(this._active=o!==r&&(a||e1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[n]=this._fn(o,r,l)}wait(){let t=this._promises||(this._promises=[]);return new Promise((e,s)=>{t.push({res:e,rej:s})})}_notify(t){let e=t?"res":"rej",s=this._promises||[];for(let n=0;ni!=="onProgress"&&i!=="onComplete"&&i!=="fn"});O.set("animations",{colors:{type:"color",properties:Xa},numbers:{type:"number",properties:Ya}});O.describe("animations",{_fallback:"animation"});O.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:i=>i|0}}}});var di=class{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!D(t))return;let e=this._properties;Object.getOwnPropertyNames(t).forEach(s=>{let n=t[s];if(!D(n))return;let o={};for(let a of Ua)o[a]=n[a];(I(n.properties)&&n.properties||[s]).forEach(a=>{(a===s||!e.has(a))&&e.set(a,o)})})}_animateOptions(t,e){let s=e.options,n=qa(t,s);if(!n)return[];let o=this._createAnimations(n,s);return s.$shared&&Ka(t.options.$animations,s).then(()=>{t.options=s},()=>{}),o}_createAnimations(t,e){let s=this._properties,n=[],o=t.$animations||(t.$animations={}),a=Object.keys(e),r=Date.now(),l;for(l=a.length-1;l>=0;--l){let c=a[l];if(c.charAt(0)==="$")continue;if(c==="options"){n.push(...this._animateOptions(t,e));continue}let h=e[c],d=o[c],u=s.get(c);if(d)if(u&&d.active()){d.update(u,h,r);continue}else d.cancel();if(!u||!u.duration){t[c]=h;continue}o[c]=d=new ps(u,t,c,h),n.push(d)}return n}update(t,e){if(this._properties.size===0){Object.assign(t,e);return}let s=this._createAnimations(t,e);if(s.length)return mt.add(this._chart,s),!0}};function Ka(i,t){let e=[],s=Object.keys(t);for(let n=0;n0||!e&&o<0)return n.index}return null}function Cn(i,t){let{chart:e,_cachedMeta:s}=i,n=e._stacks||(e._stacks={}),{iScale:o,vScale:a,index:r}=s,l=o.axis,c=a.axis,h=Qa(o,a,s),d=t.length,u;for(let f=0;fe[s].axis===t).shift()}function ir(i,t){return pt(i,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:"default",type:"dataset"})}function sr(i,t,e){return pt(i,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:e,index:t,mode:"default",type:"data"})}function ve(i,t){let e=i.controller.index,s=i.vScale&&i.vScale.axis;if(s){t=t||i._parsed;for(let n of t){let o=n._stacks;if(!o||o[s]===void 0||o[s][e]===void 0)return;delete o[s][e]}}}var as=i=>i==="reset"||i==="none",Dn=(i,t)=>t?i:Object.assign({},i),nr=(i,t,e)=>i&&!t.hidden&&t._stacked&&{keys:go(e,!0),values:null},et=class{constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.initialize()}initialize(){let t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=Sn(t.vScale,t),this.addElements()}updateIndex(t){this.index!==t&&ve(this._cachedMeta),this.index=t}linkScales(){let t=this.chart,e=this._cachedMeta,s=this.getDataset(),n=(d,u,f,g)=>d==="x"?u:d==="r"?g:f,o=e.xAxisID=C(s.xAxisID,os(t,"x")),a=e.yAxisID=C(s.yAxisID,os(t,"y")),r=e.rAxisID=C(s.rAxisID,os(t,"r")),l=e.indexAxis,c=e.iAxisID=n(l,o,a,r),h=e.vAxisID=n(l,a,o,r);e.xScale=this.getScaleForId(o),e.yScale=this.getScaleForId(a),e.rScale=this.getScaleForId(r),e.iScale=this.getScaleForId(c),e.vScale=this.getScaleForId(h)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){let e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){let t=this._cachedMeta;this._data&&Fi(this._data,this),t._stacked&&ve(t)}_dataCheck(){let t=this.getDataset(),e=t.data||(t.data=[]),s=this._data;if(D(e))this._data=Ja(e);else if(s!==e){if(s){Fi(s,this);let n=this._cachedMeta;ve(n),n._parsed=[]}e&&Object.isExtensible(e)&&Js(e,this),this._syncList=[],this._data=e}}addElements(){let t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){let e=this._cachedMeta,s=this.getDataset(),n=!1;this._dataCheck();let o=e._stacked;e._stacked=Sn(e.vScale,e),e.stack!==s.stack&&(n=!0,ve(e),e.stack=s.stack),this._resyncElements(t),(n||o!==e._stacked)&&Cn(this,e._parsed)}configure(){let t=this.chart.config,e=t.datasetScopeKeys(this._type),s=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(s,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){let{_cachedMeta:s,_data:n}=this,{iScale:o,_stacked:a}=s,r=o.axis,l=t===0&&e===n.length?!0:s._sorted,c=t>0&&s._parsed[t-1],h,d,u;if(this._parsing===!1)s._parsed=n,s._sorted=!0,u=n;else{I(n[t])?u=this.parseArrayData(s,n,t,e):D(n[t])?u=this.parseObjectData(s,n,t,e):u=this.parsePrimitiveData(s,n,t,e);let f=()=>d[r]===null||c&&d[r]p||d=0;--u)if(!g()){this.updateRangeFromParsed(c,t,f,l);break}}return c}getAllParsedValues(t){let e=this._cachedMeta._parsed,s=[],n,o,a;for(n=0,o=e.length;n=0&&tthis.getContext(s,n),p=c.resolveNamedOptions(u,f,g,d);return p.$shared&&(p.$shared=l,o[a]=Object.freeze(Dn(p,l))),p}_resolveAnimations(t,e,s){let n=this.chart,o=this._cachedDataOpts,a=`animation-${e}`,r=o[a];if(r)return r;let l;if(n.options.animation!==!1){let h=this.chart.config,d=h.datasetAnimationScopeKeys(this._type,e),u=h.getOptionScopes(this.getDataset(),d);l=h.createResolver(u,this.getContext(t,s,e))}let c=new di(n,l&&l.animations);return l&&l._cacheable&&(o[a]=Object.freeze(c)),c}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||as(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){let s=this.resolveDataElementOptions(t,e),n=this._sharedOptions,o=this.getSharedOptions(s),a=this.includeOptions(e,o)||o!==n;return this.updateSharedOptions(o,e,s),{sharedOptions:o,includeOptions:a}}updateElement(t,e,s,n){as(n)?Object.assign(t,s):this._resolveAnimations(e,n).update(t,s)}updateSharedOptions(t,e,s){t&&!as(e)&&this._resolveAnimations(void 0,e).update(t,s)}_setStyle(t,e,s,n){t.active=n;let o=this.getStyle(e,n);this._resolveAnimations(e,s,n).update(t,{options:!n&&this.getSharedOptions(o)||o})}removeHoverStyle(t,e,s){this._setStyle(t,s,"active",!1)}setHoverStyle(t,e,s){this._setStyle(t,s,"active",!0)}_removeDatasetHoverStyle(){let t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){let t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){let e=this._data,s=this._cachedMeta.data;for(let[r,l,c]of this._syncList)this[r](l,c);this._syncList=[];let n=s.length,o=e.length,a=Math.min(o,n);a&&this.parse(0,a),o>n?this._insertElements(n,o-n,t):o{for(c.length+=e,r=c.length-1;r>=a;r--)c[r]=c[r-e]};for(l(o),r=t;rn-o))}return i._cache.$bar}function ar(i){let t=i.iScale,e=or(t,i.type),s=t._length,n,o,a,r,l=()=>{a===32767||a===-32768||(J(r)&&(s=Math.min(s,Math.abs(a-r)||s)),r=a)};for(n=0,o=e.length;n0?n[i-1]:null,r=iMath.abs(r)&&(l=r,c=a),t[e.axis]=c,t._custom={barStart:l,barEnd:c,start:n,end:o,min:a,max:r}}function po(i,t,e,s){return I(i)?cr(i,t,e,s):t[e.axis]=e.parse(i,s),t}function On(i,t,e,s){let n=i.iScale,o=i.vScale,a=n.getLabels(),r=n===o,l=[],c,h,d,u;for(c=e,h=e+s;c=e?1:-1)}function dr(i){let t,e,s,n,o;return i.horizontal?(t=i.base>i.x,e="left",s="right"):(t=i.basel.controller.options.grouped),o=s.options.stacked,a=[],r=l=>{let c=l.controller.getParsed(e),h=c&&c[l.vScale.axis];if(T(h)||isNaN(h))return!0};for(let l of n)if(!(e!==void 0&&r(l))&&((o===!1||a.indexOf(l.stack)===-1||o===void 0&&l.stack===void 0)&&a.push(l.stack),l.index===t))break;return a.length||a.push(void 0),a}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,e,s){let n=this._getStacks(t,s),o=e!==void 0?n.indexOf(e):-1;return o===-1?n.length-1:o}_getRuler(){let t=this.options,e=this._cachedMeta,s=e.iScale,n=[],o,a;for(o=0,a=e.data.length;o=0;--s)e=Math.max(e,t[s].size(this.resolveDataElementOptions(s))/2);return e>0&&e}getLabelAndValue(t){let e=this._cachedMeta,{xScale:s,yScale:n}=e,o=this.getParsed(t),a=s.getLabelForValue(o.x),r=n.getLabelForValue(o.y),l=o._custom;return{label:e.label,value:"("+a+", "+r+(l?", "+l:"")+")"}}update(t){let e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,s,n){let o=n==="reset",{iScale:a,vScale:r}=this._cachedMeta,{sharedOptions:l,includeOptions:c}=this._getSharedOptions(e,n),h=a.axis,d=r.axis;for(let u=e;uqt(v,r,l,!0)?1:Math.max(y,y*e,x,x*e),g=(v,y,x)=>qt(v,r,l,!0)?-1:Math.min(y,y*e,x,x*e),p=f(0,c,d),m=f(V,h,u),b=g(B,c,d),_=g(B+V,h,u);s=(p-b)/2,n=(m-_)/2,o=-(p+b)/2,a=-(m+_)/2}return{ratioX:s,ratioY:n,offsetX:o,offsetY:a}}var Ot=class extends et{constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){let s=this.getDataset().data,n=this._cachedMeta;if(this._parsing===!1)n._parsed=s;else{let o=l=>+s[l];if(D(s[t])){let{key:l="value"}=this._parsing;o=c=>+gt(s[c],l)}let a,r;for(a=t,r=t+e;a0&&!isNaN(t)?F*(Math.abs(t)/e):0}getLabelAndValue(t){let e=this._cachedMeta,s=this.chart,n=s.data.labels||[],o=Jt(e._parsed[t],s.options.locale);return{label:n[t]||"",value:o}}getMaxBorderWidth(t){let e=0,s=this.chart,n,o,a,r,l;if(!t){for(n=0,o=s.data.datasets.length;ni!=="spacing",_indexable:i=>i!=="spacing"};Ot.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(i){let t=i.data;if(t.labels.length&&t.datasets.length){let{labels:{pointStyle:e}}=i.legend.options;return t.labels.map((s,n)=>{let a=i.getDatasetMeta(0).controller.getStyle(n);return{text:s,fillStyle:a.backgroundColor,strokeStyle:a.borderColor,lineWidth:a.borderWidth,pointStyle:e,hidden:!i.getDataVisibility(n),index:n}})}return[]}},onClick(i,t,e){e.chart.toggleDataVisibility(t.index),e.chart.update()}},tooltip:{callbacks:{title(){return""},label(i){let t=i.label,e=": "+i.formattedValue;return I(t)?(t=t.slice(),t[0]+=e):t+=e,t}}}}};var se=class extends et{initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(t){let e=this._cachedMeta,{dataset:s,data:n=[],_dataset:o}=e,a=this.chart._animationsDisabled,{start:r,count:l}=Vi(e,n,a);this._drawStart=r,this._drawCount=l,Wi(e)&&(r=0,l=n.length),s._chart=this.chart,s._datasetIndex=this.index,s._decimated=!!o._decimated,s.points=n;let c=this.resolveDatasetElementOptions(t);this.options.showLine||(c.borderWidth=0),c.segment=this.options.segment,this.updateElement(s,void 0,{animated:!a,options:c},t),this.updateElements(n,r,l,t)}updateElements(t,e,s,n){let o=n==="reset",{iScale:a,vScale:r,_stacked:l,_dataset:c}=this._cachedMeta,{sharedOptions:h,includeOptions:d}=this._getSharedOptions(e,n),u=a.axis,f=r.axis,{spanGaps:g,segment:p}=this.options,m=Rt(g)?g:Number.POSITIVE_INFINITY,b=this.chart._animationsDisabled||o||n==="none",_=e>0&&this.getParsed(e-1);for(let v=e;v0&&Math.abs(x[u]-_[u])>m,p&&(M.parsed=x,M.raw=c.data[v]),d&&(M.options=h||this.resolveDataElementOptions(v,y.active?"active":n)),b||this.updateElement(y,v,M,n),_=x}}getMaxOverflow(){let t=this._cachedMeta,e=t.dataset,s=e.options&&e.options.borderWidth||0,n=t.data||[];if(!n.length)return s;let o=n[0].size(this.resolveDataElementOptions(0)),a=n[n.length-1].size(this.resolveDataElementOptions(n.length-1));return Math.max(s,o,a)/2}draw(){let t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}};se.id="line";se.defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1};se.overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};var ne=class extends et{constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){let e=this._cachedMeta,s=this.chart,n=s.data.labels||[],o=Jt(e._parsed[t].r,s.options.locale);return{label:n[t]||"",value:o}}parseObjectData(t,e,s,n){return Zi.bind(this)(t,e,s,n)}update(t){let e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){let t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach((s,n)=>{let o=this.getParsed(n).r;!isNaN(o)&&this.chart.getDataVisibility(n)&&(oe.max&&(e.max=o))}),e}_updateRadius(){let t=this.chart,e=t.chartArea,s=t.options,n=Math.min(e.right-e.left,e.bottom-e.top),o=Math.max(n/2,0),a=Math.max(s.cutoutPercentage?o/100*s.cutoutPercentage:1,0),r=(o-a)/t.getVisibleDatasetCount();this.outerRadius=o-r*this.index,this.innerRadius=this.outerRadius-r}updateElements(t,e,s,n){let o=n==="reset",a=this.chart,l=a.options.animation,c=this._cachedMeta.rScale,h=c.xCenter,d=c.yCenter,u=c.getIndexAngle(0)-.5*B,f=u,g,p=360/this.countVisibleElements();for(g=0;g{!isNaN(this.getParsed(n).r)&&this.chart.getDataVisibility(n)&&e++}),e}_computeAngle(t,e,s){return this.chart.getDataVisibility(t)?nt(this.resolveDataElementOptions(t,e).angle||s):0}};ne.id="polarArea";ne.defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0};ne.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(i){let t=i.data;if(t.labels.length&&t.datasets.length){let{labels:{pointStyle:e}}=i.legend.options;return t.labels.map((s,n)=>{let a=i.getDatasetMeta(0).controller.getStyle(n);return{text:s,fillStyle:a.backgroundColor,strokeStyle:a.borderColor,lineWidth:a.borderWidth,pointStyle:e,hidden:!i.getDataVisibility(n),index:n}})}return[]}},onClick(i,t,e){e.chart.toggleDataVisibility(t.index),e.chart.update()}},tooltip:{callbacks:{title(){return""},label(i){return i.chart.data.labels[i.dataIndex]+": "+i.formattedValue}}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};var De=class extends Ot{};De.id="pie";De.defaults={cutout:0,rotation:0,circumference:360,radius:"100%"};var oe=class extends et{getLabelAndValue(t){let e=this._cachedMeta.vScale,s=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(s[e.axis])}}parseObjectData(t,e,s,n){return Zi.bind(this)(t,e,s,n)}update(t){let e=this._cachedMeta,s=e.dataset,n=e.data||[],o=e.iScale.getLabels();if(s.points=n,t!=="resize"){let a=this.resolveDatasetElementOptions(t);this.options.showLine||(a.borderWidth=0);let r={_loop:!0,_fullLoop:o.length===n.length,options:a};this.updateElement(s,void 0,r,t)}this.updateElements(n,0,n.length,t)}updateElements(t,e,s,n){let o=this._cachedMeta.rScale,a=n==="reset";for(let r=e;r{n[o]=s[o]&&s[o].active()?s[o]._to:this[o]}),n}};it.defaults={};it.defaultRoutes=void 0;var mo={values(i){return I(i)?i:""+i},numeric(i,t,e){if(i===0)return"0";let s=this.chart.options.locale,n,o=i;if(e.length>1){let c=Math.max(Math.abs(e[0].value),Math.abs(e[e.length-1].value));(c<1e-4||c>1e15)&&(n="scientific"),o=mr(i,e)}let a=tt(Math.abs(o)),r=Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:n,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),Jt(i,s,l)},logarithmic(i,t,e){if(i===0)return"0";let s=i/Math.pow(10,Math.floor(tt(i)));return s===1||s===2||s===5?mo.numeric.call(this,i,t,e):""}};function mr(i,t){let e=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;return Math.abs(e)>=1&&i!==Math.floor(i)&&(e=i-Math.floor(i)),e}var bi={formatters:mo};O.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",grace:0,grid:{display:!0,lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(i,t)=>t.lineWidth,tickColor:(i,t)=>t.color,offset:!1,borderDash:[],borderDashOffset:0,borderWidth:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:bi.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}});O.route("scale.ticks","color","","color");O.route("scale.grid","color","","borderColor");O.route("scale.grid","borderColor","","borderColor");O.route("scale.title","color","","color");O.describe("scale",{_fallback:!1,_scriptable:i=>!i.startsWith("before")&&!i.startsWith("after")&&i!=="callback"&&i!=="parser",_indexable:i=>i!=="borderDash"&&i!=="tickBorderDash"});O.describe("scales",{_fallback:"scale"});O.describe("scale.ticks",{_scriptable:i=>i!=="backdropPadding"&&i!=="callback",_indexable:i=>i!=="backdropPadding"});function br(i,t){let e=i.options.ticks,s=e.maxTicksLimit||_r(i),n=e.major.enabled?yr(t):[],o=n.length,a=n[0],r=n[o-1],l=[];if(o>s)return vr(t,l,n,o/s),l;let c=xr(n,t,s);if(o>0){let h,d,u=o>1?Math.round((r-a)/(o-1)):null;for(ni(t,l,c,T(u)?0:a-u,a),h=0,d=o-1;hn)return l}return Math.max(n,1)}function yr(i){let t=[],e,s;for(e=0,s=i.length;ei==="left"?"right":i==="right"?"left":i,Ln=(i,t,e)=>t==="top"||t==="left"?i[t]+e:i[t]-e;function Rn(i,t){let e=[],s=i.length/t,n=i.length,o=0;for(;oa+r)))return l}function Sr(i,t){E(i,e=>{let s=e.gc,n=s.length/2,o;if(n>t){for(o=0;os?s:e,s=n&&e>s?e:s,{min:Q(e,Q(s,e)),max:Q(s,Q(e,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){let t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){z(this.options.beforeUpdate,[this])}update(t,e,s){let{beginAtZero:n,grace:o,ticks:a}=this.options,r=a.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=s=Object.assign({left:0,right:0,top:0,bottom:0},s),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+s.left+s.right:this.height+s.top+s.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=hn(this,o,n),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();let l=r=o||s<=1||!this.isHorizontal()){this.labelRotation=n;return}let h=this._getLabelSizes(),d=h.widest.width,u=h.highest.height,f=Y(this.chart.width-d,0,this.maxWidth);r=t.offset?this.maxWidth/s:f/(s-1),d+6>r&&(r=f/(s-(t.offset?.5:1)),l=this.maxHeight-Me(t.grid)-e.padding-En(t.title,this.chart.options.font),c=Math.sqrt(d*d+u*u),a=qe(Math.min(Math.asin(Y((h.highest.height+6)/r,-1,1)),Math.asin(Y(l/c,-1,1))-Math.asin(Y(u/c,-1,1)))),a=Math.max(n,Math.min(o,a))),this.labelRotation=a}afterCalculateLabelRotation(){z(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){z(this.options.beforeFit,[this])}fit(){let t={width:0,height:0},{chart:e,options:{ticks:s,title:n,grid:o}}=this,a=this._isVisible(),r=this.isHorizontal();if(a){let l=En(n,e.options.font);if(r?(t.width=this.maxWidth,t.height=Me(o)+l):(t.height=this.maxHeight,t.width=Me(o)+l),s.display&&this.ticks.length){let{first:c,last:h,widest:d,highest:u}=this._getLabelSizes(),f=s.padding*2,g=nt(this.labelRotation),p=Math.cos(g),m=Math.sin(g);if(r){let b=s.mirror?0:m*d.width+p*u.height;t.height=Math.min(this.maxHeight,t.height+b+f)}else{let b=s.mirror?0:p*d.width+m*u.height;t.width=Math.min(this.maxWidth,t.width+b+f)}this._calculatePadding(c,h,m,p)}}this._handleMargins(),r?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,s,n){let{ticks:{align:o,padding:a},position:r}=this.options,l=this.labelRotation!==0,c=r!=="top"&&this.axis==="x";if(this.isHorizontal()){let h=this.getPixelForTick(0)-this.left,d=this.right-this.getPixelForTick(this.ticks.length-1),u=0,f=0;l?c?(u=n*t.width,f=s*e.height):(u=s*t.height,f=n*e.width):o==="start"?f=e.width:o==="end"?u=t.width:o!=="inner"&&(u=t.width/2,f=e.width/2),this.paddingLeft=Math.max((u-h+a)*this.width/(this.width-h),0),this.paddingRight=Math.max((f-d+a)*this.width/(this.width-d),0)}else{let h=e.height/2,d=t.height/2;o==="start"?(h=0,d=t.height):o==="end"&&(h=e.height,d=0),this.paddingTop=h+a,this.paddingBottom=d+a}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){z(this.options.afterFit,[this])}isHorizontal(){let{axis:t,position:e}=this.options;return e==="top"||e==="bottom"||t==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){this.beforeTickToLabelConversion(),this.generateTickLabels(t);let e,s;for(e=0,s=t.length;e({width:o[w]||0,height:a[w]||0});return{first:M(0),last:M(e-1),widest:M(y),highest:M(x),widths:o,heights:a}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){let e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);let e=this._startPixel+t*this._length;return Ks(this._alignToPixels?wt(this.chart,e,0):e)}getDecimalForPixel(t){let e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){let{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){let e=this.ticks||[];if(t>=0&&tr*n?r/s:l/n:l*n0}_computeGridLineItems(t){let e=this.axis,s=this.chart,n=this.options,{grid:o,position:a}=n,r=o.offset,l=this.isHorizontal(),h=this.ticks.length+(r?1:0),d=Me(o),u=[],f=o.setContext(this.getContext()),g=f.drawBorder?f.borderWidth:0,p=g/2,m=function(P){return wt(s,P,g)},b,_,v,y,x,M,w,S,k,L,R,A;if(a==="top")b=m(this.bottom),M=this.bottom-d,S=b-p,L=m(t.top)+p,A=t.bottom;else if(a==="bottom")b=m(this.top),L=t.top,A=m(t.bottom)-p,M=b+p,S=this.top+d;else if(a==="left")b=m(this.right),x=this.right-d,w=b-p,k=m(t.left)+p,R=t.right;else if(a==="right")b=m(this.left),k=t.left,R=m(t.right)-p,x=b+p,w=this.left+d;else if(e==="x"){if(a==="center")b=m((t.top+t.bottom)/2+.5);else if(D(a)){let P=Object.keys(a)[0],j=a[P];b=m(this.chart.scales[P].getPixelForValue(j))}L=t.top,A=t.bottom,M=b+p,S=M+d}else if(e==="y"){if(a==="center")b=m((t.left+t.right)/2);else if(D(a)){let P=Object.keys(a)[0],j=a[P];b=m(this.chart.scales[P].getPixelForValue(j))}x=b-p,w=x-d,k=t.left,R=t.right}let H=C(n.ticks.maxTicksLimit,h),q=Math.max(1,Math.ceil(h/H));for(_=0;_o.value===t);return n>=0?e.setContext(this.getContext(n)).lineWidth:0}drawGrid(t){let e=this.options.grid,s=this.ctx,n=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t)),o,a,r=(l,c,h)=>{!h.width||!h.color||(s.save(),s.lineWidth=h.width,s.strokeStyle=h.color,s.setLineDash(h.borderDash||[]),s.lineDashOffset=h.borderDashOffset,s.beginPath(),s.moveTo(l.x,l.y),s.lineTo(c.x,c.y),s.stroke(),s.restore())};if(e.display)for(o=0,a=n.length;o{this.draw(n)}}]:[{z:s,draw:n=>{this.drawBackground(),this.drawGrid(n),this.drawTitle()}},{z:s+1,draw:()=>{this.drawBorder()}},{z:e,draw:n=>{this.drawLabels(n)}}]}getMatchingVisibleMetas(t){let e=this.chart.getSortedVisibleDatasetMetas(),s=this.axis+"AxisID",n=[],o,a;for(o=0,a=e.length;o{let s=e.split("."),n=s.pop(),o=[i].concat(s).join("."),a=t[e].split("."),r=a.pop(),l=a.join(".");O.route(o,n,l,r)})}function Lr(i){return"id"in i&&"defaults"in i}var ms=class{constructor(){this.controllers=new te(et,"datasets",!0),this.elements=new te(it,"elements"),this.plugins=new te(Object,"plugins"),this.scales=new te(_t,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,s){[...e].forEach(n=>{let o=s||this._getRegistryForType(n);s||o.isForType(n)||o===this.plugins&&n.id?this._exec(t,o,n):E(n,a=>{let r=s||this._getRegistryForType(a);this._exec(t,r,a)})})}_exec(t,e,s){let n=Ke(t);z(s["before"+n],[],s),e[t](s),z(s["after"+n],[],s)}_getRegistryForType(t){for(let e=0;e0&&this.getParsed(e-1);for(let y=e;y0&&Math.abs(M[f]-v[f])>b,m&&(w.parsed=M,w.raw=c.data[y]),u&&(w.options=d||this.resolveDataElementOptions(y,x.active?"active":n)),_||this.updateElement(x,y,w,n),v=M}this.updateSharedOptions(d,n,h)}getMaxOverflow(){let t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let r=0;for(let l=e.length-1;l>=0;--l)r=Math.max(r,e[l].size(this.resolveDataElementOptions(l))/2);return r>0&&r}let s=t.dataset,n=s.options&&s.options.borderWidth||0;if(!e.length)return n;let o=e[0].size(this.resolveDataElementOptions(0)),a=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(n,o,a)/2}};ae.id="scatter";ae.defaults={datasetElementType:!1,dataElementType:"point",showLine:!1,fill:!1};ae.overrides={interaction:{mode:"point"},plugins:{tooltip:{callbacks:{title(){return""},label(i){return"("+i.label+", "+i.formattedValue+")"}}}},scales:{x:{type:"linear"},y:{type:"linear"}}};var Rr=Object.freeze({__proto__:null,BarController:ee,BubbleController:ie,DoughnutController:Ot,LineController:se,PolarAreaController:ne,PieController:De,RadarController:oe,ScatterController:ae});function Ft(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}var Oe=class{constructor(t){this.options=t||{}}init(t){}formats(){return Ft()}parse(t,e){return Ft()}format(t,e){return Ft()}add(t,e,s){return Ft()}diff(t,e,s){return Ft()}startOf(t,e,s){return Ft()}endOf(t,e){return Ft()}};Oe.override=function(i){Object.assign(Oe.prototype,i)};var Er={_date:Oe};function Fr(i,t,e,s){let{controller:n,data:o,_sorted:a}=i,r=n._cachedMeta.iScale;if(r&&t===r.axis&&t!=="r"&&a&&o.length){let l=r._reversePixels?qs:at;if(s){if(n._sharedOptions){let c=o[0],h=typeof c.getRange=="function"&&c.getRange(t);if(h){let d=l(o,t,e-h),u=l(o,t,e+h);return{lo:d.lo,hi:u.hi}}}}else return l(o,t,e)}return{lo:0,hi:o.length-1}}function Ie(i,t,e,s,n){let o=i.getSortedVisibleDatasetMetas(),a=e[t];for(let r=0,l=o.length;r{l[a](t[e],n)&&(o.push({element:l,datasetIndex:c,index:h}),r=r||l.inRange(t.x,t.y,n))}),s&&!r?[]:o}var Vr={evaluateInteractionItems:Ie,modes:{index(i,t,e,s){let n=Pt(t,i),o=e.axis||"x",a=e.includeInvisible||!1,r=e.intersect?ls(i,n,o,s,a):cs(i,n,o,!1,s,a),l=[];return r.length?(i.getSortedVisibleDatasetMetas().forEach(c=>{let h=r[0].index,d=c.data[h];d&&!d.skip&&l.push({element:d,datasetIndex:c.index,index:h})}),l):[]},dataset(i,t,e,s){let n=Pt(t,i),o=e.axis||"xy",a=e.includeInvisible||!1,r=e.intersect?ls(i,n,o,s,a):cs(i,n,o,!1,s,a);if(r.length>0){let l=r[0].datasetIndex,c=i.getDatasetMeta(l).data;r=[];for(let h=0;he.pos===t)}function In(i,t){return i.filter(e=>bo.indexOf(e.pos)===-1&&e.box.axis===t)}function ke(i,t){return i.sort((e,s)=>{let n=t?s:e,o=t?e:s;return n.weight===o.weight?n.index-o.index:n.weight-o.weight})}function Wr(i){let t=[],e,s,n,o,a,r;for(e=0,s=(i||[]).length;ec.box.fullSize),!0),s=ke(we(t,"left"),!0),n=ke(we(t,"right")),o=ke(we(t,"top"),!0),a=ke(we(t,"bottom")),r=In(t,"x"),l=In(t,"y");return{fullSize:e,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(a).concat(r),chartArea:we(t,"chartArea"),vertical:s.concat(n).concat(l),horizontal:o.concat(a).concat(r)}}function zn(i,t,e,s){return Math.max(i[e],t[e])+Math.max(i[s],t[s])}function _o(i,t){i.top=Math.max(i.top,t.top),i.left=Math.max(i.left,t.left),i.bottom=Math.max(i.bottom,t.bottom),i.right=Math.max(i.right,t.right)}function $r(i,t,e,s){let{pos:n,box:o}=e,a=i.maxPadding;if(!D(n)){e.size&&(i[n]-=e.size);let d=s[e.stack]||{size:0,count:1};d.size=Math.max(d.size,e.horizontal?o.height:o.width),e.size=d.size/d.count,i[n]+=e.size}o.getPadding&&_o(a,o.getPadding());let r=Math.max(0,t.outerWidth-zn(a,i,"left","right")),l=Math.max(0,t.outerHeight-zn(a,i,"top","bottom")),c=r!==i.w,h=l!==i.h;return i.w=r,i.h=l,e.horizontal?{same:c,other:h}:{same:h,other:c}}function Yr(i){let t=i.maxPadding;function e(s){let n=Math.max(t[s]-i[s],0);return i[s]+=n,n}i.y+=e("top"),i.x+=e("left"),e("right"),e("bottom")}function Xr(i,t){let e=t.maxPadding;function s(n){let o={left:0,top:0,right:0,bottom:0};return n.forEach(a=>{o[a]=Math.max(t[a],e[a])}),o}return s(i?["left","right"]:["top","bottom"])}function Pe(i,t,e,s){let n=[],o,a,r,l,c,h;for(o=0,a=i.length,c=0;o{typeof p.beforeLayout=="function"&&p.beforeLayout()});let h=l.reduce((p,m)=>m.box.options&&m.box.options.display===!1?p:p+1,0)||1,d=Object.freeze({outerWidth:t,outerHeight:e,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o/2/h,hBoxMaxHeight:a/2}),u=Object.assign({},n);_o(u,U(s));let f=Object.assign({maxPadding:u,w:o,h:a,x:n.left,y:n.top},n),g=Hr(l.concat(c),d);Pe(r.fullSize,f,d,g),Pe(l,f,d,g),Pe(c,f,d,g)&&Pe(l,f,d,g),Yr(f),Bn(r.leftAndTop,f,d,g),f.x+=f.w,f.y+=f.h,Bn(r.rightAndBottom,f,d,g),i.chartArea={left:f.left,top:f.top,right:f.left+f.w,bottom:f.top+f.h,height:f.h,width:f.w},E(r.chartArea,p=>{let m=p.box;Object.assign(m,i.chartArea),m.update(f.w,f.h,{left:0,top:0,right:0,bottom:0})})}},ui=class{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,s){}removeEventListener(t,e,s){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,s,n){return e=Math.max(0,e||t.width),s=s||t.height,{width:e,height:Math.max(0,n?Math.floor(e/n):s)}}isAttached(t){return!0}updateConfig(t){}},bs=class extends ui{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}},hi="$chartjs",Ur={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},Vn=i=>i===null||i==="";function Kr(i,t){let e=i.style,s=i.getAttribute("height"),n=i.getAttribute("width");if(i[hi]={initial:{height:s,width:n,style:{display:e.display,height:e.height,width:e.width}}},e.display=e.display||"block",e.boxSizing=e.boxSizing||"border-box",Vn(n)){let o=ts(i,"width");o!==void 0&&(i.width=o)}if(Vn(s))if(i.style.height==="")i.height=i.width/(t||2);else{let o=ts(i,"height");o!==void 0&&(i.height=o)}return i}var xo=bn?{passive:!0}:!1;function qr(i,t,e){i.addEventListener(t,e,xo)}function Gr(i,t,e){i.canvas.removeEventListener(t,e,xo)}function Zr(i,t){let e=Ur[i.type]||i.type,{x:s,y:n}=Pt(i,t);return{type:e,chart:t,native:i,x:s!==void 0?s:null,y:n!==void 0?n:null}}function fi(i,t){for(let e of i)if(e===t||e.contains(t))return!0}function Jr(i,t,e){let s=i.canvas,n=new MutationObserver(o=>{let a=!1;for(let r of o)a=a||fi(r.addedNodes,s),a=a&&!fi(r.removedNodes,s);a&&e()});return n.observe(document,{childList:!0,subtree:!0}),n}function Qr(i,t,e){let s=i.canvas,n=new MutationObserver(o=>{let a=!1;for(let r of o)a=a||fi(r.removedNodes,s),a=a&&!fi(r.addedNodes,s);a&&e()});return n.observe(document,{childList:!0,subtree:!0}),n}var Ae=new Map,Wn=0;function yo(){let i=window.devicePixelRatio;i!==Wn&&(Wn=i,Ae.forEach((t,e)=>{e.currentDevicePixelRatio!==i&&t()}))}function tl(i,t){Ae.size||window.addEventListener("resize",yo),Ae.set(i,t)}function el(i){Ae.delete(i),Ae.size||window.removeEventListener("resize",yo)}function il(i,t,e){let s=i.canvas,n=s&&ii(s);if(!n)return;let o=Bi((r,l)=>{let c=n.clientWidth;e(r,l),c{let l=r[0],c=l.contentRect.width,h=l.contentRect.height;c===0&&h===0||o(c,h)});return a.observe(n),tl(i,o),a}function hs(i,t,e){e&&e.disconnect(),t==="resize"&&el(i)}function sl(i,t,e){let s=i.canvas,n=Bi(o=>{i.ctx!==null&&e(Zr(o,i))},i,o=>{let a=o[0];return[a,a.offsetX,a.offsetY]});return qr(s,t,n),n}var _s=class extends ui{acquireContext(t,e){let s=t&&t.getContext&&t.getContext("2d");return s&&s.canvas===t?(Kr(t,e),s):null}releaseContext(t){let e=t.canvas;if(!e[hi])return!1;let s=e[hi].initial;["height","width"].forEach(o=>{let a=s[o];T(a)?e.removeAttribute(o):e.setAttribute(o,a)});let n=s.style||{};return Object.keys(n).forEach(o=>{e.style[o]=n[o]}),e.width=e.width,delete e[hi],!0}addEventListener(t,e,s){this.removeEventListener(t,e);let n=t.$proxies||(t.$proxies={}),a={attach:Jr,detach:Qr,resize:il}[e]||sl;n[e]=a(t,e,s)}removeEventListener(t,e){let s=t.$proxies||(t.$proxies={}),n=s[e];if(!n)return;({attach:hs,detach:hs,resize:hs}[e]||Gr)(t,e,n),s[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,s,n){return mn(t,e,s,n)}isAttached(t){let e=ii(t);return!!(e&&e.isConnected)}};function nl(i){return!Ji()||typeof OffscreenCanvas<"u"&&i instanceof OffscreenCanvas?bs:_s}var xs=class{constructor(){this._init=[]}notify(t,e,s,n){e==="beforeInit"&&(this._init=this._createDescriptors(t,!0),this._notify(this._init,t,"install"));let o=n?this._descriptors(t).filter(n):this._descriptors(t),a=this._notify(o,t,e,s);return e==="afterDestroy"&&(this._notify(o,t,"stop"),this._notify(this._init,t,"uninstall")),a}_notify(t,e,s,n){n=n||{};for(let o of t){let a=o.plugin,r=a[s],l=[e,n,o.options];if(z(r,l,a)===!1&&n.cancelable)return!1}return!0}invalidate(){T(this._cache)||(this._oldCache=this._cache,this._cache=void 0)}_descriptors(t){if(this._cache)return this._cache;let e=this._cache=this._createDescriptors(t);return this._notifyStateChanges(t),e}_createDescriptors(t,e){let s=t&&t.config,n=C(s.options&&s.options.plugins,{}),o=ol(s);return n===!1&&!e?[]:rl(t,o,n,e)}_notifyStateChanges(t){let e=this._oldCache||[],s=this._cache,n=(o,a)=>o.filter(r=>!a.some(l=>r.plugin.id===l.plugin.id));this._notify(n(e,s),t,"stop"),this._notify(n(s,e),t,"start")}};function ol(i){let t={},e=[],s=Object.keys(ht.plugins.items);for(let o=0;o{let l=s[r];if(!D(l))return console.error(`Invalid scale configuration for scale: ${r}`);if(l._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${r}`);let c=vs(r,l),h=hl(c,n),d=e.scales||{};o[c]=o[c]||r,a[r]=Ut(Object.create(null),[{axis:c},l,d[c],d[h]])}),i.data.datasets.forEach(r=>{let l=r.type||i.type,c=r.indexAxis||ys(l,t),d=(Mt[l]||{}).scales||{};Object.keys(d).forEach(u=>{let f=cl(u,c),g=r[f+"AxisID"]||o[f]||f;a[g]=a[g]||Object.create(null),Ut(a[g],[{axis:f},s[g],d[u]])})}),Object.keys(a).forEach(r=>{let l=a[r];Ut(l,[O.scales[l.type],O.scale])}),a}function vo(i){let t=i.options||(i.options={});t.plugins=C(t.plugins,{}),t.scales=ul(i,t)}function Mo(i){return i=i||{},i.datasets=i.datasets||[],i.labels=i.labels||[],i}function fl(i){return i=i||{},i.data=Mo(i.data),vo(i),i}var Nn=new Map,wo=new Set;function ai(i,t){let e=Nn.get(i);return e||(e=t(),Nn.set(i,e),wo.add(e)),e}var Se=(i,t,e)=>{let s=gt(t,e);s!==void 0&&i.add(s)},Ms=class{constructor(t){this._config=fl(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=Mo(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){let t=this._config;this.clearCache(),vo(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return ai(t,()=>[[`datasets.${t}`,""]])}datasetAnimationScopeKeys(t,e){return ai(`${t}.transition.${e}`,()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]])}datasetElementScopeKeys(t,e){return ai(`${t}-${e}`,()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]])}pluginScopeKeys(t){let e=t.id,s=this.type;return ai(`${s}-plugin-${e}`,()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]])}_cachedScopes(t,e){let s=this._scopeCache,n=s.get(t);return(!n||e)&&(n=new Map,s.set(t,n)),n}getOptionScopes(t,e,s){let{options:n,type:o}=this,a=this._cachedScopes(t,s),r=a.get(e);if(r)return r;let l=new Set;e.forEach(h=>{t&&(l.add(t),h.forEach(d=>Se(l,t,d))),h.forEach(d=>Se(l,n,d)),h.forEach(d=>Se(l,Mt[o]||{},d)),h.forEach(d=>Se(l,O,d)),h.forEach(d=>Se(l,Je,d))});let c=Array.from(l);return c.length===0&&c.push(Object.create(null)),wo.has(e)&&a.set(e,c),c}chartOptionScopes(){let{options:t,type:e}=this;return[t,Mt[e]||{},O.datasets[e]||{},{type:e},O,Je]}resolveNamedOptions(t,e,s,n=[""]){let o={$shared:!0},{resolver:a,subPrefixes:r}=Hn(this._resolverCache,t,n),l=a;if(pl(a,e)){o.$shared=!1,s=ft(s)?s():s;let c=this.createResolver(t,s,r);l=Lt(a,s,c)}for(let c of e)o[c]=l[c];return o}createResolver(t,e,s=[""],n){let{resolver:o}=Hn(this._resolverCache,t,s);return D(e)?Lt(o,e,void 0,n):o}};function Hn(i,t,e){let s=i.get(t);s||(s=new Map,i.set(t,s));let n=e.join(),o=s.get(n);return o||(o={resolver:ei(t,e),subPrefixes:e.filter(r=>!r.toLowerCase().includes("hover"))},s.set(n,o)),o}var gl=i=>D(i)&&Object.getOwnPropertyNames(i).reduce((t,e)=>t||ft(i[e]),!1);function pl(i,t){let{isScriptable:e,isIndexable:s}=Ki(i);for(let n of t){let o=e(n),a=s(n),r=(a||o)&&i[n];if(o&&(ft(r)||gl(r))||a&&I(r))return!0}return!1}var ml="3.9.1",bl=["top","bottom","left","right","chartArea"];function jn(i,t){return i==="top"||i==="bottom"||bl.indexOf(i)===-1&&t==="x"}function $n(i,t){return function(e,s){return e[i]===s[i]?e[t]-s[t]:e[i]-s[i]}}function Yn(i){let t=i.chart,e=t.options.animation;t.notifyPlugins("afterRender"),z(e&&e.onComplete,[i],t)}function _l(i){let t=i.chart,e=t.options.animation;z(e&&e.onProgress,[i],t)}function ko(i){return Ji()&&typeof i=="string"?i=document.getElementById(i):i&&i.length&&(i=i[0]),i&&i.canvas&&(i=i.canvas),i}var gi={},So=i=>{let t=ko(i);return Object.values(gi).filter(e=>e.canvas===t).pop()};function xl(i,t,e){let s=Object.keys(i);for(let n of s){let o=+n;if(o>=t){let a=i[n];delete i[n],(e>0||o>t)&&(i[o+e]=a)}}}function yl(i,t,e,s){return!e||i.type==="mouseout"?null:s?t:i}var It=class{constructor(t,e){let s=this.config=new Ms(e),n=ko(t),o=So(n);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");let a=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||nl(n)),this.platform.updateConfig(s);let r=this.platform.acquireContext(n,a.aspectRatio),l=r&&r.canvas,c=l&&l.height,h=l&&l.width;if(this.id=Hs(),this.ctx=r,this.canvas=l,this.width=h,this.height=c,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new xs,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=Qs(d=>this.update(d),a.resizeDelay||0),this._dataChanges=[],gi[this.id]=this,!r||!l){console.error("Failed to create chart: can't acquire context from the given item");return}mt.listen(this,"complete",Yn),mt.listen(this,"progress",_l),this._initialize(),this.attached&&this.update()}get aspectRatio(){let{options:{aspectRatio:t,maintainAspectRatio:e},width:s,height:n,_aspectRatio:o}=this;return T(t)?e&&o?o:n?s/n:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():Qi(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Yi(this.canvas,this.ctx),this}stop(){return mt.stop(this),this}resize(t,e){mt.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){let s=this.options,n=this.canvas,o=s.maintainAspectRatio&&this.aspectRatio,a=this.platform.getMaximumSize(n,t,e,o),r=s.devicePixelRatio||this.platform.getDevicePixelRatio(),l=this.width?"resize":"attach";this.width=a.width,this.height=a.height,this._aspectRatio=this.aspectRatio,Qi(this,r,!0)&&(this.notifyPlugins("resize",{size:a}),z(s.onResize,[this,a],this),this.attached&&this._doResize(l)&&this.render())}ensureScalesHaveIDs(){let e=this.options.scales||{};E(e,(s,n)=>{s.id=n})}buildOrUpdateScales(){let t=this.options,e=t.scales,s=this.scales,n=Object.keys(s).reduce((a,r)=>(a[r]=!1,a),{}),o=[];e&&(o=o.concat(Object.keys(e).map(a=>{let r=e[a],l=vs(a,r),c=l==="r",h=l==="x";return{options:r,dposition:c?"chartArea":h?"bottom":"left",dtype:c?"radialLinear":h?"category":"linear"}}))),E(o,a=>{let r=a.options,l=r.id,c=vs(l,r),h=C(r.type,a.dtype);(r.position===void 0||jn(r.position,c)!==jn(a.dposition))&&(r.position=a.dposition),n[l]=!0;let d=null;if(l in s&&s[l].type===h)d=s[l];else{let u=ht.getScale(h);d=new u({id:l,type:h,ctx:this.ctx,chart:this}),s[d.id]=d}d.init(r,t)}),E(n,(a,r)=>{a||delete s[r]}),E(s,a=>{K.configure(this,a,a.options),K.addBox(this,a)})}_updateMetasets(){let t=this._metasets,e=this.data.datasets.length,s=t.length;if(t.sort((n,o)=>n.index-o.index),s>e){for(let n=e;ne.length&&delete this._stacks,t.forEach((s,n)=>{e.filter(o=>o===s._dataset).length===0&&this._destroyDatasetMeta(n)})}buildOrUpdateControllers(){let t=[],e=this.data.datasets,s,n;for(this._removeUnreferencedMetasets(),s=0,n=e.length;s{this.getDatasetMeta(e).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){let e=this.config;e.update();let s=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),n=this._animationsDisabled=!s.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0})===!1)return;let o=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let a=0;for(let c=0,h=this.data.datasets.length;c{c.reset()}),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort($n("z","_idx"));let{_active:r,_lastEvent:l}=this;l?this._eventHandler(l,!0):r.length&&this._updateHoverStyles(r,r,!0),this.render()}_updateScales(){E(this.scales,t=>{K.removeBox(this,t)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){let t=this.options,e=new Set(Object.keys(this._listeners)),s=new Set(t.events);(!Ai(e,s)||!!this._responsiveListeners!==t.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){let{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(let{method:s,start:n,count:o}of e){let a=s==="_removeElements"?-o:o;xl(t,n,a)}}_getUniformDataChanges(){let t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];let e=this.data.datasets.length,s=o=>new Set(t.filter(a=>a[0]===o).map((a,r)=>r+","+a.splice(1).join(","))),n=s(0);for(let o=1;oo.split(",")).map(o=>({method:o[1],start:+o[2],count:+o[3]}))}_updateLayout(t){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;K.update(this,this.width,this.height,t);let e=this.chartArea,s=e.width<=0||e.height<=0;this._layers=[],E(this.boxes,n=>{s&&n.position==="chartArea"||(n.configure&&n.configure(),this._layers.push(...n._layers()))},this),this._layers.forEach((n,o)=>{n._idx=o}),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})!==!1){for(let e=0,s=this.data.datasets.length;e=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){let e=this.ctx,s=t._clip,n=!s.disabled,o=this.chartArea,a={meta:t,index:t.index,cancelable:!0};this.notifyPlugins("beforeDatasetDraw",a)!==!1&&(n&&xe(e,{left:s.left===!1?0:o.left-s.left,right:s.right===!1?this.width:o.right+s.right,top:s.top===!1?0:o.top-s.top,bottom:s.bottom===!1?this.height:o.bottom+s.bottom}),t.controller.draw(),n&&ye(e),a.cancelable=!1,this.notifyPlugins("afterDatasetDraw",a))}isPointInArea(t){return Yt(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,s,n){let o=Vr.modes[e];return typeof o=="function"?o(this,t,s,n):[]}getDatasetMeta(t){let e=this.data.datasets[t],s=this._metasets,n=s.filter(o=>o&&o._dataset===e).pop();return n||(n={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},s.push(n)),n}getContext(){return this.$context||(this.$context=pt(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){let e=this.data.datasets[t];if(!e)return!1;let s=this.getDatasetMeta(t);return typeof s.hidden=="boolean"?!s.hidden:!e.hidden}setDatasetVisibility(t,e){let s=this.getDatasetMeta(t);s.hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,s){let n=s?"show":"hide",o=this.getDatasetMeta(t),a=o.controller._resolveAnimations(void 0,n);J(e)?(o.data[e].hidden=!s,this.update()):(this.setDatasetVisibility(t,s),a.update(o,{visible:s}),this.update(r=>r.datasetIndex===t?n:void 0))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){let e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),mt.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,o,a),t[o]=a},n=(o,a,r)=>{o.offsetX=a,o.offsetY=r,this._eventHandler(o)};E(this.options.events,o=>s(o,n))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});let t=this._responsiveListeners,e=this.platform,s=(l,c)=>{e.addEventListener(this,l,c),t[l]=c},n=(l,c)=>{t[l]&&(e.removeEventListener(this,l,c),delete t[l])},o=(l,c)=>{this.canvas&&this.resize(l,c)},a,r=()=>{n("attach",r),this.attached=!0,this.resize(),s("resize",o),s("detach",a)};a=()=>{this.attached=!1,n("resize",o),this._stop(),this._resize(0,0),s("attach",r)},e.isAttached(this.canvas)?r():a()}unbindEvents(){E(this._listeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._listeners={},E(this._responsiveListeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._responsiveListeners=void 0}updateHoverStyle(t,e,s){let n=s?"set":"remove",o,a,r,l;for(e==="dataset"&&(o=this.getDatasetMeta(t[0].datasetIndex),o.controller["_"+n+"DatasetHoverStyle"]()),r=0,l=t.length;r{let r=this.getDatasetMeta(o);if(!r)throw new Error("No dataset found at index "+o);return{datasetIndex:o,element:r.data[a],index:a}});!be(s,e)&&(this._active=s,this._lastEvent=null,this._updateHoverStyles(s,e))}notifyPlugins(t,e,s){return this._plugins.notify(this,t,e,s)}_updateHoverStyles(t,e,s){let n=this.options.hover,o=(l,c)=>l.filter(h=>!c.some(d=>h.datasetIndex===d.datasetIndex&&h.index===d.index)),a=o(e,t),r=s?t:o(t,e);a.length&&this.updateHoverStyle(a,n.mode,!1),r.length&&n.mode&&this.updateHoverStyle(r,n.mode,!0)}_eventHandler(t,e){let s={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},n=a=>(a.options.events||this.options.events).includes(t.native.type);if(this.notifyPlugins("beforeEvent",s,n)===!1)return;let o=this._handleEvent(t,e,s.inChartArea);return s.cancelable=!1,this.notifyPlugins("afterEvent",s,n),(o||s.changed)&&this.render(),this}_handleEvent(t,e,s){let{_active:n=[],options:o}=this,a=e,r=this._getActiveElements(t,n,s,a),l=Ys(t),c=yl(t,this._lastEvent,s,l);s&&(this._lastEvent=null,z(o.onHover,[t,r,this],this),l&&z(o.onClick,[t,r,this],this));let h=!be(r,n);return(h||e)&&(this._active=r,this._updateHoverStyles(r,n,e)),this._lastEvent=c,h}_getActiveElements(t,e,s,n){if(t.type==="mouseout")return[];if(!s)return e;let o=this.options.hover;return this.getElementsAtEventForMode(t,o.mode,o,n)}},Xn=()=>E(It.instances,i=>i._plugins.invalidate()),Ct=!0;Object.defineProperties(It,{defaults:{enumerable:Ct,value:O},instances:{enumerable:Ct,value:gi},overrides:{enumerable:Ct,value:Mt},registry:{enumerable:Ct,value:ht},version:{enumerable:Ct,value:ml},getChart:{enumerable:Ct,value:So},register:{enumerable:Ct,value:(...i)=>{ht.add(...i),Xn()}},unregister:{enumerable:Ct,value:(...i)=>{ht.remove(...i),Xn()}}});function Po(i,t,e){let{startAngle:s,pixelMargin:n,x:o,y:a,outerRadius:r,innerRadius:l}=t,c=n/r;i.beginPath(),i.arc(o,a,r,s-c,e+c),l>n?(c=n/l,i.arc(o,a,l,e+c,s-c,!0)):i.arc(o,a,n,e+V,s-V),i.closePath(),i.clip()}function vl(i){return ti(i,["outerStart","outerEnd","innerStart","innerEnd"])}function Ml(i,t,e,s){let n=vl(i.options.borderRadius),o=(e-t)/2,a=Math.min(o,s*t/2),r=l=>{let c=(e-Math.min(o,l))*s/2;return Y(l,0,Math.min(o,c))};return{outerStart:r(n.outerStart),outerEnd:r(n.outerEnd),innerStart:Y(n.innerStart,0,a),innerEnd:Y(n.innerEnd,0,a)}}function Qt(i,t,e,s){return{x:e+i*Math.cos(t),y:s+i*Math.sin(t)}}function ws(i,t,e,s,n,o){let{x:a,y:r,startAngle:l,pixelMargin:c,innerRadius:h}=t,d=Math.max(t.outerRadius+s+e-c,0),u=h>0?h+s+e+c:0,f=0,g=n-l;if(s){let P=h>0?h-s:0,j=d>0?d-s:0,N=(P+j)/2,At=N!==0?g*N/(N+s):g;f=(g-At)/2}let p=Math.max(.001,g*d-e/B)/d,m=(g-p)/2,b=l+m+f,_=n-m-f,{outerStart:v,outerEnd:y,innerStart:x,innerEnd:M}=Ml(t,u,d,_-b),w=d-v,S=d-y,k=b+v/w,L=_-y/S,R=u+x,A=u+M,H=b+x/R,q=_-M/A;if(i.beginPath(),o){if(i.arc(a,r,d,k,L),y>0){let N=Qt(S,L,a,r);i.arc(N.x,N.y,y,L,_+V)}let P=Qt(A,_,a,r);if(i.lineTo(P.x,P.y),M>0){let N=Qt(A,q,a,r);i.arc(N.x,N.y,M,_+V,q+Math.PI)}if(i.arc(a,r,u,_-M/u,b+x/u,!0),x>0){let N=Qt(R,H,a,r);i.arc(N.x,N.y,x,H+Math.PI,b-V)}let j=Qt(w,b,a,r);if(i.lineTo(j.x,j.y),v>0){let N=Qt(w,k,a,r);i.arc(N.x,N.y,v,b-V,k)}}else{i.moveTo(a,r);let P=Math.cos(k)*d+a,j=Math.sin(k)*d+r;i.lineTo(P,j);let N=Math.cos(L)*d+a,At=Math.sin(L)*d+r;i.lineTo(N,At)}i.closePath()}function wl(i,t,e,s,n){let{fullCircles:o,startAngle:a,circumference:r}=t,l=t.endAngle;if(o){ws(i,t,e,s,a+F,n);for(let c=0;c=F||qt(o,r,l),p=lt(a,c+u,h+u);return g&&p}getCenterPoint(t){let{x:e,y:s,startAngle:n,endAngle:o,innerRadius:a,outerRadius:r}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius","circumference"],t),{offset:l,spacing:c}=this.options,h=(n+o)/2,d=(a+r+c+l)/2;return{x:e+Math.cos(h)*d,y:s+Math.sin(h)*d}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){let{options:e,circumference:s}=this,n=(e.offset||0)/2,o=(e.spacing||0)/2,a=e.circular;if(this.pixelMargin=e.borderAlign==="inner"?.33:0,this.fullCircles=s>F?Math.floor(s/F):0,s===0||this.innerRadius<0||this.outerRadius<0)return;t.save();let r=0;if(n){r=n/2;let c=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(c)*r,Math.sin(c)*r),this.circumference>=B&&(r=n)}t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor;let l=wl(t,this,r,o,a);Sl(t,this,r,o,l,a),t.restore()}};re.id="arc";re.defaults={borderAlign:"center",borderColor:"#fff",borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0};re.defaultRoutes={backgroundColor:"backgroundColor"};function Co(i,t,e=t){i.lineCap=C(e.borderCapStyle,t.borderCapStyle),i.setLineDash(C(e.borderDash,t.borderDash)),i.lineDashOffset=C(e.borderDashOffset,t.borderDashOffset),i.lineJoin=C(e.borderJoinStyle,t.borderJoinStyle),i.lineWidth=C(e.borderWidth,t.borderWidth),i.strokeStyle=C(e.borderColor,t.borderColor)}function Pl(i,t,e){i.lineTo(e.x,e.y)}function Cl(i){return i.stepped?ln:i.tension||i.cubicInterpolationMode==="monotone"?cn:Pl}function Do(i,t,e={}){let s=i.length,{start:n=0,end:o=s-1}=e,{start:a,end:r}=t,l=Math.max(n,a),c=Math.min(o,r),h=nr&&o>r;return{count:s,start:l,loop:t.loop,ilen:c(a+(c?r-y:y))%o,v=()=>{p!==m&&(i.lineTo(h,m),i.lineTo(h,p),i.lineTo(h,b))};for(l&&(f=n[_(0)],i.moveTo(f.x,f.y)),u=0;u<=r;++u){if(f=n[_(u)],f.skip)continue;let y=f.x,x=f.y,M=y|0;M===g?(xm&&(m=x),h=(d*h+y)/++d):(v(),i.lineTo(y,x),g=M,d=0,p=m=x),b=x}v()}function ks(i){let t=i.options,e=t.borderDash&&t.borderDash.length;return!i._decimated&&!i._loop&&!t.tension&&t.cubicInterpolationMode!=="monotone"&&!t.stepped&&!e?Ol:Dl}function Al(i){return i.stepped?_n:i.tension||i.cubicInterpolationMode==="monotone"?xn:xt}function Tl(i,t,e,s){let n=t._path;n||(n=t._path=new Path2D,t.path(n,e,s)&&n.closePath()),Co(i,t.options),i.stroke(n)}function Ll(i,t,e,s){let{segments:n,options:o}=t,a=ks(t);for(let r of n)Co(i,o,r.style),i.beginPath(),a(i,t,r,{start:e,end:e+s-1})&&i.closePath(),i.stroke()}var Rl=typeof Path2D=="function";function El(i,t,e,s){Rl&&!t.options.segment?Tl(i,t,e,s):Ll(i,t,e,s)}var dt=class extends it{constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){let s=this.options;if((s.tension||s.cubicInterpolationMode==="monotone")&&!s.stepped&&!this._pointsUpdated){let n=s.spanGaps?this._loop:this._fullLoop;pn(this._points,s,t,n,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=vn(this,this.options.segment))}first(){let t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){let t=this.segments,e=this.points,s=t.length;return s&&e[t[s-1].end]}interpolate(t,e){let s=this.options,n=t[e],o=this.points,a=ns(this,{property:e,start:n,end:n});if(!a.length)return;let r=[],l=Al(s),c,h;for(c=0,h=a.length;ci!=="borderDash"&&i!=="fill"};function Un(i,t,e,s){let n=i.options,{[e]:o}=i.getProps([e],s);return Math.abs(t-o)=e)return i.slice(t,t+e);let a=[],r=(e-2)/(o-2),l=0,c=t+e-1,h=t,d,u,f,g,p;for(a[l++]=i[h],d=0;df&&(f=g,u=i[_],p=_);a[l++]=u,h=p}return a[l++]=i[c],a}function Hl(i,t,e,s){let n=0,o=0,a,r,l,c,h,d,u,f,g,p,m=[],b=t+e-1,_=i[t].x,y=i[b].x-_;for(a=t;ap&&(p=c,u=a),n=(o*n+r.x)/++o;else{let M=a-1;if(!T(d)&&!T(u)){let w=Math.min(d,u),S=Math.max(d,u);w!==f&&w!==M&&m.push({...i[w],x:n}),S!==f&&S!==M&&m.push({...i[S],x:n})}a>0&&M!==f&&m.push(i[M]),m.push(r),h=x,o=0,g=p=c,d=u=f=a}}return m}function Ao(i){if(i._decimated){let t=i._data;delete i._decimated,delete i._data,Object.defineProperty(i,"data",{value:t})}}function Kn(i){i.data.datasets.forEach(t=>{Ao(t)})}function jl(i,t){let e=t.length,s=0,n,{iScale:o}=i,{min:a,max:r,minDefined:l,maxDefined:c}=o.getUserBounds();return l&&(s=Y(at(t,o.axis,a).lo,0,e-1)),c?n=Y(at(t,o.axis,r).hi+1,s,e)-s:n=e-s,{start:s,count:n}}var $l={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(i,t,e)=>{if(!e.enabled){Kn(i);return}let s=i.width;i.data.datasets.forEach((n,o)=>{let{_data:a,indexAxis:r}=n,l=i.getDatasetMeta(o),c=a||n.data;if(Zt([r,i.options.indexAxis])==="y"||!l.controller.supportsDecimation)return;let h=i.scales[l.xAxisID];if(h.type!=="linear"&&h.type!=="time"||i.options.parsing)return;let{start:d,count:u}=jl(l,c),f=e.threshold||4*s;if(u<=f){Ao(n);return}T(a)&&(n._data=c,delete n.data,Object.defineProperty(n,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(p){this._data=p}}));let g;switch(e.algorithm){case"lttb":g=Nl(c,d,u,s,e);break;case"min-max":g=Hl(c,d,u,s);break;default:throw new Error(`Unsupported decimation algorithm '${e.algorithm}'`)}n._decimated=g})},destroy(i){Kn(i)}};function Yl(i,t,e){let s=i.segments,n=i.points,o=t.points,a=[];for(let r of s){let{start:l,end:c}=r;c=Cs(l,c,n);let h=Ss(e,n[l],n[c],r.loop);if(!t.segments){a.push({source:r,target:h,start:n[l],end:n[c]});continue}let d=ns(t,h);for(let u of d){let f=Ss(e,o[u.start],o[u.end],u.loop),g=ss(r,n,f);for(let p of g)a.push({source:p,target:u,start:{[e]:qn(h,f,"start",Math.max)},end:{[e]:qn(h,f,"end",Math.min)}})}}return a}function Ss(i,t,e,s){if(s)return;let n=t[i],o=e[i];return i==="angle"&&(n=G(n),o=G(o)),{property:i,start:n,end:o}}function Xl(i,t){let{x:e=null,y:s=null}=i||{},n=t.points,o=[];return t.segments.forEach(({start:a,end:r})=>{r=Cs(a,r,n);let l=n[a],c=n[r];s!==null?(o.push({x:l.x,y:s}),o.push({x:c.x,y:s})):e!==null&&(o.push({x:e,y:l.y}),o.push({x:e,y:c.y}))}),o}function Cs(i,t,e){for(;t>i;t--){let s=e[t];if(!isNaN(s.x)&&!isNaN(s.y))break}return t}function qn(i,t,e,s){return i&&t?s(i[e],t[e]):i?i[e]:t?t[e]:0}function To(i,t){let e=[],s=!1;return I(i)?(s=!0,e=i):e=Xl(i,t),e.length?new dt({points:e,options:{tension:0},_loop:s,_fullLoop:s}):null}function Gn(i){return i&&i.fill!==!1}function Ul(i,t,e){let n=i[t].fill,o=[t],a;if(!e)return n;for(;n!==!1&&o.indexOf(n)===-1;){if(!W(n))return n;if(a=i[n],!a)return!1;if(a.visible)return n;o.push(n),n=a.fill}return!1}function Kl(i,t,e){let s=Jl(i);if(D(s))return isNaN(s.value)?!1:s;let n=parseFloat(s);return W(n)&&Math.floor(n)===n?ql(s[0],t,n,e):["origin","start","end","stack","shape"].indexOf(s)>=0&&s}function ql(i,t,e,s){return(i==="-"||i==="+")&&(e=t+e),e===t||e<0||e>=s?!1:e}function Gl(i,t){let e=null;return i==="start"?e=t.bottom:i==="end"?e=t.top:D(i)?e=t.getPixelForValue(i.value):t.getBasePixel&&(e=t.getBasePixel()),e}function Zl(i,t,e){let s;return i==="start"?s=e:i==="end"?s=t.options.reverse?t.min:t.max:D(i)?s=i.value:s=t.getBaseValue(),s}function Jl(i){let t=i.options,e=t.fill,s=C(e&&e.target,e);return s===void 0&&(s=!!t.backgroundColor),s===!1||s===null?!1:s===!0?"origin":s}function Ql(i){let{scale:t,index:e,line:s}=i,n=[],o=s.segments,a=s.points,r=tc(t,e);r.push(To({x:null,y:t.bottom},s));for(let l=0;l=0;--a){let r=n[a].$filler;r&&(r.line.updateControlPoints(o,r.axis),s&&r.fill&&fs(i.ctx,r,o))}},beforeDatasetsDraw(i,t,e){if(e.drawTime!=="beforeDatasetsDraw")return;let s=i.getSortedVisibleDatasetMetas();for(let n=s.length-1;n>=0;--n){let o=s[n].$filler;Gn(o)&&fs(i.ctx,o,i.chartArea)}},beforeDatasetDraw(i,t,e){let s=t.meta.$filler;!Gn(s)||e.drawTime!=="beforeDatasetDraw"||fs(i.ctx,s,i.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}},to=(i,t)=>{let{boxHeight:e=t,boxWidth:s=t}=i;return i.usePointStyle&&(e=Math.min(e,t),s=i.pointStyleWidth||Math.min(s,t)),{boxWidth:s,boxHeight:e,itemHeight:Math.max(t,e)}},dc=(i,t)=>i!==null&&t!==null&&i.datasetIndex===t.datasetIndex&&i.index===t.index,mi=class extends it{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,s){this.maxWidth=t,this.maxHeight=e,this._margins=s,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){let t=this.options.labels||{},e=z(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter(s=>t.filter(s,this.chart.data))),t.sort&&(e=e.sort((s,n)=>t.sort(s,n,this.chart.data))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){let{options:t,ctx:e}=this;if(!t.display){this.width=this.height=0;return}let s=t.labels,n=$(s.font),o=n.size,a=this._computeTitleHeight(),{boxWidth:r,itemHeight:l}=to(s,o),c,h;e.font=n.string,this.isHorizontal()?(c=this.maxWidth,h=this._fitRows(a,o,r,l)+10):(h=this.maxHeight,c=this._fitCols(a,o,r,l)+10),this.width=Math.min(c,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,s,n){let{ctx:o,maxWidth:a,options:{labels:{padding:r}}}=this,l=this.legendHitBoxes=[],c=this.lineWidths=[0],h=n+r,d=t;o.textAlign="left",o.textBaseline="middle";let u=-1,f=-h;return this.legendItems.forEach((g,p)=>{let m=s+e/2+o.measureText(g.text).width;(p===0||c[c.length-1]+m+2*r>a)&&(d+=h,c[c.length-(p>0?0:1)]=0,f+=h,u++),l[p]={left:0,top:f,row:u,width:m,height:n},c[c.length-1]+=m+r}),d}_fitCols(t,e,s,n){let{ctx:o,maxHeight:a,options:{labels:{padding:r}}}=this,l=this.legendHitBoxes=[],c=this.columnSizes=[],h=a-t,d=r,u=0,f=0,g=0,p=0;return this.legendItems.forEach((m,b)=>{let _=s+e/2+o.measureText(m.text).width;b>0&&f+n+2*r>h&&(d+=u+r,c.push({width:u,height:f}),g+=u+r,p++,u=f=0),l[b]={left:g,top:f,col:p,width:_,height:n},u=Math.max(u,_),f+=n+r}),d+=u,c.push({width:u,height:f}),d}adjustHitBoxes(){if(!this.options.display)return;let t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:s,labels:{padding:n},rtl:o}}=this,a=Et(o,this.left,this.width);if(this.isHorizontal()){let r=0,l=X(s,this.left+n,this.right-this.lineWidths[r]);for(let c of e)r!==c.row&&(r=c.row,l=X(s,this.left+n,this.right-this.lineWidths[r])),c.top+=this.top+t+n,c.left=a.leftForLtr(a.x(l),c.width),l+=c.width+n}else{let r=0,l=X(s,this.top+t+n,this.bottom-this.columnSizes[r].height);for(let c of e)c.col!==r&&(r=c.col,l=X(s,this.top+t+n,this.bottom-this.columnSizes[r].height)),c.top=l,c.left+=this.left+n,c.left=a.leftForLtr(a.x(c.left),c.width),l+=c.height+n}}isHorizontal(){return this.options.position==="top"||this.options.position==="bottom"}draw(){if(this.options.display){let t=this.ctx;xe(t,this),this._draw(),ye(t)}}_draw(){let{options:t,columnSizes:e,lineWidths:s,ctx:n}=this,{align:o,labels:a}=t,r=O.color,l=Et(t.rtl,this.left,this.width),c=$(a.font),{color:h,padding:d}=a,u=c.size,f=u/2,g;this.drawTitle(),n.textAlign=l.textAlign("left"),n.textBaseline="middle",n.lineWidth=.5,n.font=c.string;let{boxWidth:p,boxHeight:m,itemHeight:b}=to(a,u),_=function(w,S,k){if(isNaN(p)||p<=0||isNaN(m)||m<0)return;n.save();let L=C(k.lineWidth,1);if(n.fillStyle=C(k.fillStyle,r),n.lineCap=C(k.lineCap,"butt"),n.lineDashOffset=C(k.lineDashOffset,0),n.lineJoin=C(k.lineJoin,"miter"),n.lineWidth=L,n.strokeStyle=C(k.strokeStyle,r),n.setLineDash(C(k.lineDash,[])),a.usePointStyle){let R={radius:m*Math.SQRT2/2,pointStyle:k.pointStyle,rotation:k.rotation,borderWidth:L},A=l.xPlus(w,p/2),H=S+f;Xi(n,R,A,H,a.pointStyleWidth&&p)}else{let R=S+Math.max((u-m)/2,0),A=l.leftForLtr(w,p),H=St(k.borderRadius);n.beginPath(),Object.values(H).some(q=>q!==0)?Gt(n,{x:A,y:R,w:p,h:m,radius:H}):n.rect(A,R,p,m),n.fill(),L!==0&&n.stroke()}n.restore()},v=function(w,S,k){kt(n,k.text,w,S+b/2,c,{strikethrough:k.hidden,textAlign:l.textAlign(k.textAlign)})},y=this.isHorizontal(),x=this._computeTitleHeight();y?g={x:X(o,this.left+d,this.right-s[0]),y:this.top+d+x,line:0}:g={x:this.left+d,y:X(o,this.top+x+d,this.bottom-e[0].height),line:0},es(this.ctx,t.textDirection);let M=b+d;this.legendItems.forEach((w,S)=>{n.strokeStyle=w.fontColor||h,n.fillStyle=w.fontColor||h;let k=n.measureText(w.text).width,L=l.textAlign(w.textAlign||(w.textAlign=a.textAlign)),R=p+f+k,A=g.x,H=g.y;l.setWidth(this.width),y?S>0&&A+R+d>this.right&&(H=g.y+=M,g.line++,A=g.x=X(o,this.left+d,this.right-s[g.line])):S>0&&H+M>this.bottom&&(A=g.x=A+e[g.line].width+d,g.line++,H=g.y=X(o,this.top+x+d,this.bottom-e[g.line].height));let q=l.x(A);_(q,H,w),A=tn(L,A+p+f,y?A+R:this.right,t.rtl),v(l.x(A),H,w),y?g.x+=R+d:g.y+=M}),is(this.ctx,t.textDirection)}drawTitle(){let t=this.options,e=t.title,s=$(e.font),n=U(e.padding);if(!e.display)return;let o=Et(t.rtl,this.left,this.width),a=this.ctx,r=e.position,l=s.size/2,c=n.top+l,h,d=this.left,u=this.width;if(this.isHorizontal())u=Math.max(...this.lineWidths),h=this.top+c,d=X(t.align,d,this.right-u);else{let g=this.columnSizes.reduce((p,m)=>Math.max(p,m.height),0);h=c+X(t.align,this.top,this.bottom-g-t.labels.padding-this._computeTitleHeight())}let f=X(r,d,d+u);a.textAlign=o.textAlign(Ze(r)),a.textBaseline="middle",a.strokeStyle=e.color,a.fillStyle=e.color,a.font=s.string,kt(a,e.text,f,h,s)}_computeTitleHeight(){let t=this.options.title,e=$(t.font),s=U(t.padding);return t.display?e.lineHeight+s.height:0}_getLegendItemAt(t,e){let s,n,o;if(lt(t,this.left,this.right)&<(e,this.top,this.bottom)){for(o=this.legendHitBoxes,s=0;si.chart.options.color,boxWidth:40,padding:10,generateLabels(i){let t=i.data.datasets,{labels:{usePointStyle:e,pointStyle:s,textAlign:n,color:o}}=i.legend.options;return i._getSortedDatasetMetas().map(a=>{let r=a.controller.getStyle(e?0:void 0),l=U(r.borderWidth);return{text:t[a.index].label,fillStyle:r.backgroundColor,fontColor:o,hidden:!a.visible,lineCap:r.borderCapStyle,lineDash:r.borderDash,lineDashOffset:r.borderDashOffset,lineJoin:r.borderJoinStyle,lineWidth:(l.width+l.height)/4,strokeStyle:r.borderColor,pointStyle:s||r.pointStyle,rotation:r.rotation,textAlign:n||r.textAlign,borderRadius:0,datasetIndex:a.index}},this)}},title:{color:i=>i.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:i=>!i.startsWith("on"),labels:{_scriptable:i=>!["generateLabels","filter","sort"].includes(i)}}},Te=class extends it{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){let s=this.options;if(this.left=0,this.top=0,!s.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=t,this.height=this.bottom=e;let n=I(s.text)?s.text.length:1;this._padding=U(s.padding);let o=n*$(s.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){let t=this.options.position;return t==="top"||t==="bottom"}_drawArgs(t){let{top:e,left:s,bottom:n,right:o,options:a}=this,r=a.align,l=0,c,h,d;return this.isHorizontal()?(h=X(r,s,o),d=e+t,c=o-s):(a.position==="left"?(h=s+t,d=X(r,n,e),l=B*-.5):(h=o-t,d=X(r,e,n),l=B*.5),c=n-e),{titleX:h,titleY:d,maxWidth:c,rotation:l}}draw(){let t=this.ctx,e=this.options;if(!e.display)return;let s=$(e.font),o=s.lineHeight/2+this._padding.top,{titleX:a,titleY:r,maxWidth:l,rotation:c}=this._drawArgs(o);kt(t,e.text,0,0,s,{color:e.color,maxWidth:l,rotation:c,textAlign:Ze(e.align),textBaseline:"middle",translation:[a,r]})}};function gc(i,t){let e=new Te({ctx:i.ctx,options:t,chart:i});K.configure(i,e,t),K.addBox(i,e),i.titleBlock=e}var pc={id:"title",_element:Te,start(i,t,e){gc(i,e)},stop(i){let t=i.titleBlock;K.removeBox(i,t),delete i.titleBlock},beforeUpdate(i,t,e){let s=i.titleBlock;K.configure(i,s,e),s.options=e},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}},ri=new WeakMap,mc={id:"subtitle",start(i,t,e){let s=new Te({ctx:i.ctx,options:e,chart:i});K.configure(i,s,e),K.addBox(i,s),ri.set(i,s)},stop(i){K.removeBox(i,ri.get(i)),ri.delete(i)},beforeUpdate(i,t,e){let s=ri.get(i);K.configure(i,s,e),s.options=e},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}},Ce={average(i){if(!i.length)return!1;let t,e,s=0,n=0,o=0;for(t=0,e=i.length;t-1?i.split(` +`):i}function bc(i,t){let{element:e,datasetIndex:s,index:n}=t,o=i.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:i,label:a,parsed:o.getParsed(n),raw:i.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:e}}function eo(i,t){let e=i.chart.ctx,{body:s,footer:n,title:o}=i,{boxWidth:a,boxHeight:r}=t,l=$(t.bodyFont),c=$(t.titleFont),h=$(t.footerFont),d=o.length,u=n.length,f=s.length,g=U(t.padding),p=g.height,m=0,b=s.reduce((y,x)=>y+x.before.length+x.lines.length+x.after.length,0);if(b+=i.beforeBody.length+i.afterBody.length,d&&(p+=d*c.lineHeight+(d-1)*t.titleSpacing+t.titleMarginBottom),b){let y=t.displayColors?Math.max(r,l.lineHeight):l.lineHeight;p+=f*y+(b-f)*l.lineHeight+(b-1)*t.bodySpacing}u&&(p+=t.footerMarginTop+u*h.lineHeight+(u-1)*t.footerSpacing);let _=0,v=function(y){m=Math.max(m,e.measureText(y).width+_)};return e.save(),e.font=c.string,E(i.title,v),e.font=l.string,E(i.beforeBody.concat(i.afterBody),v),_=t.displayColors?a+2+t.boxPadding:0,E(s,y=>{E(y.before,v),E(y.lines,v),E(y.after,v)}),_=0,e.font=h.string,E(i.footer,v),e.restore(),m+=g.width,{width:m,height:p}}function _c(i,t){let{y:e,height:s}=t;return ei.height-s/2?"bottom":"center"}function xc(i,t,e,s){let{x:n,width:o}=s,a=e.caretSize+e.caretPadding;if(i==="left"&&n+o+a>t.width||i==="right"&&n-o-a<0)return!0}function yc(i,t,e,s){let{x:n,width:o}=e,{width:a,chartArea:{left:r,right:l}}=i,c="center";return s==="center"?c=n<=(r+l)/2?"left":"right":n<=o/2?c="left":n>=a-o/2&&(c="right"),xc(c,i,t,e)&&(c="center"),c}function io(i,t,e){let s=e.yAlign||t.yAlign||_c(i,e);return{xAlign:e.xAlign||t.xAlign||yc(i,t,e,s),yAlign:s}}function vc(i,t){let{x:e,width:s}=i;return t==="right"?e-=s:t==="center"&&(e-=s/2),e}function Mc(i,t,e){let{y:s,height:n}=i;return t==="top"?s+=e:t==="bottom"?s-=n+e:s-=n/2,s}function so(i,t,e,s){let{caretSize:n,caretPadding:o,cornerRadius:a}=i,{xAlign:r,yAlign:l}=e,c=n+o,{topLeft:h,topRight:d,bottomLeft:u,bottomRight:f}=St(a),g=vc(t,r),p=Mc(t,l,c);return l==="center"?r==="left"?g+=c:r==="right"&&(g-=c):r==="left"?g-=Math.max(h,u)+n:r==="right"&&(g+=Math.max(d,f)+n),{x:Y(g,0,s.width-t.width),y:Y(p,0,s.height-t.height)}}function li(i,t,e){let s=U(e.padding);return t==="center"?i.x+i.width/2:t==="right"?i.x+i.width-s.right:i.x+s.left}function no(i){return ct([],bt(i))}function wc(i,t,e){return pt(i,{tooltip:t,tooltipItems:e,type:"tooltip"})}function oo(i,t){let e=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return e?i.override(e):i}var Le=class extends it{constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart||t._chart,this._chart=this.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){let t=this._cachedAnimations;if(t)return t;let e=this.chart,s=this.options.setContext(this.getContext()),n=s.enabled&&e.options.animation&&s.animations,o=new di(this.chart,n);return n._cacheable&&(this._cachedAnimations=Object.freeze(o)),o}getContext(){return this.$context||(this.$context=wc(this.chart.getContext(),this,this._tooltipItems))}getTitle(t,e){let{callbacks:s}=e,n=s.beforeTitle.apply(this,[t]),o=s.title.apply(this,[t]),a=s.afterTitle.apply(this,[t]),r=[];return r=ct(r,bt(n)),r=ct(r,bt(o)),r=ct(r,bt(a)),r}getBeforeBody(t,e){return no(e.callbacks.beforeBody.apply(this,[t]))}getBody(t,e){let{callbacks:s}=e,n=[];return E(t,o=>{let a={before:[],lines:[],after:[]},r=oo(s,o);ct(a.before,bt(r.beforeLabel.call(this,o))),ct(a.lines,r.label.call(this,o)),ct(a.after,bt(r.afterLabel.call(this,o))),n.push(a)}),n}getAfterBody(t,e){return no(e.callbacks.afterBody.apply(this,[t]))}getFooter(t,e){let{callbacks:s}=e,n=s.beforeFooter.apply(this,[t]),o=s.footer.apply(this,[t]),a=s.afterFooter.apply(this,[t]),r=[];return r=ct(r,bt(n)),r=ct(r,bt(o)),r=ct(r,bt(a)),r}_createItems(t){let e=this._active,s=this.chart.data,n=[],o=[],a=[],r=[],l,c;for(l=0,c=e.length;lt.filter(h,d,u,s))),t.itemSort&&(r=r.sort((h,d)=>t.itemSort(h,d,s))),E(r,h=>{let d=oo(t.callbacks,h);n.push(d.labelColor.call(this,h)),o.push(d.labelPointStyle.call(this,h)),a.push(d.labelTextColor.call(this,h))}),this.labelColors=n,this.labelPointStyles=o,this.labelTextColors=a,this.dataPoints=r,r}update(t,e){let s=this.options.setContext(this.getContext()),n=this._active,o,a=[];if(!n.length)this.opacity!==0&&(o={opacity:0});else{let r=Ce[s.position].call(this,n,this._eventPosition);a=this._createItems(s),this.title=this.getTitle(a,s),this.beforeBody=this.getBeforeBody(a,s),this.body=this.getBody(a,s),this.afterBody=this.getAfterBody(a,s),this.footer=this.getFooter(a,s);let l=this._size=eo(this,s),c=Object.assign({},r,l),h=io(this.chart,s,c),d=so(s,c,h,this.chart);this.xAlign=h.xAlign,this.yAlign=h.yAlign,o={opacity:1,x:d.x,y:d.y,width:l.width,height:l.height,caretX:r.x,caretY:r.y}}this._tooltipItems=a,this.$context=void 0,o&&this._resolveAnimations().update(this,o),t&&s.external&&s.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,s,n){let o=this.getCaretPosition(t,s,n);e.lineTo(o.x1,o.y1),e.lineTo(o.x2,o.y2),e.lineTo(o.x3,o.y3)}getCaretPosition(t,e,s){let{xAlign:n,yAlign:o}=this,{caretSize:a,cornerRadius:r}=s,{topLeft:l,topRight:c,bottomLeft:h,bottomRight:d}=St(r),{x:u,y:f}=t,{width:g,height:p}=e,m,b,_,v,y,x;return o==="center"?(y=f+p/2,n==="left"?(m=u,b=m-a,v=y+a,x=y-a):(m=u+g,b=m+a,v=y-a,x=y+a),_=m):(n==="left"?b=u+Math.max(l,h)+a:n==="right"?b=u+g-Math.max(c,d)-a:b=this.caretX,o==="top"?(v=f,y=v-a,m=b-a,_=b+a):(v=f+p,y=v+a,m=b+a,_=b-a),x=v),{x1:m,x2:b,x3:_,y1:v,y2:y,y3:x}}drawTitle(t,e,s){let n=this.title,o=n.length,a,r,l;if(o){let c=Et(s.rtl,this.x,this.width);for(t.x=li(this,s.titleAlign,s),e.textAlign=c.textAlign(s.titleAlign),e.textBaseline="middle",a=$(s.titleFont),r=s.titleSpacing,e.fillStyle=s.titleColor,e.font=a.string,l=0;lv!==0)?(t.beginPath(),t.fillStyle=o.multiKeyBackground,Gt(t,{x:m,y:p,w:c,h:l,radius:_}),t.fill(),t.stroke(),t.fillStyle=a.backgroundColor,t.beginPath(),Gt(t,{x:b,y:p+1,w:c-2,h:l-2,radius:_}),t.fill()):(t.fillStyle=o.multiKeyBackground,t.fillRect(m,p,c,l),t.strokeRect(m,p,c,l),t.fillStyle=a.backgroundColor,t.fillRect(b,p+1,c-2,l-2))}t.fillStyle=this.labelTextColors[s]}drawBody(t,e,s){let{body:n}=this,{bodySpacing:o,bodyAlign:a,displayColors:r,boxHeight:l,boxWidth:c,boxPadding:h}=s,d=$(s.bodyFont),u=d.lineHeight,f=0,g=Et(s.rtl,this.x,this.width),p=function(S){e.fillText(S,g.x(t.x+f),t.y+u/2),t.y+=u+o},m=g.textAlign(a),b,_,v,y,x,M,w;for(e.textAlign=a,e.textBaseline="middle",e.font=d.string,t.x=li(this,m,s),e.fillStyle=s.bodyColor,E(this.beforeBody,p),f=r&&m!=="right"?a==="center"?c/2+h:c+2+h:0,y=0,M=n.length;y0&&e.stroke()}_updateAnimationTarget(t){let e=this.chart,s=this.$animations,n=s&&s.x,o=s&&s.y;if(n||o){let a=Ce[t.position].call(this,this._active,this._eventPosition);if(!a)return;let r=this._size=eo(this,t),l=Object.assign({},a,this._size),c=io(e,t,l),h=so(t,l,c,e);(n._to!==h.x||o._to!==h.y)&&(this.xAlign=c.xAlign,this.yAlign=c.yAlign,this.width=r.width,this.height=r.height,this.caretX=a.x,this.caretY=a.y,this._resolveAnimations().update(this,h))}}_willRender(){return!!this.opacity}draw(t){let e=this.options.setContext(this.getContext()),s=this.opacity;if(!s)return;this._updateAnimationTarget(e);let n={width:this.width,height:this.height},o={x:this.x,y:this.y};s=Math.abs(s)<.001?0:s;let a=U(e.padding),r=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&r&&(t.save(),t.globalAlpha=s,this.drawBackground(o,t,n,e),es(t,e.textDirection),o.y+=a.top,this.drawTitle(o,t,e),this.drawBody(o,t,e),this.drawFooter(o,t,e),is(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){let s=this._active,n=t.map(({datasetIndex:r,index:l})=>{let c=this.chart.getDatasetMeta(r);if(!c)throw new Error("Cannot find a dataset at index "+r);return{datasetIndex:r,element:c.data[l],index:l}}),o=!be(s,n),a=this._positionChanged(n,e);(o||a)&&(this._active=n,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,s=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;let n=this.options,o=this._active||[],a=this._getActiveElements(t,o,e,s),r=this._positionChanged(a,t),l=e||!be(a,o)||r;return l&&(this._active=a,(n.enabled||n.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),l}_getActiveElements(t,e,s,n){let o=this.options;if(t.type==="mouseout")return[];if(!n)return e;let a=this.chart.getElementsAtEventForMode(t,o.mode,o,s);return o.reverse&&a.reverse(),a}_positionChanged(t,e){let{caretX:s,caretY:n,options:o}=this,a=Ce[o.position].call(this,t,e);return a!==!1&&(s!==a.x||n!==a.y)}};Le.positioners=Ce;var kc={id:"tooltip",_element:Le,positioners:Ce,afterInit(i,t,e){e&&(i.tooltip=new Le({chart:i,options:e}))},beforeUpdate(i,t,e){i.tooltip&&i.tooltip.initialize(e)},reset(i,t,e){i.tooltip&&i.tooltip.initialize(e)},afterDraw(i){let t=i.tooltip;if(t&&t._willRender()){let e={tooltip:t};if(i.notifyPlugins("beforeTooltipDraw",e)===!1)return;t.draw(i.ctx),i.notifyPlugins("afterTooltipDraw",e)}},afterEvent(i,t){if(i.tooltip){let e=t.replay;i.tooltip.handleEvent(t.event,e,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(i,t)=>t.bodyFont.size,boxWidth:(i,t)=>t.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:{beforeTitle:rt,title(i){if(i.length>0){let t=i[0],e=t.chart.data.labels,s=e?e.length:0;if(this&&this.options&&this.options.mode==="dataset")return t.dataset.label||"";if(t.label)return t.label;if(s>0&&t.dataIndexi!=="filter"&&i!=="itemSort"&&i!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},Sc=Object.freeze({__proto__:null,Decimation:$l,Filler:hc,Legend:fc,SubTitle:mc,Title:pc,Tooltip:kc}),Pc=(i,t,e,s)=>(typeof t=="string"?(e=i.push(t)-1,s.unshift({index:e,label:t})):isNaN(t)&&(e=null),e);function Cc(i,t,e,s){let n=i.indexOf(t);if(n===-1)return Pc(i,t,e,s);let o=i.lastIndexOf(t);return n!==o?e:n}var Dc=(i,t)=>i===null?null:Y(Math.round(i),0,t),he=class extends _t{constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){let e=this._addedLabels;if(e.length){let s=this.getLabels();for(let{index:n,label:o}of e)s[n]===o&&s.splice(n,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(T(t))return null;let s=this.getLabels();return e=isFinite(e)&&s[e]===t?e:Cc(s,t,C(e,t),this._addedLabels),Dc(e,s.length-1)}determineDataLimits(){let{minDefined:t,maxDefined:e}=this.getUserBounds(),{min:s,max:n}=this.getMinMax(!0);this.options.bounds==="ticks"&&(t||(s=0),e||(n=this.getLabels().length-1)),this.min=s,this.max=n}buildTicks(){let t=this.min,e=this.max,s=this.options.offset,n=[],o=this.getLabels();o=t===0&&e===o.length-1?o:o.slice(t,e+1),this._valueRange=Math.max(o.length-(s?0:1),1),this._startValue=this.min-(s?.5:0);for(let a=t;a<=e;a++)n.push({value:a});return n}getLabelForValue(t){let e=this.getLabels();return t>=0&&te.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}};he.id="category";he.defaults={ticks:{callback:he.prototype.getLabelForValue}};function Oc(i,t){let e=[],{bounds:n,step:o,min:a,max:r,precision:l,count:c,maxTicks:h,maxDigits:d,includeBounds:u}=i,f=o||1,g=h-1,{min:p,max:m}=t,b=!T(a),_=!T(r),v=!T(c),y=(m-p)/(d+1),x=Ti((m-p)/g/f)*f,M,w,S,k;if(x<1e-14&&!b&&!_)return[{value:p},{value:m}];k=Math.ceil(m/x)-Math.floor(p/x),k>g&&(x=Ti(k*x/g/f)*f),T(l)||(M=Math.pow(10,l),x=Math.ceil(x*M)/M),n==="ticks"?(w=Math.floor(p/x)*x,S=Math.ceil(m/x)*x):(w=p,S=m),b&&_&&o&&Us((r-a)/o,x/1e3)?(k=Math.round(Math.min((r-a)/x,h)),x=(r-a)/k,w=a,S=r):v?(w=b?a:w,S=_?r:S,k=c-1,x=(S-w)/k):(k=(S-w)/x,Kt(k,Math.round(k),x/1e3)?k=Math.round(k):k=Math.ceil(k));let L=Math.max(Ri(x),Ri(w));M=Math.pow(10,T(l)?L:l),w=Math.round(w*M)/M,S=Math.round(S*M)/M;let R=0;for(b&&(u&&w!==a?(e.push({value:a}),wn=e?n:l,r=l=>o=s?o:l;if(t){let l=ot(n),c=ot(o);l<0&&c<0?r(0):l>0&&c>0&&a(0)}if(n===o){let l=1;(o>=Number.MAX_SAFE_INTEGER||n<=Number.MIN_SAFE_INTEGER)&&(l=Math.abs(o*.05)),r(o+l),t||a(n-l)}this.min=n,this.max=o}getTickLimit(){let t=this.options.ticks,{maxTicksLimit:e,stepSize:s}=t,n;return s?(n=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,n>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${n} ticks. Limiting to 1000.`),n=1e3)):(n=this.computeTickLimit(),e=e||11),e&&(n=Math.min(e,n)),n}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){let t=this.options,e=t.ticks,s=this.getTickLimit();s=Math.max(2,s);let n={maxTicks:s,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:e.includeBounds!==!1},o=this._range||this,a=Oc(n,o);return t.bounds==="ticks"&&Li(a,this,"value"),t.reverse?(a.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),a}configure(){let t=this.ticks,e=this.min,s=this.max;if(super.configure(),this.options.offset&&t.length){let n=(s-e)/Math.max(t.length-1,1)/2;e-=n,s+=n}this._startValue=e,this._endValue=s,this._valueRange=s-e}getLabelForValue(t){return Jt(t,this.chart.options.locale,this.options.ticks.format)}},Re=class extends de{determineDataLimits(){let{min:t,max:e}=this.getMinMax(!0);this.min=W(t)?t:0,this.max=W(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){let t=this.isHorizontal(),e=t?this.width:this.height,s=nt(this.options.ticks.minRotation),n=(t?Math.sin(s):Math.cos(s))||.001,o=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,o.lineHeight/n))}getPixelForValue(t){return t===null?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}};Re.id="linear";Re.defaults={ticks:{callback:bi.formatters.numeric}};function ro(i){return i/Math.pow(10,Math.floor(tt(i)))===1}function Ac(i,t){let e=Math.floor(tt(t.max)),s=Math.ceil(t.max/Math.pow(10,e)),n=[],o=Q(i.min,Math.pow(10,Math.floor(tt(t.min)))),a=Math.floor(tt(o)),r=Math.floor(o/Math.pow(10,a)),l=a<0?Math.pow(10,Math.abs(a)):1;do n.push({value:o,major:ro(o)}),++r,r===10&&(r=1,++a,l=a>=0?1:l),o=Math.round(r*Math.pow(10,a)*l)/l;while(a0?s:null}determineDataLimits(){let{min:t,max:e}=this.getMinMax(!0);this.min=W(t)?Math.max(0,t):null,this.max=W(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this.handleTickRangeOptions()}handleTickRangeOptions(){let{minDefined:t,maxDefined:e}=this.getUserBounds(),s=this.min,n=this.max,o=l=>s=t?s:l,a=l=>n=e?n:l,r=(l,c)=>Math.pow(10,Math.floor(tt(l))+c);s===n&&(s<=0?(o(1),a(10)):(o(r(s,-1)),a(r(n,1)))),s<=0&&o(r(n,-1)),n<=0&&a(r(s,1)),this._zero&&this.min!==this._suggestedMin&&s===r(this.min,0)&&o(r(s,-1)),this.min=s,this.max=n}buildTicks(){let t=this.options,e={min:this._userMin,max:this._userMax},s=Ac(e,this);return t.bounds==="ticks"&&Li(s,this,"value"),t.reverse?(s.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),s}getLabelForValue(t){return t===void 0?"0":Jt(t,this.chart.options.locale,this.options.ticks.format)}configure(){let t=this.min;super.configure(),this._startValue=tt(t),this._valueRange=tt(this.max)-tt(t)}getPixelForValue(t){return(t===void 0||t===0)&&(t=this.min),t===null||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(tt(t)-this._startValue)/this._valueRange)}getValueForPixel(t){let e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}};Ee.id="logarithmic";Ee.defaults={ticks:{callback:bi.formatters.logarithmic,major:{enabled:!0}}};function Ps(i){let t=i.ticks;if(t.display&&i.display){let e=U(t.backdropPadding);return C(t.font&&t.font.size,O.font.size)+e.height}return 0}function Tc(i,t,e){return e=I(e)?e:[e],{w:rn(i,t.string,e),h:e.length*t.lineHeight}}function lo(i,t,e,s,n){return i===s||i===n?{start:t-e/2,end:t+e/2}:in?{start:t-e,end:t}:{start:t,end:t+e}}function Lc(i){let t={l:i.left+i._padding.left,r:i.right-i._padding.right,t:i.top+i._padding.top,b:i.bottom-i._padding.bottom},e=Object.assign({},t),s=[],n=[],o=i._pointLabels.length,a=i.options.pointLabels,r=a.centerPointLabels?B/o:0;for(let l=0;lt.r&&(r=(s.end-t.r)/o,i.r=Math.max(i.r,t.r+r)),n.startt.b&&(l=(n.end-t.b)/a,i.b=Math.max(i.b,t.b+l))}function Ec(i,t,e){let s=[],n=i._pointLabels.length,o=i.options,a=Ps(o)/2,r=i.drawingArea,l=o.pointLabels.centerPointLabels?B/n:0;for(let c=0;c270||e<90)&&(i-=t),i}function Bc(i,t){let{ctx:e,options:{pointLabels:s}}=i;for(let n=t-1;n>=0;n--){let o=s.setContext(i.getPointLabelContext(n)),a=$(o.font),{x:r,y:l,textAlign:c,left:h,top:d,right:u,bottom:f}=i._pointLabelItems[n],{backdropColor:g}=o;if(!T(g)){let p=St(o.borderRadius),m=U(o.backdropPadding);e.fillStyle=g;let b=h-m.left,_=d-m.top,v=u-h+m.width,y=f-d+m.height;Object.values(p).some(x=>x!==0)?(e.beginPath(),Gt(e,{x:b,y:_,w:v,h:y,radius:p}),e.fill()):e.fillRect(b,_,v,y)}kt(e,i._pointLabels[n],r,l+a.lineHeight/2,a,{color:o.color,textAlign:c,textBaseline:"middle"})}}function Lo(i,t,e,s){let{ctx:n}=i;if(e)n.arc(i.xCenter,i.yCenter,t,0,F);else{let o=i.getPointPosition(0,t);n.moveTo(o.x,o.y);for(let a=1;a{let n=z(this.options.pointLabels.callback,[e,s],this);return n||n===0?n:""}).filter((e,s)=>this.chart.getDataVisibility(s))}fit(){let t=this.options;t.display&&t.pointLabels.display?Lc(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,s,n){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((s-n)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,s,n))}getIndexAngle(t){let e=F/(this._pointLabels.length||1),s=this.options.startAngle||0;return G(t*e+nt(s))}getDistanceFromCenterForValue(t){if(T(t))return NaN;let e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(T(t))return NaN;let e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){let e=this._pointLabels||[];if(t>=0&&t{if(h!==0){r=this.getDistanceFromCenterForValue(c.value);let d=n.setContext(this.getContext(h-1));Vc(this,d,r,o)}}),s.display){for(t.save(),a=o-1;a>=0;a--){let c=s.setContext(this.getPointLabelContext(a)),{color:h,lineWidth:d}=c;!d||!h||(t.lineWidth=d,t.strokeStyle=h,t.setLineDash(c.borderDash),t.lineDashOffset=c.borderDashOffset,r=this.getDistanceFromCenterForValue(e.ticks.reverse?this.min:this.max),l=this.getPointPosition(a,r),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(l.x,l.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){let t=this.ctx,e=this.options,s=e.ticks;if(!s.display)return;let n=this.getIndexAngle(0),o,a;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(n),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach((r,l)=>{if(l===0&&!e.reverse)return;let c=s.setContext(this.getContext(l)),h=$(c.font);if(o=this.getDistanceFromCenterForValue(this.ticks[l].value),c.showLabelBackdrop){t.font=h.string,a=t.measureText(r.label).width,t.fillStyle=c.backdropColor;let d=U(c.backdropPadding);t.fillRect(-a/2-d.left,-o-h.size/2-d.top,a+d.width,h.size+d.height)}kt(t,r.label,0,-o,h,{color:c.color})}),t.restore()}drawTitle(){}};zt.id="radialLinear";zt.defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:bi.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(i){return i},padding:5,centerPointLabels:!1}};zt.defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};zt.descriptors={angleLines:{_fallback:"grid"}};var _i={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Z=Object.keys(_i);function Nc(i,t){return i-t}function co(i,t){if(T(t))return null;let e=i._adapter,{parser:s,round:n,isoWeekday:o}=i._parseOpts,a=t;return typeof s=="function"&&(a=s(a)),W(a)||(a=typeof s=="string"?e.parse(a,s):e.parse(a)),a===null?null:(n&&(a=n==="week"&&(Rt(o)||o===!0)?e.startOf(a,"isoWeek",o):e.startOf(a,n)),+a)}function ho(i,t,e,s){let n=Z.length;for(let o=Z.indexOf(i);o=Z.indexOf(e);o--){let a=Z[o];if(_i[a].common&&i._adapter.diff(n,s,a)>=t-1)return a}return Z[e?Z.indexOf(e):0]}function jc(i){for(let t=Z.indexOf(i)+1,e=Z.length;t=t?e[s]:e[n];i[o]=!0}}function $c(i,t,e,s){let n=i._adapter,o=+n.startOf(t[0].value,s),a=t[t.length-1].value,r,l;for(r=o;r<=a;r=+n.add(r,1,s))l=e[r],l>=0&&(t[l].major=!0);return t}function fo(i,t,e){let s=[],n={},o=t.length,a,r;for(a=0;a+t.value))}initOffsets(t){let e=0,s=0,n,o;this.options.offset&&t.length&&(n=this.getDecimalForValue(t[0]),t.length===1?e=1-n:e=(this.getDecimalForValue(t[1])-n)/2,o=this.getDecimalForValue(t[t.length-1]),t.length===1?s=o:s=(o-this.getDecimalForValue(t[t.length-2]))/2);let a=t.length<3?.5:.25;e=Y(e,0,a),s=Y(s,0,a),this._offsets={start:e,end:s,factor:1/(e+1+s)}}_generate(){let t=this._adapter,e=this.min,s=this.max,n=this.options,o=n.time,a=o.unit||ho(o.minUnit,e,s,this._getLabelCapacity(e)),r=C(o.stepSize,1),l=a==="week"?o.isoWeekday:!1,c=Rt(l)||l===!0,h={},d=e,u,f;if(c&&(d=+t.startOf(d,"isoWeek",l)),d=+t.startOf(d,c?"day":a),t.diff(s,e,a)>1e5*r)throw new Error(e+" and "+s+" are too far apart with stepSize of "+r+" "+a);let g=n.ticks.source==="data"&&this.getDataTimestamps();for(u=d,f=0;up-m).map(p=>+p)}getLabelForValue(t){let e=this._adapter,s=this.options.time;return s.tooltipFormat?e.format(t,s.tooltipFormat):e.format(t,s.displayFormats.datetime)}_tickFormatFunction(t,e,s,n){let o=this.options,a=o.time.displayFormats,r=this._unit,l=this._majorUnit,c=r&&a[r],h=l&&a[l],d=s[e],u=l&&h&&d&&d.major,f=this._adapter.format(t,n||(u?h:c)),g=o.ticks.callback;return g?z(g,[f,e,s],this):f}generateTickLabels(t){let e,s,n;for(e=0,s=t.length;e0?r:1}getDataTimestamps(){let t=this._cache.data||[],e,s;if(t.length)return t;let n=this.getMatchingVisibleMetas();if(this._normalized&&n.length)return this._cache.data=n[0].controller.getAllParsedValues(this);for(e=0,s=n.length;e=i[s].pos&&t<=i[n].pos&&({lo:s,hi:n}=at(i,"pos",t)),{pos:o,time:r}=i[s],{pos:a,time:l}=i[n]):(t>=i[s].time&&t<=i[n].time&&({lo:s,hi:n}=at(i,"time",t)),{time:o,pos:r}=i[s],{time:a,pos:l}=i[n]);let c=a-o;return c?r+(l-r)*(t-o)/c:r}var Fe=class extends Bt{constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){let t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=ci(e,this.min),this._tableRange=ci(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){let{min:e,max:s}=this,n=[],o=[],a,r,l,c,h;for(a=0,r=t.length;a=e&&c<=s&&n.push(c);if(n.length<2)return[{time:e,pos:0},{time:s,pos:1}];for(a=0,r=n.length;a{Alpine.store("theme");let s=this.getChart();s&&s.destroy(),this.initChart()}),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{Alpine.store("theme")==="system"&&this.$nextTick(()=>{let s=this.getChart();s&&s.destroy(),this.initChart()})})},initChart:function(){return ze.defaults.backgroundColor=getComputedStyle(this.$refs.backgroundColorElement).color,ze.defaults.borderColor=getComputedStyle(this.$refs.borderColorElement).color,new ze(this.$refs.canvas,{type:"line",data:{labels:t,datasets:[{data:e,borderWidth:2,fill:"start",tension:.5}]},options:{animation:{duration:0},elements:{point:{radius:0}},maintainAspectRatio:!1,plugins:{legend:{display:!1}},scales:{x:{display:!1},y:{display:!1}},tooltips:{enabled:!1}}})},getChart:function(){return ze.getChart(this.$refs.canvas)}}}export{Xc as default}; +/*! Bundled license information: + +chart.js/dist/chunks/helpers.segment.mjs: + (*! + * Chart.js v3.9.1 + * https://www.chartjs.org + * (c) 2022 Chart.js Contributors + * Released under the MIT License + *) + +chart.js/dist/chunks/helpers.segment.mjs: + (*! + * @kurkle/color v0.2.1 + * https://github.com/kurkle/color#readme + * (c) 2022 Jukka Kurkela + * Released under the MIT License + *) + +chart.js/dist/chart.mjs: + (*! + * Chart.js v3.9.1 + * https://www.chartjs.org + * (c) 2022 Chart.js Contributors + * Released under the MIT License + *) +*/ From 36ca7088507180312038817f3b11bfac3cb86c85 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sat, 23 Mar 2024 20:17:33 -0400 Subject: [PATCH 003/173] Add filament provider --- app/Providers/Filament/AdminPanelProvider.php | 58 +++++++++++++++++++ bootstrap/providers.php | 1 + 2 files changed, 59 insertions(+) create mode 100644 app/Providers/Filament/AdminPanelProvider.php diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php new file mode 100644 index 000000000..ab4354315 --- /dev/null +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -0,0 +1,58 @@ +default() + ->id('admin') + ->path('panel') + ->login() + ->colors([ + 'primary' => Color::Amber, + ]) + ->discoverResources(in: app_path('Filament/Resources'), for: 'App\\Filament\\Resources') + ->discoverPages(in: app_path('Filament/Pages'), for: 'App\\Filament\\Pages') + ->pages([ + Pages\Dashboard::class, + ]) + ->discoverWidgets(in: app_path('Filament/Widgets'), for: 'App\\Filament\\Widgets') + ->widgets([ + Widgets\AccountWidget::class, + Widgets\FilamentInfoWidget::class, + ]) + ->middleware([ + EncryptCookies::class, + AddQueuedCookiesToResponse::class, + StartSession::class, + AuthenticateSession::class, + ShareErrorsFromSession::class, + VerifyCsrfToken::class, + SubstituteBindings::class, + DisableBladeIconComponents::class, + DispatchServingFilamentEvent::class, + ]) + ->authMiddleware([ + Authenticate::class, + ]); + } +} diff --git a/bootstrap/providers.php b/bootstrap/providers.php index 01e7617f2..6db6fe18f 100644 --- a/bootstrap/providers.php +++ b/bootstrap/providers.php @@ -6,6 +6,7 @@ return [ App\Providers\BackupsServiceProvider::class, App\Providers\BladeServiceProvider::class, App\Providers\EventServiceProvider::class, + App\Providers\Filament\AdminPanelProvider::class, App\Providers\HashidsServiceProvider::class, App\Providers\RouteServiceProvider::class, App\Providers\ViewComposerServiceProvider::class, From 0ef015bb0eeff872dd6806278b067fde430e1b76 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sat, 23 Mar 2024 20:17:48 -0400 Subject: [PATCH 004/173] Allow admins to access filament --- app/Models/User.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/Models/User.php b/app/Models/User.php index 14b26abaa..af2d0dc5b 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -5,6 +5,8 @@ namespace App\Models; use App\Exceptions\DisplayException; use App\Rules\Username; use App\Facades\Activity; +use Filament\Models\Contracts\FilamentUser; +use Filament\Panel; use Illuminate\Support\Collection; use Illuminate\Validation\Rules\In; use Illuminate\Auth\Authenticatable; @@ -79,7 +81,7 @@ use App\Notifications\SendPasswordReset as ResetPasswordNotification; * * @mixin \Eloquent */ -class User extends Model implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract +class User extends Model implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, FilamentUser { use Authenticatable; use Authorizable {can as protected canned; } @@ -313,4 +315,9 @@ class User extends Model implements AuthenticatableContract, AuthorizableContrac return $this->canned($abilities, $arguments); } + + public function canAccessPanel(Panel $panel): bool + { + return $this->root_admin; + } } From 0961d6314cbb0c053db5caa11c1a0064077ec42f Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 24 Mar 2024 01:36:32 -0400 Subject: [PATCH 005/173] Eggs should not be manually created --- app/Policies/EggPolicy.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 app/Policies/EggPolicy.php diff --git a/app/Policies/EggPolicy.php b/app/Policies/EggPolicy.php new file mode 100644 index 000000000..9c355ac95 --- /dev/null +++ b/app/Policies/EggPolicy.php @@ -0,0 +1,13 @@ + Date: Sun, 24 Mar 2024 01:37:24 -0400 Subject: [PATCH 006/173] Switch route key over --- app/Models/Egg.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/Models/Egg.php b/app/Models/Egg.php index a68d6b63d..559482839 100644 --- a/app/Models/Egg.php +++ b/app/Models/Egg.php @@ -151,6 +151,11 @@ class Egg extends Model }); } + public function getRouteKeyName(): string + { + return 'id'; + } + /** * Returns the install script for the egg; if egg is copying from another * it will return the copied script. From 90efb4e8278361598f99b0fd06ea4eef16ccdbdc Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 24 Mar 2024 01:47:30 -0400 Subject: [PATCH 007/173] Simplify the parsing --- app/Services/Eggs/EggParserService.php | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/app/Services/Eggs/EggParserService.php b/app/Services/Eggs/EggParserService.php index c83fc7d8f..60054ef15 100644 --- a/app/Services/Eggs/EggParserService.php +++ b/app/Services/Eggs/EggParserService.php @@ -18,17 +18,18 @@ class EggParserService */ public function handle(UploadedFile $file): array { - if ($file->getError() !== UPLOAD_ERR_OK || !$file->isFile()) { - throw new InvalidFileUploadException('The selected file is not valid and cannot be imported.'); + if ($file->getError() !== UPLOAD_ERR_OK) { + throw new InvalidFileUploadException('The selected file was not uploaded successfully'); } - /** @var array $parsed */ - $parsed = json_decode($file->openFile()->fread($file->getSize()), true, 512, JSON_THROW_ON_ERROR); - if (!in_array(Arr::get($parsed, 'meta.version') ?? '', ['PTDL_v1', 'PTDL_v2'])) { - throw new InvalidFileUploadException('The JSON file provided is not in a format that can be recognized.'); - } + $parsed = json_decode($file->getContent(), true, 512, JSON_THROW_ON_ERROR); - return $this->convertToV2($parsed); + $version = $parsed['meta']['version'] ?? ''; + return match ($version) { + 'PTDL_v1' => $this->convertToV2($parsed), + 'PTDL_v2' => $parsed, + default => throw new InvalidFileUploadException('The JSON file provided is not in a format that can be recognized.') + }; } /** @@ -62,10 +63,6 @@ class EggParserService */ protected function convertToV2(array $parsed): array { - if (Arr::get($parsed, 'meta.version') === Egg::EXPORT_VERSION) { - return $parsed; - } - // Maintain backwards compatability for eggs that are still using the old single image // string format. New eggs can provide an array of Docker images that can be used. if (!isset($parsed['images'])) { From 2664ba07742aaeec89ee9e5afa8f4c33a9a84bb5 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 24 Mar 2024 01:48:03 -0400 Subject: [PATCH 008/173] Baseline --- app/Filament/Resources/DatabaseResource.php | 107 ++++++++ .../DatabaseResource/Pages/CreateDatabase.php | 12 + .../DatabaseResource/Pages/EditDatabase.php | 19 ++ .../DatabaseResource/Pages/ListDatabases.php | 19 ++ app/Filament/Resources/EggResource.php | 233 ++++++++++++++++++ .../Resources/EggResource/Pages/CreateEgg.php | 12 + .../Resources/EggResource/Pages/EditEgg.php | 19 ++ .../Resources/EggResource/Pages/ListEggs.php | 19 ++ app/Filament/Resources/MountResource.php | 98 ++++++++ .../MountResource/Pages/CreateMount.php | 12 + .../MountResource/Pages/EditMount.php | 19 ++ .../MountResource/Pages/ListMounts.php | 19 ++ app/Filament/Resources/NodeResource.php | 175 +++++++++++++ .../NodeResource/Pages/CreateNode.php | 12 + .../Resources/NodeResource/Pages/EditNode.php | 19 ++ .../NodeResource/Pages/ListNodes.php | 19 ++ app/Filament/Resources/ServerResource.php | 198 +++++++++++++++ .../ServerResource/Pages/CreateServer.php | 12 + .../ServerResource/Pages/EditServer.php | 19 ++ .../ServerResource/Pages/ListServers.php | 19 ++ app/Filament/Resources/UserResource.php | 134 ++++++++++ .../UserResource/Pages/CreateUser.php | 12 + .../Resources/UserResource/Pages/EditUser.php | 19 ++ .../UserResource/Pages/ListUsers.php | 19 ++ 24 files changed, 1245 insertions(+) create mode 100644 app/Filament/Resources/DatabaseResource.php create mode 100644 app/Filament/Resources/DatabaseResource/Pages/CreateDatabase.php create mode 100644 app/Filament/Resources/DatabaseResource/Pages/EditDatabase.php create mode 100644 app/Filament/Resources/DatabaseResource/Pages/ListDatabases.php create mode 100644 app/Filament/Resources/EggResource.php create mode 100644 app/Filament/Resources/EggResource/Pages/CreateEgg.php create mode 100644 app/Filament/Resources/EggResource/Pages/EditEgg.php create mode 100644 app/Filament/Resources/EggResource/Pages/ListEggs.php create mode 100644 app/Filament/Resources/MountResource.php create mode 100644 app/Filament/Resources/MountResource/Pages/CreateMount.php create mode 100644 app/Filament/Resources/MountResource/Pages/EditMount.php create mode 100644 app/Filament/Resources/MountResource/Pages/ListMounts.php create mode 100644 app/Filament/Resources/NodeResource.php create mode 100644 app/Filament/Resources/NodeResource/Pages/CreateNode.php create mode 100644 app/Filament/Resources/NodeResource/Pages/EditNode.php create mode 100644 app/Filament/Resources/NodeResource/Pages/ListNodes.php create mode 100644 app/Filament/Resources/ServerResource.php create mode 100644 app/Filament/Resources/ServerResource/Pages/CreateServer.php create mode 100644 app/Filament/Resources/ServerResource/Pages/EditServer.php create mode 100644 app/Filament/Resources/ServerResource/Pages/ListServers.php create mode 100644 app/Filament/Resources/UserResource.php create mode 100644 app/Filament/Resources/UserResource/Pages/CreateUser.php create mode 100644 app/Filament/Resources/UserResource/Pages/EditUser.php create mode 100644 app/Filament/Resources/UserResource/Pages/ListUsers.php diff --git a/app/Filament/Resources/DatabaseResource.php b/app/Filament/Resources/DatabaseResource.php new file mode 100644 index 000000000..55b8d60ba --- /dev/null +++ b/app/Filament/Resources/DatabaseResource.php @@ -0,0 +1,107 @@ +schema([ + Forms\Components\Select::make('server_id') + ->relationship('server', 'name') + ->required(), + Forms\Components\TextInput::make('database_host_id') + ->required() + ->numeric(), + Forms\Components\TextInput::make('database') + ->required() + ->maxLength(191), + Forms\Components\TextInput::make('username') + ->required() + ->maxLength(191), + Forms\Components\TextInput::make('remote') + ->required() + ->maxLength(191) + ->default('%'), + Forms\Components\Textarea::make('password') + ->required() + ->columnSpanFull(), + Forms\Components\TextInput::make('max_connections') + ->numeric() + ->default(0), + ]); + } + + public static function table(Table $table): Table + { + return $table + ->columns([ + Tables\Columns\TextColumn::make('server.name') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('database_host_id') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('database') + ->searchable(), + Tables\Columns\TextColumn::make('username') + ->searchable(), + Tables\Columns\TextColumn::make('remote') + ->searchable(), + Tables\Columns\TextColumn::make('max_connections') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('created_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + Tables\Columns\TextColumn::make('updated_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + ]) + ->filters([ + // + ]) + ->actions([ + Tables\Actions\EditAction::make(), + ]) + ->bulkActions([ + Tables\Actions\BulkActionGroup::make([ + Tables\Actions\DeleteBulkAction::make(), + ]), + ]); + } + + public static function getRelations(): array + { + return [ + // + ]; + } + + public static function getPages(): array + { + return [ + 'index' => Pages\ListDatabases::route('/'), + 'create' => Pages\CreateDatabase::route('/create'), + 'edit' => Pages\EditDatabase::route('/{record}/edit'), + ]; + } +} diff --git a/app/Filament/Resources/DatabaseResource/Pages/CreateDatabase.php b/app/Filament/Resources/DatabaseResource/Pages/CreateDatabase.php new file mode 100644 index 000000000..3608e2a6e --- /dev/null +++ b/app/Filament/Resources/DatabaseResource/Pages/CreateDatabase.php @@ -0,0 +1,12 @@ +schema([ + Forms\Components\Tabs::make()->tabs([ + Forms\Components\Tabs\Tab::make('Configuration') + ->columns(2) + ->schema([ + Forms\Components\TextInput::make('name')->required()->maxLength(191) + ->helperText('A simple, human-readable name to use as an identifier for this Egg.'), + Forms\Components\Textarea::make('description')->rows(5) + ->helperText('A description of this Egg that will be displayed throughout the Panel as needed.'), + Forms\Components\TextInput::make('uuid')->disabled() + ->helperText('This is the globally unique identifier for this Egg which the Daemon uses as an identifier.'), + Forms\Components\TextInput::make('author')->required()->maxLength(191)->disabled() + ->helperText('The author of this version of the Egg. Uploading a new Egg configuration from a different author will change this.'), + Forms\Components\Toggle::make('force_outgoing_ip')->required() + ->helperText("Forces all outgoing network traffic to have its Source IP NATed to the IP of the server's primary allocation IP. + Required for certain games to work properly when the Node has multiple public IP addresses. + Enabling this option will disable internal networking for any servers using this egg, causing them to be unable to internally access other servers on the same node."), + Forms\Components\Textarea::make('startup')->rows(5) + ->helperText('The default startup command that should be used for new servers using this Egg.'), + Forms\Components\KeyValue::make('docker_images') + ->columnSpanFull() + ->addActionLabel('Add Image') + ->keyLabel('Name') + ->valueLabel('Image URI') + ->helperText('The docker images available to servers using this egg.'), + ]), + + Forms\Components\Tabs\Tab::make('Process Management') + ->columns(2) + ->schema([ + Forms\Components\Select::make('config_from') + ->label('Copy Settings From') + ->placeholder('None') + ->relationship('configFrom', 'name', ignoreRecord: true) + ->helperText('If you would like to default to settings from another Egg select it from the menu above.'), + + Forms\Components\TextInput::make('config_stop') + ->maxLength(191) + ->label('Stop Command') + ->helperText('The command that should be sent to server processes to stop them gracefully. If you need to send a SIGINT you should enter ^C here.'), + + Forms\Components\Textarea::make('config_startup')->rows(10)->json() + ->label('Start Configuration') + ->helperText('List of values the daemon should be looking for when booting a server to determine completion.'), + + Forms\Components\Textarea::make('config_files')->rows(10)->json() + ->label('Configuration Files') + ->helperText('This should be a JSON representation of configuration files to modify and what parts should be changed.'), + + Forms\Components\Textarea::make('config_logs')->rows(10)->json() + ->label('Log Configuration') + ->helperText('This should be a JSON representation of where log files are stored, and whether or not the daemon should be creating custom logs.'), + ]), + Forms\Components\Tabs\Tab::make('Variables') + ->columnSpanFull() + // ->columns(2) + ->schema([ + Forms\Components\Repeater::make('Blah') + ->relationship('variables') + ->name('name') + ->columns(1) + ->columnSpan(1) + ->itemLabel(fn (array $state) => $state['name']) + ->schema([ + Forms\Components\TextInput::make('name')->maxLength(191)->columnSpanFull(), + Forms\Components\Textarea::make('description')->columnSpanFull(), + Forms\Components\TextInput::make('env_variable')->maxLength(191), + Forms\Components\TextInput::make('default_value')->maxLength(191), + Forms\Components\Textarea::make('rules')->rows(3)->columnSpanFull()->required(), + ]) + ]), + Forms\Components\Tabs\Tab::make('Install Script') + ->columns(3) + ->schema([ + Forms\Components\Textarea::make('script_install')->rows(20)->columnSpanFull(), + + Forms\Components\Select::make('copy_script_from') + ->placeholder('None') + ->relationship('scriptFrom', 'name', ignoreRecord: true), + + Forms\Components\TextInput::make('script_container') + ->required() + ->maxLength(191) + ->default('alpine:3.4'), + + Forms\Components\TextInput::make('script_entry') + ->required() + ->maxLength(191) + ->default('ash'), + ]), + + ])->columnSpanFull(), + + // Forms\Components\TagsInput::make('features'), + // Forms\Components\TagsInput::make('file_denylist')->placeholder('new-file.txt'), + // Forms\Components\TextInput::make('update_url'), + // Forms\Components\Toggle::make('script_is_privileged')->required(), + ]); + } + + public static function table(Table $table): Table + { + return $table + ->columns([ + Tables\Columns\TextColumn::make('id') + ->label('Id') + // ->hidden() + ->searchable(), + Tables\Columns\TextColumn::make('uuid') + ->label('UUID') + ->hidden() + ->searchable(), + Tables\Columns\TextColumn::make('name') + ->searchable(), + Tables\Columns\TextColumn::make('author') + ->hidden() + ->searchable(), + Tables\Columns\TextColumn::make('description') + ->words(50) + ->wrap(), + Tables\Columns\TextColumn::make('servers_count') + ->counts('servers') + ->icon('heroicon-m-server-stack') + ->label('Servers'), + Tables\Columns\TextColumn::make('script_container') + ->searchable() + ->hidden(), + Tables\Columns\TextColumn::make('copyFrom.name') + ->hidden() + ->sortable(), + Tables\Columns\TextColumn::make('script_entry') + ->hidden() + ->searchable(), + Tables\Columns\TextColumn::make('created_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + Tables\Columns\TextColumn::make('updated_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + ]) + ->filters([ + // + ]) + ->actions([ + Tables\Actions\EditAction::make(), + ]) + ->headerActions([ + Tables\Actions\Action::make('Import Egg') + ->form([ + Forms\Components\FileUpload::make('egg')->storeFiles(false), + ]) + ->action(function (array $data, Component $livewire): void { + /** @var TemporaryUploadedFile $eggFile */ + $eggFile = $data['egg']; + + /** @var EggImporterService $eggImportService */ + $eggImportService = resolve(EggImporterService::class); + + try { + $newEgg = $eggImportService->handle($eggFile); + } catch (Exception $exception) { + Notification::make() + ->title("Imported egg successfully: {$exception->getMessage()}") + ->success() + ->send(); + + return; + } + + Notification::make() + ->title("Imported egg successfully: $newEgg->name") + ->success() + ->send(); + + $livewire->redirect(route('filament.admin.resources.eggs.edit', [$newEgg])); + }) + ]) + ->bulkActions([ + Tables\Actions\BulkActionGroup::make([ + Tables\Actions\DeleteBulkAction::make(), + ]), + ]); + } + + public static function getRelations(): array + { + return [ + // + ]; + } + + public static function getPages(): array + { + return [ + 'index' => Pages\ListEggs::route('/'), + 'create' => Pages\CreateEgg::route('/create'), + 'edit' => Pages\EditEgg::route('/{record}/edit'), + ]; + } +} diff --git a/app/Filament/Resources/EggResource/Pages/CreateEgg.php b/app/Filament/Resources/EggResource/Pages/CreateEgg.php new file mode 100644 index 000000000..4ad3fa691 --- /dev/null +++ b/app/Filament/Resources/EggResource/Pages/CreateEgg.php @@ -0,0 +1,12 @@ +schema([ + Forms\Components\TextInput::make('uuid') + ->label('UUID') + ->required() + ->maxLength(36), + Forms\Components\TextInput::make('name') + ->required() + ->maxLength(191), + Forms\Components\Textarea::make('description') + ->columnSpanFull(), + Forms\Components\TextInput::make('source') + ->required() + ->maxLength(191), + Forms\Components\TextInput::make('target') + ->required() + ->maxLength(191), + Forms\Components\TextInput::make('read_only') + ->required() + ->numeric(), + Forms\Components\TextInput::make('user_mountable') + ->required() + ->numeric(), + ]); + } + + public static function table(Table $table): Table + { + return $table + ->columns([ + Tables\Columns\TextColumn::make('uuid') + ->label('UUID') + ->searchable(), + Tables\Columns\TextColumn::make('name') + ->searchable(), + Tables\Columns\TextColumn::make('source') + ->searchable(), + Tables\Columns\TextColumn::make('target') + ->searchable(), + Tables\Columns\TextColumn::make('read_only') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('user_mountable') + ->numeric() + ->sortable(), + ]) + ->filters([ + // + ]) + ->actions([ + Tables\Actions\EditAction::make(), + ]) + ->bulkActions([ + Tables\Actions\BulkActionGroup::make([ + Tables\Actions\DeleteBulkAction::make(), + ]), + ]); + } + + public static function getRelations(): array + { + return [ + // + ]; + } + + public static function getPages(): array + { + return [ + 'index' => Pages\ListMounts::route('/'), + 'create' => Pages\CreateMount::route('/create'), + 'edit' => Pages\EditMount::route('/{record}/edit'), + ]; + } +} diff --git a/app/Filament/Resources/MountResource/Pages/CreateMount.php b/app/Filament/Resources/MountResource/Pages/CreateMount.php new file mode 100644 index 000000000..c0cc78371 --- /dev/null +++ b/app/Filament/Resources/MountResource/Pages/CreateMount.php @@ -0,0 +1,12 @@ +schema([ + Forms\Components\TextInput::make('uuid') + ->label('UUID') + ->required() + ->maxLength(36), + Forms\Components\TextInput::make('public') + ->required() + ->numeric(), + Forms\Components\TextInput::make('name') + ->required() + ->maxLength(191), + Forms\Components\Textarea::make('description') + ->columnSpanFull(), + Forms\Components\TextInput::make('location_id') + ->required() + ->numeric(), + Forms\Components\TextInput::make('fqdn') + ->required() + ->maxLength(191), + Forms\Components\TextInput::make('scheme') + ->required() + ->maxLength(191) + ->default('https'), + Forms\Components\Toggle::make('behind_proxy') + ->required(), + Forms\Components\Toggle::make('maintenance_mode') + ->required(), + Forms\Components\TextInput::make('memory') + ->required() + ->numeric(), + Forms\Components\TextInput::make('memory_overallocate') + ->required() + ->numeric() + ->default(0), + Forms\Components\TextInput::make('disk') + ->required() + ->numeric(), + Forms\Components\TextInput::make('disk_overallocate') + ->required() + ->numeric() + ->default(0), + Forms\Components\TextInput::make('upload_size') + ->required() + ->numeric() + ->default(100), + Forms\Components\TextInput::make('daemon_token_id') + ->required() + ->maxLength(16), + Forms\Components\TextInput::make('daemonListen') + ->required() + ->numeric() + ->default(8080), + Forms\Components\TextInput::make('daemonSFTP') + ->required() + ->numeric() + ->default(2022), + Forms\Components\TextInput::make('daemonBase') + ->required() + ->maxLength(191) + ->default('/home/daemon-files'), + ]); + } + + public static function table(Table $table): Table + { + return $table + ->columns([ + Tables\Columns\TextColumn::make('uuid') + ->label('UUID') + ->searchable(), + Tables\Columns\TextColumn::make('public') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('name') + ->searchable(), + Tables\Columns\TextColumn::make('location_id') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('fqdn') + ->searchable(), + Tables\Columns\TextColumn::make('scheme') + ->searchable(), + Tables\Columns\IconColumn::make('behind_proxy') + ->boolean(), + Tables\Columns\IconColumn::make('maintenance_mode') + ->boolean(), + Tables\Columns\TextColumn::make('memory') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('memory_overallocate') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('disk') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('disk_overallocate') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('upload_size') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('daemon_token_id') + ->searchable(), + Tables\Columns\TextColumn::make('daemonListen') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('daemonSFTP') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('daemonBase') + ->searchable(), + Tables\Columns\TextColumn::make('created_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + Tables\Columns\TextColumn::make('updated_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + ]) + ->filters([ + // + ]) + ->actions([ + Tables\Actions\EditAction::make(), + ]) + ->bulkActions([ + Tables\Actions\BulkActionGroup::make([ + Tables\Actions\DeleteBulkAction::make(), + ]), + ]); + } + + public static function getRelations(): array + { + return [ + // + ]; + } + + public static function getPages(): array + { + return [ + 'index' => Pages\ListNodes::route('/'), + 'create' => Pages\CreateNode::route('/create'), + 'edit' => Pages\EditNode::route('/{record}/edit'), + ]; + } +} diff --git a/app/Filament/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Resources/NodeResource/Pages/CreateNode.php new file mode 100644 index 000000000..c7652c024 --- /dev/null +++ b/app/Filament/Resources/NodeResource/Pages/CreateNode.php @@ -0,0 +1,12 @@ +schema([ + Forms\Components\TextInput::make('external_id') + ->maxLength(191), + Forms\Components\TextInput::make('uuid') + ->label('UUID') + ->required() + ->maxLength(36), + Forms\Components\TextInput::make('uuidShort') + ->required() + ->maxLength(8), + Forms\Components\Select::make('node_id') + ->relationship('node', 'name') + ->required(), + Forms\Components\TextInput::make('name') + ->required() + ->maxLength(191), + Forms\Components\Textarea::make('description') + ->required() + ->columnSpanFull(), + Forms\Components\TextInput::make('status') + ->maxLength(191), + Forms\Components\Toggle::make('skip_scripts') + ->required(), + Forms\Components\TextInput::make('owner_id') + ->required() + ->numeric(), + Forms\Components\TextInput::make('memory') + ->required() + ->numeric(), + Forms\Components\TextInput::make('swap') + ->required() + ->numeric(), + Forms\Components\TextInput::make('disk') + ->required() + ->numeric(), + Forms\Components\TextInput::make('io') + ->required() + ->numeric(), + Forms\Components\TextInput::make('cpu') + ->required() + ->numeric(), + Forms\Components\TextInput::make('threads') + ->maxLength(191), + Forms\Components\TextInput::make('oom_disabled') + ->required() + ->numeric() + ->default(0), + Forms\Components\Select::make('allocation_id') + ->relationship('allocation', 'id') + ->required(), + Forms\Components\TextInput::make('egg_id') + ->required() + ->numeric(), + Forms\Components\Textarea::make('startup') + ->required() + ->columnSpanFull(), + Forms\Components\FileUpload::make('image') + ->image() + ->required(), + Forms\Components\TextInput::make('allocation_limit') + ->numeric(), + Forms\Components\TextInput::make('database_limit') + ->numeric() + ->default(0), + Forms\Components\TextInput::make('backup_limit') + ->required() + ->numeric() + ->default(0), + Forms\Components\DateTimePicker::make('installed_at'), + ]); + } + + public static function table(Table $table): Table + { + return $table + ->columns([ + Tables\Columns\TextColumn::make('external_id') + ->searchable(), + Tables\Columns\TextColumn::make('uuid') + ->label('UUID') + ->searchable(), + Tables\Columns\TextColumn::make('uuidShort') + ->searchable(), + Tables\Columns\TextColumn::make('node.name') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('name') + ->searchable(), + Tables\Columns\TextColumn::make('status') + ->searchable(), + Tables\Columns\IconColumn::make('skip_scripts') + ->boolean(), + Tables\Columns\TextColumn::make('owner_id') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('memory') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('swap') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('disk') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('io') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('cpu') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('threads') + ->searchable(), + Tables\Columns\TextColumn::make('oom_disabled') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('allocation.id') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('egg_id') + ->numeric() + ->sortable(), + Tables\Columns\ImageColumn::make('image'), + Tables\Columns\TextColumn::make('allocation_limit') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('database_limit') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('backup_limit') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('created_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + Tables\Columns\TextColumn::make('updated_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + Tables\Columns\TextColumn::make('installed_at') + ->dateTime() + ->sortable(), + ]) + ->filters([ + // + ]) + ->actions([ + Tables\Actions\EditAction::make(), + ]) + ->bulkActions([ + Tables\Actions\BulkActionGroup::make([ + Tables\Actions\DeleteBulkAction::make(), + ]), + ]); + } + + public static function getRelations(): array + { + return [ + // + ]; + } + + public static function getPages(): array + { + return [ + 'index' => Pages\ListServers::route('/'), + 'create' => Pages\CreateServer::route('/create'), + 'edit' => Pages\EditServer::route('/{record}/edit'), + ]; + } +} diff --git a/app/Filament/Resources/ServerResource/Pages/CreateServer.php b/app/Filament/Resources/ServerResource/Pages/CreateServer.php new file mode 100644 index 000000000..223cdf97b --- /dev/null +++ b/app/Filament/Resources/ServerResource/Pages/CreateServer.php @@ -0,0 +1,12 @@ +schema([ + Forms\Components\TextInput::make('external_id') + ->maxLength(191), + Forms\Components\TextInput::make('uuid') + ->label('UUID') + ->required() + ->maxLength(36), + Forms\Components\TextInput::make('username') + ->required() + ->maxLength(191), + Forms\Components\TextInput::make('email') + ->email() + ->required() + ->maxLength(191), + Forms\Components\TextInput::make('name_first') + ->maxLength(191), + Forms\Components\TextInput::make('name_last') + ->maxLength(191), + Forms\Components\Textarea::make('password') + ->required() + ->columnSpanFull(), + Forms\Components\TextInput::make('language') + ->required() + ->maxLength(5) + ->default('en'), + Forms\Components\TextInput::make('root_admin') + ->required() + ->numeric() + ->default(0), + Forms\Components\TextInput::make('use_totp') + ->required() + ->numeric(), + Forms\Components\Textarea::make('totp_secret') + ->columnSpanFull(), + Forms\Components\DateTimePicker::make('totp_authenticated_at'), + Forms\Components\Toggle::make('gravatar') + ->required(), + ]); + } + + public static function table(Table $table): Table + { + return $table + ->columns([ + Tables\Columns\TextColumn::make('external_id') + ->searchable(), + Tables\Columns\TextColumn::make('uuid') + ->label('UUID') + ->searchable(), + Tables\Columns\TextColumn::make('username') + ->searchable(), + Tables\Columns\TextColumn::make('email') + ->searchable(), + Tables\Columns\TextColumn::make('name_first') + ->searchable(), + Tables\Columns\TextColumn::make('name_last') + ->searchable(), + Tables\Columns\TextColumn::make('language') + ->searchable(), + Tables\Columns\TextColumn::make('root_admin') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('use_totp') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('totp_authenticated_at') + ->dateTime() + ->sortable(), + Tables\Columns\IconColumn::make('gravatar') + ->boolean(), + Tables\Columns\TextColumn::make('created_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + Tables\Columns\TextColumn::make('updated_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + ]) + ->filters([ + // + ]) + ->actions([ + Tables\Actions\EditAction::make(), + ]) + ->bulkActions([ + Tables\Actions\BulkActionGroup::make([ + Tables\Actions\DeleteBulkAction::make(), + ]), + ]); + } + + public static function getRelations(): array + { + return [ + // + ]; + } + + public static function getPages(): array + { + return [ + 'index' => Pages\ListUsers::route('/'), + 'create' => Pages\CreateUser::route('/create'), + 'edit' => Pages\EditUser::route('/{record}/edit'), + ]; + } +} diff --git a/app/Filament/Resources/UserResource/Pages/CreateUser.php b/app/Filament/Resources/UserResource/Pages/CreateUser.php new file mode 100644 index 000000000..73aa46d00 --- /dev/null +++ b/app/Filament/Resources/UserResource/Pages/CreateUser.php @@ -0,0 +1,12 @@ + Date: Sun, 24 Mar 2024 14:42:36 -0400 Subject: [PATCH 009/173] Update nodes --- app/Filament/Resources/NodeResource.php | 108 ++++++-------- .../NodeResource/Pages/CreateNode.php | 134 +++++++++++++++++- .../Resources/NodeResource/Pages/EditNode.php | 32 +++++ app/Models/Node.php | 50 ++++++- 4 files changed, 257 insertions(+), 67 deletions(-) diff --git a/app/Filament/Resources/NodeResource.php b/app/Filament/Resources/NodeResource.php index 5a8e06d6b..3b0bb2e74 100644 --- a/app/Filament/Resources/NodeResource.php +++ b/app/Filament/Resources/NodeResource.php @@ -3,15 +3,12 @@ namespace App\Filament\Resources; use App\Filament\Resources\NodeResource\Pages; -use App\Filament\Resources\NodeResource\RelationManagers; use App\Models\Node; use Filament\Forms; use Filament\Forms\Form; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; -use Illuminate\Database\Eloquent\Builder; -use Illuminate\Database\Eloquent\SoftDeletingScope; class NodeResource extends Resource { @@ -25,31 +22,8 @@ class NodeResource extends Resource { return $form ->schema([ - Forms\Components\TextInput::make('uuid') - ->label('UUID') - ->required() - ->maxLength(36), - Forms\Components\TextInput::make('public') - ->required() - ->numeric(), - Forms\Components\TextInput::make('name') - ->required() - ->maxLength(191), - Forms\Components\Textarea::make('description') - ->columnSpanFull(), - Forms\Components\TextInput::make('location_id') - ->required() - ->numeric(), - Forms\Components\TextInput::make('fqdn') - ->required() - ->maxLength(191), - Forms\Components\TextInput::make('scheme') - ->required() - ->maxLength(191) - ->default('https'), Forms\Components\Toggle::make('behind_proxy') - ->required(), - Forms\Components\Toggle::make('maintenance_mode') + ->helperText('If you are running the daemon behind a proxy such as Cloudflare, select this to have the daemon skip looking for certificates on boot.') ->required(), Forms\Components\TextInput::make('memory') ->required() @@ -67,23 +41,40 @@ class NodeResource extends Resource ->default(0), Forms\Components\TextInput::make('upload_size') ->required() - ->numeric() + ->integer() ->default(100), - Forms\Components\TextInput::make('daemon_token_id') - ->required() - ->maxLength(16), Forms\Components\TextInput::make('daemonListen') ->required() - ->numeric() + ->integer() + ->label('Daemon Port') ->default(8080), Forms\Components\TextInput::make('daemonSFTP') ->required() - ->numeric() + ->integer() + ->label('Daemon SFTP Port') ->default(2022), Forms\Components\TextInput::make('daemonBase') ->required() ->maxLength(191) ->default('/home/daemon-files'), + + Forms\Components\ToggleButtons::make('public') + ->label('Node Visibility') + ->inline() + ->default(true) + ->helperText('By setting a node to private you will be denying the ability to auto-deploy to this node.') + ->options([ + true => 'Public', + false => 'Private', + ]) + ->colors([ + true => 'warning', + false => 'danger', + ]) + ->icons([ + true => 'heroicon-m-eye', + false => 'heroicon-m-lock-closed', + ]), ]); } @@ -93,48 +84,39 @@ class NodeResource extends Resource ->columns([ Tables\Columns\TextColumn::make('uuid') ->label('UUID') - ->searchable(), - Tables\Columns\TextColumn::make('public') - ->numeric() - ->sortable(), + ->searchable() + ->hidden(), + Tables\Columns\IconColumn::make('health') + ->alignCenter() + ->state(fn (Node $node) => $node->systemInformation()['version'] ?? false) + ->tooltip(fn (Node $node) => $node->systemInformation()['version'] ?? $node->systemInformation()['exception'] ?? 'Not Connected') + ->trueIcon('heroicon-m-heart') + ->default(false), Tables\Columns\TextColumn::make('name') ->searchable(), - Tables\Columns\TextColumn::make('location_id') - ->numeric() - ->sortable(), Tables\Columns\TextColumn::make('fqdn') ->searchable(), - Tables\Columns\TextColumn::make('scheme') - ->searchable(), - Tables\Columns\IconColumn::make('behind_proxy') - ->boolean(), - Tables\Columns\IconColumn::make('maintenance_mode') - ->boolean(), Tables\Columns\TextColumn::make('memory') ->numeric() ->sortable(), - Tables\Columns\TextColumn::make('memory_overallocate') - ->numeric() - ->sortable(), Tables\Columns\TextColumn::make('disk') ->numeric() ->sortable(), - Tables\Columns\TextColumn::make('disk_overallocate') - ->numeric() - ->sortable(), - Tables\Columns\TextColumn::make('upload_size') - ->numeric() - ->sortable(), - Tables\Columns\TextColumn::make('daemon_token_id') - ->searchable(), - Tables\Columns\TextColumn::make('daemonListen') - ->numeric() - ->sortable(), - Tables\Columns\TextColumn::make('daemonSFTP') - ->numeric() - ->sortable(), Tables\Columns\TextColumn::make('daemonBase') ->searchable(), + Tables\Columns\IconColumn::make('scheme') + ->label('SSL') + ->trueIcon('heroicon-m-lock-closed') + ->falseIcon('heroicon-m-lock-open') + ->state(fn (Node $node) => $node->scheme === 'https'), + Tables\Columns\IconColumn::make('public') + ->trueIcon('heroicon-m-eye') + ->falseIcon('heroicon-m-eye-slash') + ->sortable(), + Tables\Columns\TextColumn::make('servers_count') + ->counts('servers') + ->label('Servers') + ->icon('heroicon-m-server-stack'), Tables\Columns\TextColumn::make('created_at') ->dateTime() ->sortable() diff --git a/app/Filament/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Resources/NodeResource/Pages/CreateNode.php index c7652c024..fcfaaf292 100644 --- a/app/Filament/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Resources/NodeResource/Pages/CreateNode.php @@ -3,10 +3,142 @@ namespace App\Filament\Resources\NodeResource\Pages; use App\Filament\Resources\NodeResource; -use Filament\Actions; +use Filament\Forms; +use Filament\Notifications\Notification; use Filament\Resources\Pages\CreateRecord; class CreateNode extends CreateRecord { protected static string $resource = NodeResource::class; + + public function form(Forms\Form $form): Forms\Form + { + return $form + ->columns(2) + ->schema([ + Forms\Components\TextInput::make('fqdn') + ->label('Domain Name') + ->placeholder('node.example.com') + ->helperText('Node\'s Domain Name') + ->required() + ->autofocus() + ->columns(3) + ->live(debounce: 500) + ->hidden(fn (Forms\Get $get) => !$get('isHostname')) + ->disabled(fn (Forms\Get $get) => !$get('isHostname')) + ->afterStateUpdated(function (Forms\Set $set, ?string $state) { + $hasRecords = checkdnsrr("$state.", 'A'); + if (!$hasRecords) { + Notification::make() + ->title('Your hostname does not appear to have a valid A record.') + ->warning() + ->send(); + } + }) + ->maxLength(191), + + Forms\Components\TextInput::make('fqdn') + ->label('IP Address') + ->placeholder('127.0.0.1') + ->helperText('Node\'s IP Address') + ->required() + ->ipv4() + ->columns(3) + ->live(debounce: 500) + ->hidden(fn (Forms\Get $get) => $get('isHostname')) + ->disabled(fn (Forms\Get $get) => $get('isHostname')) + ->afterStateUpdated(function (Forms\Set $set, ?string $state) { + $isIp = filter_var($state, FILTER_VALIDATE_IP) !== false; + $isSecure = request()->isSecure(); + + if ($isIp && $isSecure) { + Notification::make() + ->title('You cannot use an IP Address because you have a secure connection to the panel currently.') + ->danger() + ->send(); + $set('name', $state); + } + }) + ->maxLength(191), + + Forms\Components\ToggleButtons::make('isHostname') + ->label('Address Type') + ->options([ + true => 'Hostname', + false => 'IP Address', + ]) + ->inline() + ->live() + ->afterStateUpdated(function () { + + }) + ->default(true), + + Forms\Components\TextInput::make('daemonListen') + ->columns(1) + ->label('Port') + ->helperText('If you will be running the daemon behind Cloudflare you should set the daemon port to 8443 to allow websocket proxying over SSL.') + ->minValue(0) + ->maxValue(65536) + ->default(8080) + ->required() + ->integer(), + + Forms\Components\ToggleButtons::make('scheme') + ->label('Communicate over SSL') + ->required() + ->dehydrated() + ->inline() + // request()->isSecure() + ->helperText(function (Forms\Get $get) { + if (request()->isSecure()) { + return 'Your Panel is currently using secure connection therefore so must your Daemon. + This automatically disables using an IP Address for a FQDN.'; + } + + if (filter_var($get('fqdn'), FILTER_VALIDATE_IP) !== false) { + return 'An IP address cannot use SSL.'; + } + + return ''; + }) + // ->helperText(fn (Forms\Get $get) => filter_var($get('fqdn'), FILTER_VALIDATE_IP) !== false ? 'An IP address cannot use SSL.' : '') + ->disabled(function (Forms\Get $get, Forms\Set $set) { + $isIp = filter_var($get('fqdn'), FILTER_VALIDATE_IP) !== false; + $isSecure = request()->isSecure(); + + if ($isSecure) { + $set('scheme', 'https'); + + return true; + } + + if ($isIp) { + $set('scheme', 'http'); + + return true; + } + }) + ->options([ + 'http' => 'HTTP', + 'https' => 'SSL (HTTPS)', + ]) + ->colors([ + 'http' => 'warning', + 'https' => 'success', + ]) + ->icons([ + 'http' => 'heroicon-m-lock-open', + 'https' => 'heroicon-m-lock-closed', + ]) + ->default('http'), + Forms\Components\TextInput::make('name') + ->required() + ->columnSpanFull() + ->regex('/[a-zA-Z0-9_\.\- ]+/') + ->helperText('Character limits: [a-zA-Z0-9_.-] and [Space]') + ->maxLength(100), + Forms\Components\Textarea::make('description')->columnSpanFull()->rows(5), + ]); + } } diff --git a/app/Filament/Resources/NodeResource/Pages/EditNode.php b/app/Filament/Resources/NodeResource/Pages/EditNode.php index f6db410fb..7be05ce3c 100644 --- a/app/Filament/Resources/NodeResource/Pages/EditNode.php +++ b/app/Filament/Resources/NodeResource/Pages/EditNode.php @@ -4,12 +4,44 @@ namespace App\Filament\Resources\NodeResource\Pages; use App\Filament\Resources\NodeResource; use Filament\Actions; +use Filament\Forms; +use Filament\Forms\Components\Wizard; use Filament\Resources\Pages\EditRecord; class EditNode extends EditRecord { protected static string $resource = NodeResource::class; + public function form(Forms\Form $form): Forms\Form + { + return $form + ->schema([ + Wizard::make([ + Forms\Components\Wizard\Step::make('Basic') + ->description('') + ->schema((new CreateNode())->form($form)->getComponents()), + Forms\Components\Wizard\Step::make('Configuration') + ->description('') + ->schema([ + + ]), + ]) + ->columns(4) + ->persistStepInQueryString() + ->columnSpanFull() + // ->startOnStep($this->getStartStep()) + // ->cancelAction($this->getCancelFormAction()) + // ->submitAction($this->getSubmitFormAction()) + // ->skippable($this->hasSkippableSteps()), + ]); + } + + protected function getSteps(): array + { + return [ + ]; + } + protected function getHeaderActions(): array { return [ diff --git a/app/Models/Node.php b/app/Models/Node.php index d1e383be1..e70beddf2 100644 --- a/app/Models/Node.php +++ b/app/Models/Node.php @@ -2,6 +2,8 @@ namespace App\Models; +use App\Repositories\Daemon\DaemonConfigurationRepository; +use Exception; use Illuminate\Support\Str; use Symfony\Component\Yaml\Yaml; use Illuminate\Notifications\Notifiable; @@ -79,9 +81,9 @@ class Node extends Model 'fqdn' => 'required|string', 'scheme' => 'required', 'behind_proxy' => 'boolean', - 'memory' => 'required|numeric|min:1', + 'memory' => 'required|numeric|min:0', 'memory_overallocate' => 'required|numeric|min:-1', - 'disk' => 'required|numeric|min:1', + 'disk' => 'required|numeric|min:0', 'disk_overallocate' => 'required|numeric|min:-1', 'daemonBase' => 'sometimes|required|regex:/^([\/][\d\w.\-\/]+)$/', 'daemonSFTP' => 'required|numeric|between:1,65535', @@ -96,9 +98,11 @@ class Node extends Model protected $attributes = [ 'public' => true, 'behind_proxy' => false, + 'memory' => 0, 'memory_overallocate' => 0, + 'disk' => 0, 'disk_overallocate' => 0, - 'daemonBase' => '/var/lib/panel/volumes', + 'daemonBase' => '/var/lib/pelican/volumes', 'daemonSFTP' => 2022, 'daemonListen' => 8080, 'maintenance_mode' => false, @@ -117,6 +121,23 @@ class Node extends Model ]; } + public function getRouteKeyName(): string + { + return 'id'; + } + + + protected static function booted(): void + { + static::creating(function (self $node) { + $node->uuid = Str::uuid(); + $node->daemon_token = encrypt(Str::random(self::DAEMON_TOKEN_LENGTH)); + $node->daemon_token_id = Str::random(self::DAEMON_TOKEN_ID_LENGTH); + + return true; + }); + } + /** * Get the connection address to use when making calls to this node. */ @@ -240,4 +261,27 @@ class Node extends Model ]; })->values(); } + + public function systemInformation(): array + { + return once(function () { + try { + return resolve(DaemonConfigurationRepository::class) + ->setNode($this) + ->getSystemInformation(connectTimeout: 1); + } catch (Exception $exception) { + $message = str($exception->getMessage()); + + if ($message->startsWith('cURL error 6: Could not resolve host')) { + $message = str('Could not resolve host'); + } + + if ($message->startsWith('cURL error 28: Failed to connect to ')) { + $message = $message->after('cURL error 28: ')->before(' after '); + } + + return ['exception' => $message->toString()]; + } + }); + } } From 03e1733b7d8c638681f751bf5d679a369a3de0ba Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 24 Mar 2024 14:42:45 -0400 Subject: [PATCH 010/173] Update users --- app/Filament/Resources/UserResource.php | 84 +++++++++---------------- app/Models/User.php | 10 +++ 2 files changed, 38 insertions(+), 56 deletions(-) diff --git a/app/Filament/Resources/UserResource.php b/app/Filament/Resources/UserResource.php index 6ae3e0ff6..d953eb953 100644 --- a/app/Filament/Resources/UserResource.php +++ b/app/Filament/Resources/UserResource.php @@ -25,42 +25,14 @@ class UserResource extends Resource { return $form ->schema([ - Forms\Components\TextInput::make('external_id') - ->maxLength(191), - Forms\Components\TextInput::make('uuid') - ->label('UUID') - ->required() - ->maxLength(36), - Forms\Components\TextInput::make('username') - ->required() - ->maxLength(191), - Forms\Components\TextInput::make('email') - ->email() - ->required() - ->maxLength(191), - Forms\Components\TextInput::make('name_first') - ->maxLength(191), - Forms\Components\TextInput::make('name_last') - ->maxLength(191), - Forms\Components\Textarea::make('password') - ->required() - ->columnSpanFull(), - Forms\Components\TextInput::make('language') - ->required() - ->maxLength(5) - ->default('en'), - Forms\Components\TextInput::make('root_admin') - ->required() - ->numeric() - ->default(0), - Forms\Components\TextInput::make('use_totp') - ->required() - ->numeric(), - Forms\Components\Textarea::make('totp_secret') - ->columnSpanFull(), - Forms\Components\DateTimePicker::make('totp_authenticated_at'), - Forms\Components\Toggle::make('gravatar') - ->required(), + Forms\Components\TextInput::make('username')->required()->maxLength(191), + Forms\Components\TextInput::make('email')->email()->required()->maxLength(191), + Forms\Components\TextInput::make('name_first')->maxLength(191), + Forms\Components\TextInput::make('name_last')->maxLength(191), + Forms\Components\TextInput::make('password')->password()->columnSpanFull(), + Forms\Components\Select::make('language')->required()->default('en') + ->options(fn (User $user) => $user->getAvailableLanguages()), + Forms\Components\Toggle::make('root_admin')->required()->default(0), ]); } @@ -68,32 +40,32 @@ class UserResource extends Resource { return $table ->columns([ + Tables\Columns\ImageColumn::make('picture') + ->defaultImageUrl(fn (User $user) => 'https://gravatar.com/avatar/' . md5(strtolower($user->email))), Tables\Columns\TextColumn::make('external_id') - ->searchable(), + ->searchable() + ->hidden(), Tables\Columns\TextColumn::make('uuid') ->label('UUID') + ->hidden() ->searchable(), Tables\Columns\TextColumn::make('username') ->searchable(), - Tables\Columns\TextColumn::make('email') - ->searchable(), - Tables\Columns\TextColumn::make('name_first') - ->searchable(), - Tables\Columns\TextColumn::make('name_last') - ->searchable(), - Tables\Columns\TextColumn::make('language') - ->searchable(), - Tables\Columns\TextColumn::make('root_admin') - ->numeric() - ->sortable(), - Tables\Columns\TextColumn::make('use_totp') - ->numeric() - ->sortable(), - Tables\Columns\TextColumn::make('totp_authenticated_at') - ->dateTime() - ->sortable(), - Tables\Columns\IconColumn::make('gravatar') - ->boolean(), + Tables\Columns\TextColumn::make('email')->searchable(), + Tables\Columns\TextColumn::make('name')->searchable(), + Tables\Columns\IconColumn::make('root_admin')->label('Admin')->boolean()->sortable(), + Tables\Columns\IconColumn::make('use_totp')->label('2FA') + ->icon(fn (User $user) => $user->use_totp ? 'heroicon-o-lock-closed' : 'heroicon-o-lock-open') + ->boolean()->sortable(), + Tables\Columns\TextColumn::make('servers_count') + ->counts('servers') + ->icon('heroicon-m-server-stack') + ->label('Servers Owned'), + Tables\Columns\TextColumn::make('subusers_count') + ->counts('subusers') + ->icon('heroicon-m-users') + // ->formatStateUsing(fn (string $state, $record): string => (string) ($record->servers_count + $record->subusers_count)) + ->label('Subusers'), Tables\Columns\TextColumn::make('created_at') ->dateTime() ->sortable() diff --git a/app/Models/User.php b/app/Models/User.php index af2d0dc5b..9bef6bdfd 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -179,6 +179,11 @@ class User extends Model implements AuthenticatableContract, AuthorizableContrac }); } + public function getRouteKeyName(): string + { + return 'id'; + } + /** * Implement language verification by overriding Eloquence's gather * rules function. @@ -280,6 +285,11 @@ class User extends Model implements AuthenticatableContract, AuthorizableContrac ->groupBy('servers.id'); } + public function subusers(): HasMany + { + return $this->hasMany(Subuser::class); + } + protected function checkPermission(Server $server, string $permission = ''): bool { if ($this->root_admin || $server->owner_id === $this->id) { From b6d39c66d17c7259c1099ba7fa65903fcc7fe654 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 24 Mar 2024 14:42:54 -0400 Subject: [PATCH 011/173] Allow adjusting timeout --- app/Repositories/Daemon/DaemonConfigurationRepository.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/Repositories/Daemon/DaemonConfigurationRepository.php b/app/Repositories/Daemon/DaemonConfigurationRepository.php index c1ea838fb..2b8de3b71 100644 --- a/app/Repositories/Daemon/DaemonConfigurationRepository.php +++ b/app/Repositories/Daemon/DaemonConfigurationRepository.php @@ -13,10 +13,13 @@ class DaemonConfigurationRepository extends DaemonRepository * * @throws \App\Exceptions\Http\Connection\DaemonConnectionException */ - public function getSystemInformation(?int $version = null): array + public function getSystemInformation(?int $version = null, $connectTimeout = 5): array { try { - $response = $this->getHttpClient()->get('/api/system' . (!is_null($version) ? '?v=' . $version : '')); + $response = $this + ->getHttpClient() + ->connectTimeout($connectTimeout) + ->get('/api/system' . (!is_null($version) ? '?v=' . $version : '')); } catch (TransferException $exception) { throw new DaemonConnectionException($exception); } From 3e7bff24463297d873b863848d6052124f7d0b80 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Mon, 25 Mar 2024 10:26:57 -0400 Subject: [PATCH 012/173] Consolidate these --- .../NodeResource/Pages/CreateNode.php | 90 +++++-------------- app/helpers.php | 7 ++ 2 files changed, 31 insertions(+), 66 deletions(-) diff --git a/app/Filament/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Resources/NodeResource/Pages/CreateNode.php index fcfaaf292..603385792 100644 --- a/app/Filament/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Resources/NodeResource/Pages/CreateNode.php @@ -6,6 +6,7 @@ use App\Filament\Resources\NodeResource; use Filament\Forms; use Filament\Notifications\Notification; use Filament\Resources\Pages\CreateRecord; +use Illuminate\Support\HtmlString; class CreateNode extends CreateRecord { @@ -14,70 +15,37 @@ class CreateNode extends CreateRecord public function form(Forms\Form $form): Forms\Form { return $form - ->columns(2) + ->columns(4) ->schema([ Forms\Components\TextInput::make('fqdn') - ->label('Domain Name') - ->placeholder('node.example.com') - ->helperText('Node\'s Domain Name') + ->columnSpan(2) ->required() ->autofocus() - ->columns(3) ->live(debounce: 500) - ->hidden(fn (Forms\Get $get) => !$get('isHostname')) - ->disabled(fn (Forms\Get $get) => !$get('isHostname')) - ->afterStateUpdated(function (Forms\Set $set, ?string $state) { - $hasRecords = checkdnsrr("$state.", 'A'); - if (!$hasRecords) { - Notification::make() - ->title('Your hostname does not appear to have a valid A record.') - ->warning() - ->send(); + ->label(fn ($state) => is_ip($state) ? 'IP Address' : 'Domain Name') + ->placeholder(fn ($state) => is_ip($state) ? '192.168.1.1' : 'node.example.com') + ->hintColor('danger') + ->hint(function ($state) { + if (is_ip($state) && request()->isSecure()) { + return 'You currently have a secure connection to the panel.'; } + + if (!is_ip($state) && !empty($state) && !checkdnsrr("$state.", 'A')) { + return 'Your hostname does not appear to have a valid A record.'; + } + + return ''; + }) + ->helperText(fn ($state) => is_ip($state) ? 'You can also enter in the domain name instead!' : 'You can also enter the IP address instead!') + ->afterStateUpdated(function (Forms\Set $set, ?string $state) { + $set('name', $state); }) ->maxLength(191), - Forms\Components\TextInput::make('fqdn') - ->label('IP Address') - ->placeholder('127.0.0.1') - ->helperText('Node\'s IP Address') - ->required() - ->ipv4() - ->columns(3) - ->live(debounce: 500) - ->hidden(fn (Forms\Get $get) => $get('isHostname')) - ->disabled(fn (Forms\Get $get) => $get('isHostname')) - ->afterStateUpdated(function (Forms\Set $set, ?string $state) { - $isIp = filter_var($state, FILTER_VALIDATE_IP) !== false; - $isSecure = request()->isSecure(); - - if ($isIp && $isSecure) { - Notification::make() - ->title('You cannot use an IP Address because you have a secure connection to the panel currently.') - ->danger() - ->send(); - $set('name', $state); - } - }) - ->maxLength(191), - - Forms\Components\ToggleButtons::make('isHostname') - ->label('Address Type') - ->options([ - true => 'Hostname', - false => 'IP Address', - ]) - ->inline() - ->live() - ->afterStateUpdated(function () { - - }) - ->default(true), - Forms\Components\TextInput::make('daemonListen') ->columns(1) ->label('Port') - ->helperText('If you will be running the daemon behind Cloudflare you should set the daemon port to 8443 to allow websocket proxying over SSL.') + ->helperText('If you are running the daemon behind Cloudflare you should set the daemon port to 8443 to allow websocket proxying over SSL.') ->minValue(0) ->maxValue(65536) ->default(8080) @@ -89,35 +57,25 @@ class CreateNode extends CreateRecord ->required() ->dehydrated() ->inline() - // request()->isSecure() ->helperText(function (Forms\Get $get) { if (request()->isSecure()) { - return 'Your Panel is currently using secure connection therefore so must your Daemon. - This automatically disables using an IP Address for a FQDN.'; + return 'Your Panel is using a secure (https) connection, therefore your Daemon has to as well.'; } - if (filter_var($get('fqdn'), FILTER_VALIDATE_IP) !== false) { + if (is_ip($get('fqdn'))) { return 'An IP address cannot use SSL.'; } return ''; }) - // ->helperText(fn (Forms\Get $get) => filter_var($get('fqdn'), FILTER_VALIDATE_IP) !== false ? 'An IP address cannot use SSL.' : '') ->disabled(function (Forms\Get $get, Forms\Set $set) { - $isIp = filter_var($get('fqdn'), FILTER_VALIDATE_IP) !== false; - $isSecure = request()->isSecure(); - - if ($isSecure) { + if (request()->isSecure()) { $set('scheme', 'https'); return true; } - if ($isIp) { - $set('scheme', 'http'); - - return true; - } + return false; }) ->options([ 'http' => 'HTTP', diff --git a/app/helpers.php b/app/helpers.php index 6892a8193..c2aa5cd74 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -11,6 +11,13 @@ if (!function_exists('is_digit')) { } } +if (!function_exists('is_ip')) { + function is_ip(?string $address): bool + { + return $address !== null && filter_var($address, FILTER_VALIDATE_IP) !== false; + } +} + if (!function_exists('object_get_strict')) { /** * Get an object using dot notation. An object key with a value of null is still considered valid From 65384250d6c100bc4020a3d89bf3203423ffa0fa Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Tue, 26 Mar 2024 20:52:32 -0400 Subject: [PATCH 013/173] Add attribute --- app/Models/Allocation.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/Models/Allocation.php b/app/Models/Allocation.php index 18d6e269f..6a7d45db7 100644 --- a/app/Models/Allocation.php +++ b/app/Models/Allocation.php @@ -3,6 +3,7 @@ namespace App\Models; use App\Exceptions\Service\Allocation\ServerUsingAllocationException; +use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Relations\BelongsTo; /** @@ -111,9 +112,16 @@ class Allocation extends Model return !is_null($this->ip_alias); } + public function address(): Attribute + { + return Attribute::make( + get: fn () => "$this->ip:$this->port", + ); + } + public function toString(): string { - return sprintf('%s:%s', $this->ip, $this->port); + return $this->address; } /** From 8c892ac05db39ffe023369334890ea9db5557bc6 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Tue, 26 Mar 2024 20:52:56 -0400 Subject: [PATCH 014/173] Adjustments --- app/Filament/Resources/NodeResource.php | 3 +- app/Filament/Resources/ServerResource.php | 60 ++++++----------------- 2 files changed, 17 insertions(+), 46 deletions(-) diff --git a/app/Filament/Resources/NodeResource.php b/app/Filament/Resources/NodeResource.php index 3b0bb2e74..371858d18 100644 --- a/app/Filament/Resources/NodeResource.php +++ b/app/Filament/Resources/NodeResource.php @@ -95,6 +95,7 @@ class NodeResource extends Resource Tables\Columns\TextColumn::make('name') ->searchable(), Tables\Columns\TextColumn::make('fqdn') + ->label('Address') ->searchable(), Tables\Columns\TextColumn::make('memory') ->numeric() @@ -102,8 +103,6 @@ class NodeResource extends Resource Tables\Columns\TextColumn::make('disk') ->numeric() ->sortable(), - Tables\Columns\TextColumn::make('daemonBase') - ->searchable(), Tables\Columns\IconColumn::make('scheme') ->label('SSL') ->trueIcon('heroicon-m-lock-closed') diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 5e16d9222..62bd7d93f 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -4,6 +4,7 @@ namespace App\Filament\Resources; use App\Filament\Resources\ServerResource\Pages; use App\Filament\Resources\ServerResource\RelationManagers; +use App\Models\Node; use App\Models\Server; use Filament\Forms; use Filament\Forms\Form; @@ -100,59 +101,29 @@ class ServerResource extends Resource { return $table ->columns([ - Tables\Columns\TextColumn::make('external_id') - ->searchable(), Tables\Columns\TextColumn::make('uuid') + ->hidden() ->label('UUID') ->searchable(), - Tables\Columns\TextColumn::make('uuidShort') - ->searchable(), - Tables\Columns\TextColumn::make('node.name') - ->numeric() + Tables\Columns\TextColumn::make('name') + ->sortable(), + Tables\Columns\TextColumn::make('node.id') + ->url(fn ($state): string => route('filament.admin.resources.nodes.edit', ['record' => $state])) ->sortable(), Tables\Columns\TextColumn::make('name') ->searchable(), - Tables\Columns\TextColumn::make('status') - ->searchable(), - Tables\Columns\IconColumn::make('skip_scripts') - ->boolean(), - Tables\Columns\TextColumn::make('owner_id') + Tables\Columns\TextColumn::make('user.username') + ->sortable(), + Tables\Columns\TextColumn::make('allocation.address') ->numeric() ->sortable(), - Tables\Columns\TextColumn::make('memory') + Tables\Columns\TextColumn::make('egg.name') ->numeric() ->sortable(), - Tables\Columns\TextColumn::make('swap') - ->numeric() - ->sortable(), - Tables\Columns\TextColumn::make('disk') - ->numeric() - ->sortable(), - Tables\Columns\TextColumn::make('io') - ->numeric() - ->sortable(), - Tables\Columns\TextColumn::make('cpu') - ->numeric() - ->sortable(), - Tables\Columns\TextColumn::make('threads') - ->searchable(), - Tables\Columns\TextColumn::make('oom_disabled') - ->numeric() - ->sortable(), - Tables\Columns\TextColumn::make('allocation.id') - ->numeric() - ->sortable(), - Tables\Columns\TextColumn::make('egg_id') - ->numeric() - ->sortable(), - Tables\Columns\ImageColumn::make('image'), - Tables\Columns\TextColumn::make('allocation_limit') - ->numeric() - ->sortable(), - Tables\Columns\TextColumn::make('database_limit') - ->numeric() - ->sortable(), - Tables\Columns\TextColumn::make('backup_limit') + Tables\Columns\TextColumn::make('image')->hidden(), + Tables\Columns\TextColumn::make('backups_count') + ->counts('backups') + ->label('Backups') ->numeric() ->sortable(), Tables\Columns\TextColumn::make('created_at') @@ -165,7 +136,8 @@ class ServerResource extends Resource ->toggleable(isToggledHiddenByDefault: true), Tables\Columns\TextColumn::make('installed_at') ->dateTime() - ->sortable(), + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), ]) ->filters([ // From f452280cdb2fd947e1860f7eaf83e5b1ddbe7c65 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Tue, 26 Mar 2024 21:59:45 -0400 Subject: [PATCH 015/173] Favicon adjustments --- app/Filament/Resources/UserResource.php | 4 +- app/Providers/Filament/AdminPanelProvider.php | 11 +- public/favicon.ico | Bin 0 -> 267326 bytes public/favicons/android-chrome-192x192.png | Bin 14737 -> 0 bytes public/favicons/android-chrome-512x512.png | Bin 51784 -> 0 bytes public/favicons/android-icon-144x144.png | Bin 4334 -> 0 bytes public/favicons/android-icon-192x192.png | Bin 4403 -> 0 bytes public/favicons/android-icon-36x36.png | Bin 1724 -> 0 bytes public/favicons/android-icon-48x48.png | Bin 2105 -> 0 bytes public/favicons/android-icon-72x72.png | Bin 2644 -> 0 bytes public/favicons/android-icon-96x96.png | Bin 3159 -> 0 bytes public/favicons/apple-icon-114x114.png | Bin 3589 -> 0 bytes public/favicons/apple-icon-120x120.png | Bin 3754 -> 0 bytes public/favicons/apple-icon-144x144.png | Bin 4334 -> 0 bytes public/favicons/apple-icon-152x152.png | Bin 5998 -> 0 bytes public/favicons/apple-icon-180x180.png | Bin 7360 -> 0 bytes public/favicons/apple-icon-57x57.png | Bin 2293 -> 0 bytes public/favicons/apple-icon-60x60.png | Bin 2371 -> 0 bytes public/favicons/apple-icon-72x72.png | Bin 2644 -> 0 bytes public/favicons/apple-icon-76x76.png | Bin 2736 -> 0 bytes public/favicons/apple-icon-precomposed.png | Bin 6794 -> 0 bytes public/favicons/apple-icon.png | Bin 6794 -> 0 bytes public/favicons/apple-touch-icon.png | Bin 9537 -> 0 bytes public/favicons/browserconfig.xml | 2 - .../df4b367461890fa5fd0d9339d3c3f9c6.ico.zip | Bin 90861 -> 0 bytes public/favicons/favicon-16x16.png | Bin 1165 -> 0 bytes public/favicons/favicon-32x32.png | Bin 1662 -> 0 bytes public/favicons/favicon-96x96.png | Bin 3159 -> 0 bytes public/favicons/favicon.ico | Bin 1150 -> 0 bytes public/favicons/manifest.json | 41 -- public/favicons/ms-icon-144x144.png | Bin 4334 -> 0 bytes public/favicons/ms-icon-150x150.png | Bin 5919 -> 0 bytes public/favicons/ms-icon-310x310.png | Bin 16060 -> 0 bytes public/favicons/ms-icon-70x70.png | Bin 2562 -> 0 bytes public/favicons/mstile-150x150.png | Bin 7333 -> 0 bytes public/favicons/safari-pinned-tab.svg | 475 ------------------ 36 files changed, 12 insertions(+), 521 deletions(-) create mode 100644 public/favicon.ico delete mode 100644 public/favicons/android-chrome-192x192.png delete mode 100644 public/favicons/android-chrome-512x512.png delete mode 100644 public/favicons/android-icon-144x144.png delete mode 100644 public/favicons/android-icon-192x192.png delete mode 100644 public/favicons/android-icon-36x36.png delete mode 100644 public/favicons/android-icon-48x48.png delete mode 100644 public/favicons/android-icon-72x72.png delete mode 100644 public/favicons/android-icon-96x96.png delete mode 100644 public/favicons/apple-icon-114x114.png delete mode 100644 public/favicons/apple-icon-120x120.png delete mode 100644 public/favicons/apple-icon-144x144.png delete mode 100644 public/favicons/apple-icon-152x152.png delete mode 100644 public/favicons/apple-icon-180x180.png delete mode 100644 public/favicons/apple-icon-57x57.png delete mode 100644 public/favicons/apple-icon-60x60.png delete mode 100644 public/favicons/apple-icon-72x72.png delete mode 100644 public/favicons/apple-icon-76x76.png delete mode 100644 public/favicons/apple-icon-precomposed.png delete mode 100644 public/favicons/apple-icon.png delete mode 100644 public/favicons/apple-touch-icon.png delete mode 100644 public/favicons/browserconfig.xml delete mode 100644 public/favicons/df4b367461890fa5fd0d9339d3c3f9c6.ico.zip delete mode 100644 public/favicons/favicon-16x16.png delete mode 100644 public/favicons/favicon-32x32.png delete mode 100644 public/favicons/favicon-96x96.png delete mode 100644 public/favicons/favicon.ico delete mode 100644 public/favicons/manifest.json delete mode 100644 public/favicons/ms-icon-144x144.png delete mode 100644 public/favicons/ms-icon-150x150.png delete mode 100644 public/favicons/ms-icon-310x310.png delete mode 100644 public/favicons/ms-icon-70x70.png delete mode 100644 public/favicons/mstile-150x150.png delete mode 100644 public/favicons/safari-pinned-tab.svg diff --git a/app/Filament/Resources/UserResource.php b/app/Filament/Resources/UserResource.php index d953eb953..c1418ef32 100644 --- a/app/Filament/Resources/UserResource.php +++ b/app/Filament/Resources/UserResource.php @@ -52,7 +52,9 @@ class UserResource extends Resource Tables\Columns\TextColumn::make('username') ->searchable(), Tables\Columns\TextColumn::make('email')->searchable(), - Tables\Columns\TextColumn::make('name')->searchable(), + Tables\Columns\TextColumn::make('name') + ->hidden() + ->searchable(), Tables\Columns\IconColumn::make('root_admin')->label('Admin')->boolean()->sortable(), Tables\Columns\IconColumn::make('use_totp')->label('2FA') ->icon(fn (User $user) => $user->use_totp ? 'heroicon-o-lock-closed' : 'heroicon-o-lock-open') diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php index ab4354315..1ee13aa18 100644 --- a/app/Providers/Filament/AdminPanelProvider.php +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -27,13 +27,20 @@ class AdminPanelProvider extends PanelProvider ->id('admin') ->path('panel') ->login() + ->brandName('Pelican') + ->favicon('/favicon.ico') ->colors([ - 'primary' => Color::Amber, + 'danger' => Color::Red, + 'gray' => Color::Zinc, + 'info' => Color::Blue, + 'primary' => Color::Sky, + 'success' => Color::Green, + 'warning' => Color::Amber, ]) ->discoverResources(in: app_path('Filament/Resources'), for: 'App\\Filament\\Resources') ->discoverPages(in: app_path('Filament/Pages'), for: 'App\\Filament\\Pages') ->pages([ - Pages\Dashboard::class, + // Pages\Dashboard::class, ]) ->discoverWidgets(in: app_path('Filament/Widgets'), for: 'App\\Filament\\Widgets') ->widgets([ diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..dbf198f25864b1c03c78676aca061fd0de03c056 GIT binary patch literal 267326 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 mjtq(?#H)JKzc5 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 RqAdWRtf;C`DQ6P=e*kWBSNi|} diff --git a/public/favicons/android-icon-144x144.png b/public/favicons/android-icon-144x144.png deleted file mode 100644 index 7e98c1c30bdfa08158b4a9b74405bd9197c6a161..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4334 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 diff --git a/public/favicons/android-icon-36x36.png b/public/favicons/android-icon-36x36.png deleted file mode 100644 index 729e212695aea0148c21047321c9203d4ae733d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1724 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 bo9O{{=mFiwd|{R@&;|xiS3j3^P6M@F zRWgeNS(17ZM3f+kvjhpso#slm zS60+e1OPyp=wRaxdWStzH~_YRXzNJO$*?V*Edik6veKsjS+Fk^;cjmQ)D3AZfgK&X zgS#^T#Oeb;d=da`gG2EW0Ek2Yz%mU02sZ#gEwrfJ%@hEnn_Wp1TM$rjFZtv9qXPdg z71-U~73x;jfCqP8=uY+kFND%p+9zR%qX(o;lcP%8`o?CL=WEQrw1{ur{2Zo!D&lYd z{Kr+JwAY{d-Q~67-fa9@q$}(ExHswgg0jlHpHu!+`R6k@!d3}X6CLCxeF)2&Sd&bR zJSaSOSf_sb`6a{DryQh}Uda8q0(R{au21ucgj{a}#hjsI;m>|Ks{ncR_j{%RAE#r* zJ5@dK=utJ#pVrHRNnW(UMeBnrKiV}M$<8D?-lTlNf4h3^ubBL-^N;@Wq2op4HxG}a z>c(d*RhN9bCX}{H=t0GiA|Asepd<>7n zwLza^k_z)vuV41JaCM;CP)J3jM5wyniLyJ%Oh$=xLhY3zQ(f-`M7Y7J(*}vkQqo7x z$qGZPp9*#XBH8t<>jSrEjsNKok1$UOCk-H*12I?>hH}q>5t$su|Lv0 zR_?9n>1k;dlc1ex7G0g=w(c+Ux~WqI8PHty$gMZ=8{ABi|oG(HClOj>nja2`2@0bq6<80`GlYBERlv zKlw>ku9cKe6?oUWrW@`cQP0$d;%kbZ9G*&eqnfyuoMHO@&T%{c4~V3nrXD-h+izzQ zo#x{{l-c$&`@M9o-t`qEiHkB(yFSte6A^jZRu2Y(oOquVXZ^dA%&#L+Yje6~-?TKp zt51&D*>;!C&&vsOhBRg?YhnY4CWW~NnXz`g1x6Oh3TJN}r%pCCi|X;Otx9@%(`%}5 zl`+e)qT-Q~pt=GL(P&Y1j3`;1-YG{r{<>N7F8<=iR~Y-immZ==KYT~y_w=c%S&x+t z?kE&=w{py>RRI}i1QFGTR5orbTGqe3COK^iQ55TOAkkVlCv8O>FZD^OE=h*|P*ZhD zJ1e;ShaP%159mD6(+sH;Y`loOf9p#8M3Z`9xBgLGNmEQ|Vs;75M~0j!C*ltkjfosD zG>S|#b>h*Oz{w%uS&&EHk35XnR4Y4O#7Oj=Wk9d zC3Qr5sp%Ijc-;5;Rp>F+&a@bv!s=JdLwK7=v%Xhe4TP47jVjJ}CL`7}<90V0QBtkX z+2*l9EsQPt__bB1jm@cLUGYT)FYnPi{DIiUw~~)}NSC`gqY^vha0`4~!tFZazt(=Z zk`<=VJm+OrDzcoMolzQ6IgLnDg2TcSV^uRnUn&6}wPcBf_4Fe6bm$3fsX|78kV&A2 zGeHNS5J;R6!o&!Lr65oQ6qZ|6r3dR^U|1N=2(JT58t+LWQ95o&j1EUA3?;zf(b3T`?j8*qNW((H z*^?=&U_t=8myyDW>(qy#}q(BeIMe?g+W3a{;Bo2>Y1(>iH2nHUF#xu}#Gz(A1z`zI?xV{6!1xBC(K(r;> J)LGF)zX2Z$AVdHF diff --git a/public/favicons/android-icon-96x96.png b/public/favicons/android-icon-96x96.png deleted file mode 100644 index f9b8fbefb7848cc076bc230c7fcd38cc87da5c9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3159 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 K(h diff --git a/public/favicons/apple-icon-144x144.png b/public/favicons/apple-icon-144x144.png deleted file mode 100644 index 7e98c1c30bdfa08158b4a9b74405bd9197c6a161..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4334 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 diff --git a/public/favicons/apple-icon-180x180.png b/public/favicons/apple-icon-180x180.png deleted file mode 100644 index 0503d522bf7fb110b05e2cb2a470f3babfaef8dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7360 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 Zcq9Xl><`tNk3$rIx2La1wR`A+KLLI*eSH7` diff --git a/public/favicons/apple-icon-60x60.png b/public/favicons/apple-icon-60x60.png deleted file mode 100644 index 09a79d99746ee762aa7ca2c5f99be1db3433b146..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2371 zcmeAS@N?(olHy`uVBq!ia0vp^HXzKw3=&b&bO2H;>5jgR3=A9lx&I`x0{M)^LGDfr z>(0r%1acITJ%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MS0K<-rj7ug z5LciAfuQ-LXfy-{Fa-Yp|37Wnm0Dn0yjBwA7Yt0(9D;IMMkeZPtfF?A-D?h9ef(@k z7`x1z3vd5EX;frVYd`@kyD|(cBKhpgw_N-F_08VdS)R(9m$vHgCvAWK?WPFN^v^21t|w+ieb`WT z@l&XDf01VTxrL@%U+(YKw>=Vg>)lM_WncVbU+gZvk@sA6@w()uM|Vrau6I0GZkTxV za$m|FApzZ!KIW1U8JF};GY`ZO9$#v+oMsufkOzxh82{|?AJWlTc z`j9cn+uh~*giTTQKn`btM`SSr1K$x4W}K?cC(XdX?CR;_7~*j}IYEMTaf8u;6GzS* zI(6*a!IMWlX4$#r$;H{#F*+(H3I-Y$2ALQed3Jbud7h48W{R||WEJ{iWTdI3xjKfK zIn=b2H)xAdR#s;7+daz`uU?+-FsXYdPj8Q-m9Nj)GrBr!JuaP2%4Obk`P#X-d1nt! z1cH+%ZyvpL_3Yilmrvh5-X*v_v8QLvKDF!Xe*R=gqMmoCemR8YjFotza_b<9*`!R(o$^KxePs{WBIE-E#i z^yntjpU>+gpNboZ&vK7F%(kSv%R8v(f-awiZg;un`U^YD)^6(Bxa-(6DZK?+Q`dAX zySaMJwsrd$Wqf-rea{+Mm~7j!ZR(T7s#b2tzV%J=6W+k2ynbC?j#O!NSJm6th#3-w z&8yefGhGQ5R`)%&=xY9{D|~WmGN*1-$dwA2xbg58NeQb^tslA@BRDsfJzK+RP`Y{R zqKjK+`OFON)t+cDj-ox2umfPg(y}#$v?^2A%ZnsYw=hj(oZBFl5cQ z+wy_wR(n2W%uZ#Dm}U5U0^hWN)jso+8(e=s6mjd*{T26N&Z!EYODxd~+}r$*Y>922 zXx+#jIc4J0A3{01)^B}boUFOy0#C}77u{3cu4`Vtv{SvYvm>i};zySE_a=W%IJ(zI zbwX*@_m#IolvdlgwNAJ!EI#L9`Hh-uiQAhaznei{JNGz2?V36;m#LPxMwFx^mZVxG z7o`Fz1|tJQ3tasjbpDgdoC0a+TH>UWRL)v7?M$%n`C9>lAm0fo0?Z*WfcHaTFhX${Qqu!G&Nv5 zt*kOqGt)Cl7z{0q_!){?fojB&%z>&2&rB)F04ce=Mv()kL=s7fZ)R?4No7GQ1K3si z1$pWAo5Darf^3d&2v8M+p{bF%v4y$0g+bKP=X^jV{7B{mXI7;$7&tjiS!DMHC>4ez z6&mEpkd~Q~3iQ5yZeB@Fe!6~IVp(Q#eqOOYB4YGY(oB+!&CE^A3@t1T(h^P6QVdco ljg2i+jFXMiER)UjfI9Sm?qj|%OBZMZgQu&X%Q~loCIHK@pSJ)2 diff --git a/public/favicons/apple-icon-72x72.png b/public/favicons/apple-icon-72x72.png deleted file mode 100644 index e6bb769c8959ef40d2f3782ffb3f4777a435454b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2644 zcmeH{hf~x^7RP@eNmxd9#brnyilB&0gh`9!G%yTlgaP3gm<%&R8iFW$Fr*_Yi>M@F zRWgeNS(17ZM3f+kvjhpso#slm zS60+e1OPyp=wRaxdWStzH~_YRXzNJO$*?V*Edik6veKsjS+Fk^;cjmQ)D3AZfgK&X zgS#^T#Oeb;d=da`gG2EW0Ek2Yz%mU02sZ#gEwrfJ%@hEnn_Wp1TM$rjFZtv9qXPdg z71-U~73x;jfCqP8=uY+kFND%p+9zR%qX(o;lcP%8`o?CL=WEQrw1{ur{2Zo!D&lYd z{Kr+JwAY{d-Q~67-fa9@q$}(ExHswgg0jlHpHu!+`R6k@!d3}X6CLCxeF)2&Sd&bR zJSaSOSf_sb`6a{DryQh}Uda8q0(R{au21ucgj{a}#hjsI;m>|Ks{ncR_j{%RAE#r* zJ5@dK=utJ#pVrHRNnW(UMeBnrKiV}M$<8D?-lTlNf4h3^ubBL-^N;@Wq2op4HxG}a z>c(d*RhN9bCX}{H=t0GiA|Asepd<>7n zwLza^k_z)vuV41JaCM;CP)J3jM5wyniLyJ%Oh$=xLhY3zQ(f-`M7Y7J(*}vkQqo7x z$qGZPp9*#XBH8t<>jSrEjsNKok1$UOCk-H*12I?>hH}q>5t$su|Lv0 zR_?9n>1k;dlc1ex7G0g=w(c+Ux~WqI8PHty$gMZ=8{ABi|oG(HClOj>nja2`2@0bq6<80`GlYBERlv zKlw>ku9cKe6?oUWrW@`cQP0$d;%kbZ9G*&eqnfyuoMHO@&T%{c4~V3nrXD-h+izzQ zo#x{{l-c$&`@M9o-t`qEiHkB(yFSte6A^jZRu2Y(oOquVXZ^dA%&#L+Yje6~-?TKp zt51&D*>;!C&&vsOhBRg?YhnY4CWW~NnXz`g1x6Oh3TJN}r%pCCi|X;Otx9@%(`%}5 zl`+e)qT-Q~pt=GL(P&Y1j3`;1-YG{r{<>N7F8<=iR~Y-immZ==KYT~y_w=c%S&x+t z?kE&=w{py>RRI}i1QFGTR5orbTGqe3COK^iQ55TOAkkVlCv8O>FZD^OE=h*|P*ZhD zJ1e;ShaP%159mD6(+sH;Y`loOf9p#8M3Z`9xBgLGNmEQ|Vs;75M~0j!C*ltkjfosD zG>S|#b>h*Oz{w%uS&&EHk35XnR4Y4O#7Oj=Wk9d zC3Qr5sp%Ijc-;5;Rp>F+&a@bv!s=JdLwK7=v%Xhe4TP47jVjJ}CL`7}<90V0QBtkX z+2*l9EsQPt__bB1jm@cLUGYT)FYnPi{DIiUw~~)}NSC`gqY^vha0`4~!tFZazt(=Z zk`<=VJm+OrDzcoMolzQ6IgLnDg2TcSV^uRnUn&6}wPcBf_4Fe6bm$3fsX|78kV&A2 zGeHNS5J;R6!o&!Lr65oQ6qZ|6r3dR^U|1N=2(JT58t+LWQ95o&j1EUA3?;zf(b3T`?j8*qNW((H z*^?=&U_t=8myyDW>(qy#}q(BeIMe?g+W3a{;Bo2>Y1(>iH2nHUF#xu}#Gz(A1z`zI?xV{6!1xBC(K(r;> J)LGF)zX2Z$AVdHF diff --git a/public/favicons/apple-icon-76x76.png b/public/favicons/apple-icon-76x76.png deleted file mode 100644 index f656479b893fca23d48553809632bfd00c5bc1ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2736 zcmeH|hf`D89>*_)E?uRU&;$gMn*>6V4bnRS450`j2`LalC?TN=qF6v#T(JQvte^r? z7F1k7Ac6u*wICvjyUGfJf`uYY;azs#%=5jO_Xq6E&fMSm&AI3E`+d*(-E+>(@%46< zlhKd?06@;&&4~-BEnjKkP+ug0?CJp24r)z99XQ>M zOag$^9RQGd7ywqGSD8})AOHd29Tflw1puHLcd>al5dcIRe7z{n5THmd`RDnk0)LkZ zY;0`s4JxXjjXS|7d;38LKw1+?^r3R%6LjUxLyy-Fz5TfKb?ttLEIzgQ&FcCnPd)6$ z^xQ=Y(deF)$1+=j<}1y1mb|~4{^Jp4v4;l;3fk3NDRC`R49*&5yfx{UXBV%%dV^?yX3j!G<3!OB>maeZ?2Hkq&1jvp&yIrb@cApaqMBd%8MJ zwnqnVo_pyyw>=2}Ab)?;M9!MYYeIKJqPvqlCFtJl`EOx<{#xBDzi+2zm(Jvr&yGh{ ziN|DO%P+_t)DxvkSfr>)>BH^i6%V;RQtYu)YYfOy@`mreW!{tDuMeKc?SI^>(=dO4 z-+ivO`OeafmFr<&Rs?TbmRd_b-otl4cwk(ze^n@UxW$lKEvd7hAhmbF*Y{O;EEQtPSi(xz@6qh$^x^AuC&sEW1Tpj$J}pa7q%Q6;0M?Wd}|1dDPPU`dq~JlP*f0x2Wni)u~^qJI0; z=;U2;9h^i>rOM>AWp3L1n2|=E9rpUzlEd119_*}?fF)6`j-3!@o7~4Qlh5x6BuVtm zV7Ht5Ym-%YIf4$jX+^V#;-yBLR+e%=TG#D{P}PsA$6s1sOaQaRdb#EcxRg!81k zSouFNX^aKZ?U2XCTj|CjChuhJbZ##0LtUEF^^D89vCYJ)N6o)ebVfI6luN9sHgGi^ zY&m;k_sA|cpE(lZX5=IzjWk_G}c8{^P9SX)d|h~u1s-NHYlHN7~awQ1Vd9tqHy-`q`P~r z5j~!Dqb1B8ufW3b_IO`>+B6K7JyjC+wdXiZZ@X74OR*rjw~Z2XZQAYU@XIe9WvS<9 zv@4fyF@s<8^9GEL41miXd-Ut$TKzc|JlxHj9jS%6ool)41R!vmTS22nRlSeyULxA& zc%`jzR$*JgH?*hsz`fei@hk5A!9KG0CNN6qHE~?o=`pL?*{UW-irnI2!-q+i83(1E z>yr!NuBus<<&Q&El5GN$no8_NU?c5dsBUXb;`j&S%>6ZMbk$$w!jg^+F|ufDqt25; zXN6fkmE-!-HpNW1m5&SO@V9N!r;rgdM1XC_Wf zw@oX&BK)MAky~^e+#w1hPdccm4Wz3c>ZFo z@7XUxe}PHPTh3`iP7kBBq8> zo#wHZj+3}TTd-7YD1?}iw)*C@&qn>a*wT8xVo*qF2XrkN@tuSC3>u$Fp!1lJ1JED} zX8~GSpsgt&nt;X-K+p^Xp;nS-=KWs*+*k&imGb`s5|O9ppa7Rmg@jlZKZ(X;0`6Q| z1d~LIVADBpEW#Rrv%te4Ny|-16dJx8g@s4*`Edj!GAStu!QP}HgJ?u7FJkQIER+yX z+ssIb6mY`{1gBWKfXj^G69~Q#ngF26H|`++hxtpBK!{|rBO>_#3XfI*ct;>c^}9U( zW&+s^e&i-HRIMikA?n{DBsQ1HPl;m!f6WRR7ZYK7BVe;6-{&DwAPPWPp{=1Glr;_v zzWP=kLKMEsTWBAdr5l9v-kxh?{NkIPR z!yp+f%Ww?V+7gSx;XxM7ip2mKcnk*5z|b))JROUGA`sC0U=NEdAO*nP+1shsfqLj) Dm&!PO diff --git a/public/favicons/apple-icon-precomposed.png b/public/favicons/apple-icon-precomposed.png deleted file mode 100644 index 277e51bf069ff8ac4e22728b37e78fccbbeb8ff6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6794 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 diff --git a/public/favicons/browserconfig.xml b/public/favicons/browserconfig.xml deleted file mode 100644 index c55414822..000000000 --- a/public/favicons/browserconfig.xml +++ /dev/null @@ -1,2 +0,0 @@ - -#ffffff \ No newline at end of file diff --git a/public/favicons/df4b367461890fa5fd0d9339d3c3f9c6.ico.zip b/public/favicons/df4b367461890fa5fd0d9339d3c3f9c6.ico.zip deleted file mode 100644 index 8d2efae04bec4303eadd637bbb441313e444eb9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90861 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
P(75$kSO zsqHk);o>mHbTs2gD9<%m8flg796oJx(GG5^JI(39dV}1*n`&g&FQI3`)g6mMS^zs`PwvD_NluA_{)=3Wqy2EOn#UDgV*DQTGNOHL8 z^E=TRhc!cQspH_QA?ENrH>pth+b;SnsBBo=B}M24_QTDup4*F}{t0>FEqE=|WVy|k z^=ok}bP;LP&DX+npW}5abA3z6iofMJ9gRv*HhjCv*ZBoZnI-4^(V~y-3JasipnvzM z?J4b59iznO$1El8KC#(H{0ql&-@ktxco7le7_FQyygWORw{6Nk#!_~9`_Bm1Ij-#PMdD2{>tD}iLqd^P`UP#_CBu&hIQ3fvHlWTS?7!^RDd9G_j$S&C*Ia<#1+IFDh1WLA1ZJ3QYIcQOKo^~{DrTNO z%VzuT<%0O`3Fu7orGpCl!M-ap3?qenr<)ujS*+(0S+x^ExZ@P-bj3<2(C;C+p9EEv zQv*9WHZ;et2?~2^bfK11s|M43g!uf7kbqo^2>D`yKl_I;v#?S0mO6Fv$jPslJ;GR7 z@7_p$%tEqR6rs%CE{aq!cj8CTB4!1F2nO^DwcD+Ve5hLaAfzDVxM>P~;!aja*6D#| zh9n7d*GetC52y&2`L^3MX0ev&=S^XuS`Qn_~Q4VPI3PDi`*O??&? zzu*h(GgA>LL@es4c-e_K>$b2b2K709+T=@+6)8zfg@uKQxhmy}$n+@s7R%Y$!*UtN*lmzrW7@Pf~;(o*DUF@H<>k+Ek|@6MhQ`T=*|K=zm(h zpC$Z?iHoDVtGNrDAKJp&lHJ4J?!I^l=zGa0xXc(L0D$$6Ed00Lj|YCm-q^v~!rax3 z-Nx0?;l5}Jf3ltn{Bc|0%TGAr%D=7Nj|iU6F?KL>akMu3Uv6q{UJvfS=Zg0+LcmG& zVJHBA0NQ$Y^HQXUOjJbWHJe1Ebk@&R_d85}_j zKJ~wgKqhhrffwk(`*&T#`J^23E zzif~sM^eI|!VdAP@NQCrgaI-f1*|$K=QV3j@LAE(RBzVu?I_|Lnuhwshg|Ccysyof?c~ diff --git a/public/favicons/favicon-16x16.png b/public/favicons/favicon-16x16.png deleted file mode 100644 index 9597c6f36e5c8193b0dc1e3d99c3a7e4e18bddbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1165 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l=vCo z6XFV_1%l>}H1z-f|5MVRKtUT=666OARTgD09|1;_=_hu0@NzP5+L9D8VfTTxt^P71 zQ!eeD`R22!)R*@cf4=Os;FDkZ>%)Df6(9fP9l3nt`4hv~bm^4e*Sb_$*%zO>`Z|s) zw^3V8SajYoE1=B35ITNa*U3OiGqQKg`A$66B@SkteLaNDIsBj()1Rg zfVi2#uA#oR1_92&-qI`D1Kq>*1LE}!E;Jk$$YGj2aU*9y>4JFzM_kx~jf=Ux7c@*Y z4LNY^+OczS_68RYUOXwO^W@Q~6E6-udiL&N=F6wNp)6ZE<8PlkcKmw(M8TUsd;T$M zFzsMq*q1EQ;KerkBhb03C9V-ADTyViR>?)FK#IZ0z|cb1z*N`BJjB4r%E;Ktz(Cu; z07$YIY5SpQ$jwj5OsmALp-g}BC!hv5kPXH8X(i=}MX3y)xrynizKQ9X$=M2Kdggi- zx|Rw+D@{OF8X74C8k#9&l#~=$>Fbx5m+NJMR0AhKqiJ{l;$Q` zS-IpVm*%GCl~`E?0F@Rq7%u<6TOUmg*iI{}jMU8Zj1mSzOCx@UqE?_9aU^q~YQi&9 zN-{u7F0WDK04kA0QsSGLn_5y?kjemdm3~29y8WgwP>>*-;~N50#b9V^WNvI>Zf;=^ zwe&e3PzgVhIl-A#sSE~APE!`yy#Y#vAxVV>c`~GB=A;6>ub-P&l9QjVpO#pbnVg?j ztdEEo{ggD5Bx5sk6Ei~#OM|pT)3g+W6iZ`c%M{~e<21`;Gd-XVJ)rxTFU-;f+Q8uH L>gTe~DWM4f_LPC8 diff --git a/public/favicons/favicon-32x32.png b/public/favicons/favicon-32x32.png deleted file mode 100644 index 737917e1a32f5a282330b9ff8566e4d020e0bbd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1662 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!Dph37_YNRg8YIR7?_2eE2qxuP-iq~KmP6aY8w{GrpI4T zo+;ro+W+@jZ=S2AM%KjXGp6;V3o{v>K2^WAOv>)jzYhyaO}M*$8CO01b6fgn{^GaW z0^}6mui103*qqDZL|o9lPnVV}-&`eOd*}OEwJ({q&zC;X(n;I*a@Oue?i;F2SEh)> zM9023mMzG+{@oT;p2E#LckMlTB$$m|X3~4nJ@ErkR#;MwT(m(|To-U3d7N?UFBzhVqPVDTQC^%ilm|I)gnq9q&wI}9| z&7PXgKUi5>H=O3~?l>nTJbl8HLwaX5bd|N$*DqM1vSiJoRm;{bT)A|~+U6xw0>l09 zI~=)i;zrBeD>-5uGiG{6L_|d%ezG*jq%tMv>)SW7X^IVth56Ne8aFrgoYpB0H?P~V zW;grl<>FU%_VnD7vfG??^4G6}DY<`{nVKKWOHJW<#@gBTVy5HMug+U1HZ@H&)R9q< z5`4)qwZF@aPjf*{&pz%GH#Y_RykRkALPC$fhfCS7HA_-Lep<|o{G;jdDQ)En!-F%- zv~87zJsX|HvI5eNw>)`r?$l}h2F;E$ZoS&`4lR1LWKz(wiog|2|2}N`#HAA5G+BFf zi=?FF&Q;kDw%xdP?dsvs0#lQQn>|)Ky$0K7nVN1-=qx@KcGT?ax4v`h@;1(kd!8Yi zbFyjT>h<-9TxNQ1oxHq-^P$i5;N`y4#Xg?6c5orXqE-3FeAH^V*d!SkZiY^!3Zj%k?rrs(~1&S}(sS{Z89kpn(h$AQM9}N^_H}tX%SwOLJ56O028` zfJ%!Q4441kt&gS#Y^Rk~MrvkyMhSzVr4c_vQ7cf5IFdO~HQ|{lB^e+km)9tA0F_80 zDe=wBO)aS`NM!)KO1~g4-F{OTC`gda@eKj0VlXr{GB>s`H@7f|TKb$1sDvNMoZ!r= zR0ablrzwl<-Tn5b5eoc*U!x>$;nUGPfIMzOwP|M)<;B)eoC52lChb& ziJ75=r9oPvXbP0l+XkKU4LA< diff --git a/public/favicons/favicon-96x96.png b/public/favicons/favicon-96x96.png deleted file mode 100644 index f9b8fbefb7848cc076bc230c7fcd38cc87da5c9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3159 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 diff --git a/public/favicons/manifest.json b/public/favicons/manifest.json deleted file mode 100644 index 013d4a6a5..000000000 --- a/public/favicons/manifest.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "App", - "icons": [ - { - "src": "\/android-icon-36x36.png", - "sizes": "36x36", - "type": "image\/png", - "density": "0.75" - }, - { - "src": "\/android-icon-48x48.png", - "sizes": "48x48", - "type": "image\/png", - "density": "1.0" - }, - { - "src": "\/android-icon-72x72.png", - "sizes": "72x72", - "type": "image\/png", - "density": "1.5" - }, - { - "src": "\/android-icon-96x96.png", - "sizes": "96x96", - "type": "image\/png", - "density": "2.0" - }, - { - "src": "\/android-icon-144x144.png", - "sizes": "144x144", - "type": "image\/png", - "density": "3.0" - }, - { - "src": "\/android-icon-192x192.png", - "sizes": "192x192", - "type": "image\/png", - "density": "4.0" - } - ] -} \ No newline at end of file diff --git a/public/favicons/ms-icon-144x144.png b/public/favicons/ms-icon-144x144.png deleted file mode 100644 index 7e98c1c30bdfa08158b4a9b74405bd9197c6a161..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4334 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 C-cw5e diff --git a/public/favicons/ms-icon-310x310.png b/public/favicons/ms-icon-310x310.png deleted file mode 100644 index 7b84fc1299b58d1c4ba201e8587d38602bff3125..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16060 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 Wbonr63;59-09tDLpeB`9vHuG$(^k^} diff --git a/public/favicons/ms-icon-70x70.png b/public/favicons/ms-icon-70x70.png deleted file mode 100644 index 383bb7675994a98135f95a5995e69b53a210ad50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2562 zcmeH{doL{Z znL_{oIKkYQ1bNdv6X4sMmn1472lFr>8URq1Ahhkq55+tIBr`)$+9@{!1qx(y5)puF zDgZ=801XI^4zoyBw$M`*Ii+RdNMkU`N<4?L-Vc9&Kew{A-65eL-SquqxV*I6^M$n{ZNBCW zUs0Ix`si!D8#A8@sc25Y0shU!mp*5YnBS8+bkZ;CQGUta6TK`DsQQtl^OFAVM}OP- zHqmXZEUebj6RbiUKbQ8Q>Xzkkx!x1>>td+`c>*aRHA0l3`}P?~#n5-Ana{-SWIZGC zvk5;`*Z!(GZ{*ZRY7d-pxE*`2G+F(^+hH4SP-nKn<)vx%lh%tlI86U9f(=)TSL>Yb zPUgPqN{`S`mGOwz89P%k2(LVLdO60bA$FAl9h1l1(#)89(Dn9nC=m2FcM1SNhz>`8_Yqk3CGS9J-tv`@mURnQ0F%D0ob$ zN_ELm;&2Vyl%vd<9Lv^B?%lPlGPP6l8OzLV(+@v&1)QJSI={Glekye9+h^OX9mFjY z?oX4rFI%G0I;}%Zm+Hj%B8Nv6jiTXFFJr}KKAxRq^Z3i4du>k}XorSw`QKiT|0;XG zwq4&fF6FTC96l&Rp8blqC7}Fd`sfdfDlu%`@%qDp412>P+6M~kh$L^rjS+hw@KF2W zW_m4vWq-6ce?8v%*z+XKqWGCB>nhqdpO}TVmDER2R^`Hrj~el%o$K;aQoMSDl+w<- z(?E$p)hy@0g4=#M+m@JA_|*!dPIE%2I(fY@-z<+C?+8hzv++kO+MlwOS`BuFa0vU! z-fG^~b_0oJHuuuTvT%&cyxoOqA;}oRg7>@0BB7A@w7|~=bNyGh;k2KX3tOe`VN0{c z(p!^=re>J*ROiYEjA4dzWRCDy8{9{@Y9Kzb+@*vs&waeJ?aB;gEjXxs6^3zETsz?4 z``+OqN49&SY3{kh;;pt036(oH-_&m#x!=j;jVUUuGiG~hRWbczi0E*=DE|&535Fe?k7JfscJ0G^L4}^O8S$S*iXlWa`g^JJGmqz zD!u3_;l9&WHkeqWqg3=5#OPCriiqG>&DUPQ$()&7(Q(b;@2KRi&6~-RIVt8>qEzH; zk0`Qi!|=euW|li7HwU+VYQu`dJ*L!o3J;wSv861i1^1Vqr>me zPbYG}+t!6Ov5b`sGQF-@?^=irEZhjMZZQ%FYZ`6oeequRx+Rw6m~1mtgk)1@E9%=hI8*++roZff0VimraeIPxNxuI*!)yF{;BRp^d&*7-%rDo?T$!omA{F#QnzEU1 z9e6mn4F_lViRkAw>#?#wXWCj9Zh2c|ZLU0-l?{J8k6bNX5rlpS$}AH{7R8N4#gmy- z$N>!$T1O3~rKW+kLuueOFnAOSfkHv^K_A}4-4;2K`dll_G1AX1`cw;|upf8od!sD$WGytIUcdL>A#r&y>$9q!g9-b_K#%YKG zW)#Fo?W^-I#(_>@dF~;7#fkzDa%>+$r2A4?q5f3x=dO_c3=jQs`@NRzuS2whD1g?| zz+!Z;SRK^m+$j+V5#3kEmVS*2P=y<0E|;EFV7)B+V^| zPWEF2Apd LSQ(cZy0ZTXZj}yN diff --git a/public/favicons/mstile-150x150.png b/public/favicons/mstile-150x150.png deleted file mode 100644 index 9a8fa880bf94f49949f89ae7f2196d0505190aea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7333 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 - - - -Created by potrace 1.11, written by Peter Selinger 2001-2013 - - - - - From 0af0bea90def9e30ad89f5ba2c773e524c458666 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Tue, 26 Mar 2024 22:00:39 -0400 Subject: [PATCH 016/173] Update views --- resources/scripts/components/auth/LoginFormContainer.tsx | 2 +- .../scripts/components/elements/PageContentBlock.tsx | 2 +- resources/views/admin/index.blade.php | 2 +- resources/views/layouts/admin.blade.php | 8 +------- 4 files changed, 4 insertions(+), 10 deletions(-) diff --git a/resources/scripts/components/auth/LoginFormContainer.tsx b/resources/scripts/components/auth/LoginFormContainer.tsx index 74530c00a..096070a09 100644 --- a/resources/scripts/components/auth/LoginFormContainer.tsx +++ b/resources/scripts/components/auth/LoginFormContainer.tsx @@ -40,6 +40,6 @@ export default forwardRef(({ title, ...props }, ref) =>
{props.children}
-

© 2015 - {new Date().getFullYear()} 

+

© 2024 - {new Date().getFullYear()} 

)); diff --git a/resources/scripts/components/elements/PageContentBlock.tsx b/resources/scripts/components/elements/PageContentBlock.tsx index 13c787bfa..83e7da702 100644 --- a/resources/scripts/components/elements/PageContentBlock.tsx +++ b/resources/scripts/components/elements/PageContentBlock.tsx @@ -34,7 +34,7 @@ const PageContentBlock: React.FC = ({ title, showFlashKey > Panel
-  © 2015 - {new Date().getFullYear()} +  © 2024 - {new Date().getFullYear()}

diff --git a/resources/views/admin/index.blade.php b/resources/views/admin/index.blade.php index 761b3b68b..91ede7fce 100644 --- a/resources/views/admin/index.blade.php +++ b/resources/views/admin/index.blade.php @@ -27,7 +27,7 @@
@if ($version->isLatestPanel()) - You are running Panel version {{ config('app.version') }}. Your panel is up-to-date! + You are running Pelican version {{ config('app.version') }}. Your panel is up-to-date! @else Your panel is not up-to-date! The latest version is diff --git a/resources/views/layouts/admin.blade.php b/resources/views/layouts/admin.blade.php index 3f82dea47..12b62c35e 100644 --- a/resources/views/layouts/admin.blade.php +++ b/resources/views/layouts/admin.blade.php @@ -7,13 +7,7 @@ - - - - - - - + @include('layouts.scripts') From 090b2e6f1b603d5c087bd2b180662cbacc2f7f9f Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Tue, 26 Mar 2024 22:34:42 -0400 Subject: [PATCH 017/173] Move this over for the import --- app/Filament/Resources/EggResource.php | 35 +--------------- .../Resources/EggResource/Pages/ListEggs.php | 40 +++++++++++++++++++ 2 files changed, 41 insertions(+), 34 deletions(-) diff --git a/app/Filament/Resources/EggResource.php b/app/Filament/Resources/EggResource.php index faeb63b55..3d8d0d43f 100644 --- a/app/Filament/Resources/EggResource.php +++ b/app/Filament/Resources/EggResource.php @@ -4,16 +4,11 @@ namespace App\Filament\Resources; use App\Filament\Resources\EggResource\Pages; use App\Models\Egg; -use App\Services\Eggs\Sharing\EggImporterService; -use Exception; use Filament\Forms; use Filament\Forms\Form; -use Filament\Notifications\Notification; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; -use Livewire\Component; -use Livewire\Features\SupportFileUploads\TemporaryUploadedFile; class EggResource extends Resource { @@ -178,35 +173,7 @@ class EggResource extends Resource Tables\Actions\EditAction::make(), ]) ->headerActions([ - Tables\Actions\Action::make('Import Egg') - ->form([ - Forms\Components\FileUpload::make('egg')->storeFiles(false), - ]) - ->action(function (array $data, Component $livewire): void { - /** @var TemporaryUploadedFile $eggFile */ - $eggFile = $data['egg']; - - /** @var EggImporterService $eggImportService */ - $eggImportService = resolve(EggImporterService::class); - - try { - $newEgg = $eggImportService->handle($eggFile); - } catch (Exception $exception) { - Notification::make() - ->title("Imported egg successfully: {$exception->getMessage()}") - ->success() - ->send(); - - return; - } - - Notification::make() - ->title("Imported egg successfully: $newEgg->name") - ->success() - ->send(); - - $livewire->redirect(route('filament.admin.resources.eggs.edit', [$newEgg])); - }) + // ]) ->bulkActions([ Tables\Actions\BulkActionGroup::make([ diff --git a/app/Filament/Resources/EggResource/Pages/ListEggs.php b/app/Filament/Resources/EggResource/Pages/ListEggs.php index cd7e405fc..3d6f836bf 100644 --- a/app/Filament/Resources/EggResource/Pages/ListEggs.php +++ b/app/Filament/Resources/EggResource/Pages/ListEggs.php @@ -3,8 +3,13 @@ namespace App\Filament\Resources\EggResource\Pages; use App\Filament\Resources\EggResource; +use App\Services\Eggs\Sharing\EggImporterService; +use Exception; use Filament\Actions; +use Filament\Forms; +use Filament\Notifications\Notification; use Filament\Resources\Pages\ListRecords; +use Livewire\Features\SupportFileUploads\TemporaryUploadedFile; class ListEggs extends ListRecords { @@ -14,6 +19,41 @@ class ListEggs extends ListRecords { return [ Actions\CreateAction::make(), + + Actions\Action::make('import') + ->label('Import Egg') + ->form([ + Forms\Components\FileUpload::make('egg') + ->acceptedFileTypes(['application/json']) + ->storeFiles(false), + ]) + ->action(function (array $data): void { + /** @var TemporaryUploadedFile $eggFile */ + $eggFile = $data['egg']; + + /** @var EggImporterService $eggImportService */ + $eggImportService = resolve(EggImporterService::class); + + try { + $newEgg = $eggImportService->handle($eggFile); + } catch (Exception $exception) { + Notification::make() + ->title("Imported egg successfully: {$exception->getMessage()}") + ->success() + ->send(); + + return; + } + + Notification::make() + ->title("Imported egg successfully: $newEgg->name") + ->success() + ->send(); + + redirect()->route('filament.admin.resources.eggs.edit', [$newEgg]); + + // $livewire->redirect(route('filament.admin.resources.eggs.edit', [$newEgg])); + }) ]; } } From e50e3509bd398bb86cc6bdccca9fb4d78680472f Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Tue, 26 Mar 2024 22:36:32 -0400 Subject: [PATCH 018/173] More adjustments --- app/Filament/Resources/EggResource/Pages/ListEggs.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/Filament/Resources/EggResource/Pages/ListEggs.php b/app/Filament/Resources/EggResource/Pages/ListEggs.php index 3d6f836bf..8f87d9fe6 100644 --- a/app/Filament/Resources/EggResource/Pages/ListEggs.php +++ b/app/Filament/Resources/EggResource/Pages/ListEggs.php @@ -38,21 +38,21 @@ class ListEggs extends ListRecords $newEgg = $eggImportService->handle($eggFile); } catch (Exception $exception) { Notification::make() - ->title("Imported egg successfully: {$exception->getMessage()}") - ->success() + ->title('Egg Import Failed') + ->danger() ->send(); + report($exception); + return; } Notification::make() - ->title("Imported egg successfully: $newEgg->name") + ->title("Egg Import Success: $newEgg->name") ->success() ->send(); redirect()->route('filament.admin.resources.eggs.edit', [$newEgg]); - - // $livewire->redirect(route('filament.admin.resources.eggs.edit', [$newEgg])); }) ]; } From ad8d087fd9274840fd8660d0642d81f56b535c5b Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Wed, 27 Mar 2024 00:07:21 -0400 Subject: [PATCH 019/173] Lazy load statuses --- app/Filament/Resources/NodeResource.php | 6 ++-- app/Livewire/NodeSystemInformation.php | 30 ++++++++++++++++++ .../livewire/columns/version-column.blade.php | 31 +++++++++++++++++++ .../node-system-information.blade.php | 17 ++++++++++ 4 files changed, 80 insertions(+), 4 deletions(-) create mode 100644 app/Livewire/NodeSystemInformation.php create mode 100644 resources/views/livewire/columns/version-column.blade.php create mode 100644 resources/views/livewire/node-system-information.blade.php diff --git a/app/Filament/Resources/NodeResource.php b/app/Filament/Resources/NodeResource.php index 371858d18..0bbf9b40d 100644 --- a/app/Filament/Resources/NodeResource.php +++ b/app/Filament/Resources/NodeResource.php @@ -88,10 +88,8 @@ class NodeResource extends Resource ->hidden(), Tables\Columns\IconColumn::make('health') ->alignCenter() - ->state(fn (Node $node) => $node->systemInformation()['version'] ?? false) - ->tooltip(fn (Node $node) => $node->systemInformation()['version'] ?? $node->systemInformation()['exception'] ?? 'Not Connected') - ->trueIcon('heroicon-m-heart') - ->default(false), + ->state(fn (Node $node) => $node) + ->view('livewire.columns.version-column'), Tables\Columns\TextColumn::make('name') ->searchable(), Tables\Columns\TextColumn::make('fqdn') diff --git a/app/Livewire/NodeSystemInformation.php b/app/Livewire/NodeSystemInformation.php new file mode 100644 index 000000000..cefda7f72 --- /dev/null +++ b/app/Livewire/NodeSystemInformation.php @@ -0,0 +1,30 @@ + + +
+ HTML; + } +} diff --git a/resources/views/livewire/columns/version-column.blade.php b/resources/views/livewire/columns/version-column.blade.php new file mode 100644 index 000000000..758cfd7c2 --- /dev/null +++ b/resources/views/livewire/columns/version-column.blade.php @@ -0,0 +1,31 @@ +@php + use Filament\Tables\Columns\IconColumn\IconColumnSize; + + $node = $getState(); + $size = $getSize($state) ?? IconColumnSize::Large; + + $sizeClasses = match ($size) { + IconColumnSize::ExtraSmall, 'xs' => 'fi-ta-icon-item-size-xs h-3 w-3', + IconColumnSize::Small, 'sm' => 'fi-ta-icon-item-size-sm h-4 w-4', + IconColumnSize::Medium, 'md' => 'fi-ta-icon-item-size-md h-5 w-5', + IconColumnSize::Large, 'lg' => 'fi-ta-icon-item-size-lg h-6 w-6', + IconColumnSize::ExtraLarge, 'xl' => 'fi-ta-icon-item-size-xl h-7 w-7', + IconColumnSize::TwoExtraLarge, IconColumnSize::ExtraExtraLarge, '2xl' => 'fi-ta-icon-item-size-2xl h-8 w-8', + default => $size, + } +@endphp + +
merge($getExtraAttributes(), escape: false) + ->class([ + 'fi-ta-icon flex gap-1.5', + 'flex-wrap' => $canWrap(), + 'px-3 py-4' => ! $isInline(), + 'flex-col' => $isListWithLineBreaks(), + ]) + }} +> + @livewire('node-system-information', ['node' => $node, 'lazy' => true, 'sizeClasses' => $sizeClasses]) +
diff --git a/resources/views/livewire/node-system-information.blade.php b/resources/views/livewire/node-system-information.blade.php new file mode 100644 index 000000000..6c1523356 --- /dev/null +++ b/resources/views/livewire/node-system-information.blade.php @@ -0,0 +1,17 @@ +
+ @switch($node->systemInformation()['version'] ?? 'false') + @case('false') + true]) + /> + @break + @default + true]) + @style([\Filament\Support\get_color_css_variables('success', shades: [400, 500], alias: 'tables::columns.icon-column.item') => true]) + /> + @endswitch +
From 0925e141b46ed1e4eb5ce76265dff3c20027b4b4 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 28 Mar 2024 13:27:14 -0400 Subject: [PATCH 020/173] =?UTF-8?q?These=20don=E2=80=99t=20work?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Console/Commands/InfoCommand.php | 1 - config/trustedproxy.php | 28 ---------------------------- shell.nix | 19 ------------------- 3 files changed, 48 deletions(-) delete mode 100644 config/trustedproxy.php delete mode 100644 shell.nix diff --git a/app/Console/Commands/InfoCommand.php b/app/Console/Commands/InfoCommand.php index 865f408f0..a774c032b 100644 --- a/app/Console/Commands/InfoCommand.php +++ b/app/Console/Commands/InfoCommand.php @@ -44,7 +44,6 @@ class InfoCommand extends Command ['Session Driver', config('session.driver')], ['Filesystem Driver', config('filesystems.default')], ['Default Theme', config('themes.active')], - ['Proxies', config('trustedproxies.proxies')], ], 'compact'); $this->output->title('Database Configuration'); diff --git a/config/trustedproxy.php b/config/trustedproxy.php deleted file mode 100644 index 7e0166af8..000000000 --- a/config/trustedproxy.php +++ /dev/null @@ -1,28 +0,0 @@ -getClientIp() - * always gets the originating client IP, no matter - * how many proxies that client's request has - * subsequently passed through. - */ - 'proxies' => in_array(env('TRUSTED_PROXIES', []), ['*', '**']) ? - env('TRUSTED_PROXIES') : explode(',', env('TRUSTED_PROXIES') ?? ''), -]; diff --git a/shell.nix b/shell.nix deleted file mode 100644 index 6eee625ab..000000000 --- a/shell.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - composer ? null, - php81WithExtensions ? null, - pkgs ? import {}, -}: -with pkgs; - mkShell rec { - buildInputs = [ - alejandra - composer - nodejs_18 - nodePackages.yarn - php81WithExtensions - ]; - - shellHook = '' - PATH="$PATH:${pkgs.docker-compose}/libexec/docker/cli-plugins" - ''; - } From eb5c304f69f7bdaa5d9ac03b32c385ea5f937355 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 28 Mar 2024 13:29:24 -0400 Subject: [PATCH 021/173] Remove these mount usages --- .../Controllers/Admin/MountController.php | 152 --------- resources/views/admin/mounts/index.blade.php | 144 -------- resources/views/admin/mounts/view.blade.php | 308 ------------------ .../views/admin/servers/view/mounts.blade.php | 2 +- resources/views/layouts/admin.blade.php | 5 - routes/admin.php | 22 -- 6 files changed, 1 insertion(+), 632 deletions(-) delete mode 100644 app/Http/Controllers/Admin/MountController.php delete mode 100644 resources/views/admin/mounts/index.blade.php delete mode 100644 resources/views/admin/mounts/view.blade.php diff --git a/app/Http/Controllers/Admin/MountController.php b/app/Http/Controllers/Admin/MountController.php deleted file mode 100644 index bf832e77f..000000000 --- a/app/Http/Controllers/Admin/MountController.php +++ /dev/null @@ -1,152 +0,0 @@ - Mount::query()->withCount(['eggs', 'nodes'])->get(), - ]); - } - - /** - * Return the mount view page. - */ - public function view(string $id): View - { - return view('admin.mounts.view', [ - 'mount' => Mount::with(['eggs', 'nodes'])->findOrFail($id), - 'eggs' => Egg::all(), - ]); - } - - /** - * Handle request to create new mount. - * - * @throws \Throwable - */ - public function create(MountFormRequest $request): RedirectResponse - { - $model = (new Mount())->fill($request->validated()); - $model->forceFill(['uuid' => Uuid::uuid4()->toString()]); - - $model->saveOrFail(); - $mount = $model->fresh(); - - $this->alert->success('Mount was created successfully.')->flash(); - - return redirect()->route('admin.mounts.view', $mount->id); - } - - /** - * Handle request to update or delete location. - * - * @throws \Throwable - */ - public function update(MountFormRequest $request, Mount $mount): RedirectResponse - { - if ($request->input('action') === 'delete') { - return $this->delete($mount); - } - - $mount->forceFill($request->validated())->save(); - - $this->alert->success('Mount was updated successfully.')->flash(); - - return redirect()->route('admin.mounts.view', $mount->id); - } - - /** - * Delete a location from the system. - * - * @throws \Exception - */ - public function delete(Mount $mount): RedirectResponse - { - $mount->delete(); - - return redirect()->route('admin.mounts'); - } - - /** - * Adds eggs to the mount's many-to-many relation. - */ - public function addEggs(Request $request, Mount $mount): RedirectResponse - { - $validatedData = $request->validate([ - 'eggs' => 'required|exists:eggs,id', - ]); - - $eggs = $validatedData['eggs'] ?? []; - if (count($eggs) > 0) { - $mount->eggs()->attach($eggs); - } - - $this->alert->success('Mount was updated successfully.')->flash(); - - return redirect()->route('admin.mounts.view', $mount->id); - } - - /** - * Adds nodes to the mount's many-to-many relation. - */ - public function addNodes(Request $request, Mount $mount): RedirectResponse - { - $data = $request->validate(['nodes' => 'required|exists:nodes,id']); - - $nodes = $data['nodes'] ?? []; - if (count($nodes) > 0) { - $mount->nodes()->attach($nodes); - } - - $this->alert->success('Mount was updated successfully.')->flash(); - - return redirect()->route('admin.mounts.view', $mount->id); - } - - /** - * Deletes an egg from the mount's many-to-many relation. - */ - public function deleteEgg(Mount $mount, int $egg_id): Response - { - $mount->eggs()->detach($egg_id); - - return response('', 204); - } - - /** - * Deletes a node from the mount's many-to-many relation. - */ - public function deleteNode(Mount $mount, int $node_id): Response - { - $mount->nodes()->detach($node_id); - - return response('', 204); - } -} diff --git a/resources/views/admin/mounts/index.blade.php b/resources/views/admin/mounts/index.blade.php deleted file mode 100644 index a3b989243..000000000 --- a/resources/views/admin/mounts/index.blade.php +++ /dev/null @@ -1,144 +0,0 @@ - -@extends('layouts.admin') - -@section('title') - Mounts -@endsection - -@section('content-header') -

MountsConfigure and manage additional mount points for servers.

-
-@endsection - -@section('content') -
-
-
-
-

Mount List

- -
- -
-
- -
- - - - - - - - - - - - - @foreach ($mounts as $mount) - - - - - - - - - - @endforeach - -
IDNameSourceTargetEggsNodesServers
{{ $mount->id }}{{ $mount->name }}{{ $mount->source }}{{ $mount->target }}{{ $mount->eggs_count }}{{ $mount->nodes_count }}{{ $mount->servers_count }}
-
-
-
-
- - -@endsection diff --git a/resources/views/admin/mounts/view.blade.php b/resources/views/admin/mounts/view.blade.php deleted file mode 100644 index 520af4b90..000000000 --- a/resources/views/admin/mounts/view.blade.php +++ /dev/null @@ -1,308 +0,0 @@ - -@extends('layouts.admin') - -@section('title') - Mounts → View → {{ $mount->id }} -@endsection - -@section('content-header') -

{{ $mount->name }}{{ str_limit($mount->description, 75) }}

- -@endsection - -@section('content') -
-
-
-
-

Mount Details

-
- -
-
-
- - -
- -
- - -
- -
- - -
- -
-
- - -
- -
- - -
-
- -
-
- - -
-
- read_only) checked @endif> - -
- -
- read_only) checked @endif> - -
-
-
- -
- - -
-
- user_mountable) checked @endif> - -
- -
- user_mountable) checked @endif> - -
-
-
-
-
- - -
-
-
- -
-
-
-

Eggs

- -
- -
-
- -
- - - - - - - - @foreach ($mount->eggs as $egg) - - - - - - @endforeach -
IDName
{{ $egg->id }}{{ $egg->name }} - -
-
-
- -
-
-

Nodes

- -
- -
-
- -
- - - - - - - - - @foreach ($mount->nodes as $node) - - - - - - - @endforeach -
IDNameFQDN
{{ $node->id }}{{ $node->name }}{{ $node->fqdn }} - -
-
-
-
-
- - - - -@endsection - -@section('footer-scripts') - @parent - - -@endsection diff --git a/resources/views/admin/servers/view/mounts.blade.php b/resources/views/admin/servers/view/mounts.blade.php index 36ca98ddc..aa6e66414 100644 --- a/resources/views/admin/servers/view/mounts.blade.php +++ b/resources/views/admin/servers/view/mounts.blade.php @@ -38,7 +38,7 @@ @foreach ($mounts as $mount) {{ $mount->id }} - {{ $mount->name }} + {{ $mount->name }} {{ $mount->source }} {{ $mount->target }} diff --git a/resources/views/layouts/admin.blade.php b/resources/views/layouts/admin.blade.php index 12b62c35e..c37155bae 100644 --- a/resources/views/layouts/admin.blade.php +++ b/resources/views/layouts/admin.blade.php @@ -95,11 +95,6 @@ Eggs -
  • - - Mounts - -
  • OTHER
  • diff --git a/routes/admin.php b/routes/admin.php index f82188205..3786b876a 100644 --- a/routes/admin.php +++ b/routes/admin.php @@ -154,28 +154,6 @@ Route::prefix('nodes')->group(function () { Route::delete('/view/{node:id}/allocations', [Admin\NodesController::class, 'allocationRemoveMultiple'])->name('admin.nodes.view.allocation.removeMultiple'); }); -/* -|-------------------------------------------------------------------------- -| Mount Controller Routes -|-------------------------------------------------------------------------- -| -| Endpoint: /admin/mounts -| -*/ -Route::prefix('mounts')->group(function () { - Route::get('/', [Admin\MountController::class, 'index'])->name('admin.mounts'); - Route::get('/view/{mount:id}', [Admin\MountController::class, 'view'])->name('admin.mounts.view'); - - Route::post('/', [Admin\MountController::class, 'create']); - Route::post('/{mount:id}/eggs', [Admin\MountController::class, 'addEggs'])->name('admin.mounts.eggs'); - Route::post('/{mount:id}/nodes', [Admin\MountController::class, 'addNodes'])->name('admin.mounts.nodes'); - - Route::patch('/view/{mount:id}', [Admin\MountController::class, 'update']); - - Route::delete('/{mount:id}/eggs/{egg_id}', [Admin\MountController::class, 'deleteEgg']); - Route::delete('/{mount:id}/nodes/{node_id}', [Admin\MountController::class, 'deleteNode']); -}); - /* |-------------------------------------------------------------------------- | Egg Controller Routes From 3c43f3aa18b3b11952609bac6a5bd6c16f7ce886 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 28 Mar 2024 17:01:09 -0400 Subject: [PATCH 022/173] =?UTF-8?q?Don=E2=80=99t=20need=20this=20anymore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Requests/Admin/Node/NodeFormRequest.php | 6 +- app/Rules/Fqdn.php | 80 ------------------- 2 files changed, 1 insertion(+), 85 deletions(-) delete mode 100644 app/Rules/Fqdn.php diff --git a/app/Http/Requests/Admin/Node/NodeFormRequest.php b/app/Http/Requests/Admin/Node/NodeFormRequest.php index c55e2d1b0..9fc27e99b 100644 --- a/app/Http/Requests/Admin/Node/NodeFormRequest.php +++ b/app/Http/Requests/Admin/Node/NodeFormRequest.php @@ -2,7 +2,6 @@ namespace App\Http\Requests\Admin\Node; -use App\Rules\Fqdn; use App\Models\Node; use App\Http\Requests\Admin\AdminFormRequest; @@ -17,9 +16,6 @@ class NodeFormRequest extends AdminFormRequest return Node::getRulesForUpdate($this->route()->parameter('node')); } - $data = Node::getRules(); - $data['fqdn'][] = Fqdn::make('scheme'); - - return $data; + return Node::getRules(); } } diff --git a/app/Rules/Fqdn.php b/app/Rules/Fqdn.php deleted file mode 100644 index e6b0d874f..000000000 --- a/app/Rules/Fqdn.php +++ /dev/null @@ -1,80 +0,0 @@ -data = $data; - - return $this; - } - - /** - * Validates that the value provided resolves to an IP address. If a scheme is - * specified when this rule is created additional checks will be applied. - * - * @param string $attribute - * @param mixed $value - */ - public function passes($attribute, $value): bool - { - if (filter_var($value, FILTER_VALIDATE_IP)) { - // Check if the scheme is set to HTTPS. - // - // Unless someone owns their IP blocks and decides to pay who knows how much for a - // custom SSL cert, IPs will not be able to use HTTPS. This should prevent most - // home users from making this mistake and wondering why their node is not working. - if ($this->schemeField && Arr::get($this->data, $this->schemeField) === 'https') { - $this->message = 'The :attribute must not be an IP address when HTTPS is enabled.'; - - return false; - } - - return true; - } - - // Lookup A and AAAA DNS records for the FQDN. Note, this function will also resolve CNAMEs - // for us automatically, there is no need to manually resolve them here. - // - // The error suppression is intentional, see https://bugs.php.net/bug.php?id=73149 - $records = @dns_get_record($value, DNS_A + DNS_AAAA); - // If no records were returned fall back to trying to resolve the value using the hosts DNS - // resolution. This will not work for IPv6 which is why we prefer to use `dns_get_record` - // first. - if (!empty($records) || filter_var(gethostbyname($value), FILTER_VALIDATE_IP)) { - return true; - } - - $this->message = 'The :attribute could not be resolved to a valid IP address.'; - - return false; - } - - public function message(): string - { - return $this->message; - } - - /** - * Returns a new instance of the rule with a defined scheme set. - */ - public static function make(string $schemeField = null): self - { - return tap(new self(), function ($fqdn) use ($schemeField) { - $fqdn->schemeField = $schemeField; - }); - } -} From a93ebfd7bfe9c21c34142e36d2927ea4b0432861 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Fri, 29 Mar 2024 00:58:13 -0400 Subject: [PATCH 023/173] Add licensing --- .github/docker/default.conf | 24 +++++++++++++++++++ app/Extensions/Filesystem/S3Filesystem.php | 23 ++++++++++++++++++ .../themes/panel/js/admin/server/transfer.js | 23 ++++++++++++++++++ .../api/account/getTwoFactorTokenData.ts | 23 ++++++++++++++++++ .../scripts/api/server/files/chmodFiles.ts | 23 ++++++++++++++++++ .../api/server/files/getFileUploadUrl.ts | 23 ++++++++++++++++++ resources/scripts/components/history.ts | 23 ++++++++++++++++++ .../schedules/ScheduleCheatsheetCards.tsx | 23 ++++++++++++++++++ 8 files changed, 185 insertions(+) diff --git a/.github/docker/default.conf b/.github/docker/default.conf index d4dbc70dc..a6bd58d72 100644 --- a/.github/docker/default.conf +++ b/.github/docker/default.conf @@ -4,6 +4,30 @@ # If using CentOS this file should be placed in: # /etc/nginx/conf.d/ # + +# The MIT License (MIT) +# +# Pterodactyl® +# Copyright © Dane Everitt and contributors +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + server { listen 80; server_name _; diff --git a/app/Extensions/Filesystem/S3Filesystem.php b/app/Extensions/Filesystem/S3Filesystem.php index 6535dc6f3..6ce793b99 100644 --- a/app/Extensions/Filesystem/S3Filesystem.php +++ b/app/Extensions/Filesystem/S3Filesystem.php @@ -1,5 +1,28 @@ and contributors + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. */ + namespace App\Extensions\Filesystem; use Aws\S3\S3ClientInterface; diff --git a/public/themes/panel/js/admin/server/transfer.js b/public/themes/panel/js/admin/server/transfer.js index 43cfa0a51..51e48721a 100644 --- a/public/themes/panel/js/admin/server/transfer.js +++ b/public/themes/panel/js/admin/server/transfer.js @@ -1,3 +1,26 @@ +/* The MIT License (MIT) + + Pterodactyl® + Copyright © Dane Everitt and contributors + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. */ + $(document).ready(function () { $('#pNodeId').select2({ placeholder: 'Select a Node', diff --git a/resources/scripts/api/account/getTwoFactorTokenData.ts b/resources/scripts/api/account/getTwoFactorTokenData.ts index b3669d2d6..11d622aff 100644 --- a/resources/scripts/api/account/getTwoFactorTokenData.ts +++ b/resources/scripts/api/account/getTwoFactorTokenData.ts @@ -1,3 +1,26 @@ +/* The MIT License (MIT) + + Pterodactyl® + Copyright © Dane Everitt and contributors + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. */ + import http from '@/api/http'; export interface TwoFactorTokenData { diff --git a/resources/scripts/api/server/files/chmodFiles.ts b/resources/scripts/api/server/files/chmodFiles.ts index 8bafd6d6e..35dc3f174 100644 --- a/resources/scripts/api/server/files/chmodFiles.ts +++ b/resources/scripts/api/server/files/chmodFiles.ts @@ -1,3 +1,26 @@ +/* The MIT License (MIT) + + Pterodactyl® + Copyright © Dane Everitt and contributors + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. */ + import http from '@/api/http'; interface Data { diff --git a/resources/scripts/api/server/files/getFileUploadUrl.ts b/resources/scripts/api/server/files/getFileUploadUrl.ts index 690e8587c..161f35c26 100644 --- a/resources/scripts/api/server/files/getFileUploadUrl.ts +++ b/resources/scripts/api/server/files/getFileUploadUrl.ts @@ -1,3 +1,26 @@ +/* The MIT License (MIT) + + Pterodactyl® + Copyright © Dane Everitt and contributors + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. */ + import http from '@/api/http'; export default (uuid: string): Promise => { diff --git a/resources/scripts/components/history.ts b/resources/scripts/components/history.ts index 5f339d963..8ed5cd359 100644 --- a/resources/scripts/components/history.ts +++ b/resources/scripts/components/history.ts @@ -1,3 +1,26 @@ +/* The MIT License (MIT) + + Pterodactyl® + Copyright © Dane Everitt and contributors + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. */ + import { createBrowserHistory } from 'history'; export const history = createBrowserHistory({ basename: '/' }); diff --git a/resources/scripts/components/server/schedules/ScheduleCheatsheetCards.tsx b/resources/scripts/components/server/schedules/ScheduleCheatsheetCards.tsx index 0eeed1527..2f5803753 100644 --- a/resources/scripts/components/server/schedules/ScheduleCheatsheetCards.tsx +++ b/resources/scripts/components/server/schedules/ScheduleCheatsheetCards.tsx @@ -1,3 +1,26 @@ +/* The MIT License (MIT) + + Pterodactyl® + Copyright © Dane Everitt and contributors + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. */ + import React from 'react'; import tw from 'twin.macro'; From a2b03895d706d8162ad680212857f1f4b3918705 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sat, 30 Mar 2024 02:15:56 -0400 Subject: [PATCH 024/173] Switch icon set --- app/Filament/Resources/DatabaseResource.php | 2 +- app/Filament/Resources/EggResource.php | 4 +- app/Filament/Resources/MountResource.php | 2 +- app/Filament/Resources/NodeResource.php | 16 ++--- .../NodeResource/Pages/CreateNode.php | 8 +-- app/Filament/Resources/ServerResource.php | 2 +- app/Filament/Resources/UserResource.php | 8 +-- app/Livewire/NodeSystemInformation.php | 2 +- composer.json | 1 + composer.lock | 64 ++++++++++++++++++- .../node-system-information.blade.php | 4 +- 11 files changed, 88 insertions(+), 25 deletions(-) diff --git a/app/Filament/Resources/DatabaseResource.php b/app/Filament/Resources/DatabaseResource.php index 55b8d60ba..d140fb98a 100644 --- a/app/Filament/Resources/DatabaseResource.php +++ b/app/Filament/Resources/DatabaseResource.php @@ -17,7 +17,7 @@ class DatabaseResource extends Resource { protected static ?string $model = Database::class; - protected static ?string $navigationIcon = 'heroicon-o-circle-stack'; + protected static ?string $navigationIcon = 'tabler-database'; public static function form(Form $form): Form { diff --git a/app/Filament/Resources/EggResource.php b/app/Filament/Resources/EggResource.php index 3d8d0d43f..93778453a 100644 --- a/app/Filament/Resources/EggResource.php +++ b/app/Filament/Resources/EggResource.php @@ -14,7 +14,7 @@ class EggResource extends Resource { protected static ?string $model = Egg::class; - protected static ?string $navigationIcon = 'heroicon-o-ellipsis-horizontal-circle'; + protected static ?string $navigationIcon = 'tabler-eggs'; protected static ?string $recordTitleAttribute = 'name'; @@ -146,7 +146,7 @@ class EggResource extends Resource ->wrap(), Tables\Columns\TextColumn::make('servers_count') ->counts('servers') - ->icon('heroicon-m-server-stack') + ->icon('tabler-server') ->label('Servers'), Tables\Columns\TextColumn::make('script_container') ->searchable() diff --git a/app/Filament/Resources/MountResource.php b/app/Filament/Resources/MountResource.php index db40a2f52..4f64f41ac 100644 --- a/app/Filament/Resources/MountResource.php +++ b/app/Filament/Resources/MountResource.php @@ -17,7 +17,7 @@ class MountResource extends Resource { protected static ?string $model = Mount::class; - protected static ?string $navigationIcon = 'heroicon-o-link'; + protected static ?string $navigationIcon = 'tabler-layers-linked'; public static function form(Form $form): Form { diff --git a/app/Filament/Resources/NodeResource.php b/app/Filament/Resources/NodeResource.php index 0bbf9b40d..4f10d5c03 100644 --- a/app/Filament/Resources/NodeResource.php +++ b/app/Filament/Resources/NodeResource.php @@ -14,7 +14,7 @@ class NodeResource extends Resource { protected static ?string $model = Node::class; - protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; + protected static ?string $navigationIcon = 'tabler-server-2'; protected static ?string $recordTitleAttribute = 'name'; @@ -72,8 +72,8 @@ class NodeResource extends Resource false => 'danger', ]) ->icons([ - true => 'heroicon-m-eye', - false => 'heroicon-m-lock-closed', + true => 'tabler-eye-check', + false => 'tabler-eye-cancel', ]), ]); } @@ -103,17 +103,17 @@ class NodeResource extends Resource ->sortable(), Tables\Columns\IconColumn::make('scheme') ->label('SSL') - ->trueIcon('heroicon-m-lock-closed') - ->falseIcon('heroicon-m-lock-open') + ->trueIcon('tabler-lock') + ->falseIcon('tabler-lock-open-off') ->state(fn (Node $node) => $node->scheme === 'https'), Tables\Columns\IconColumn::make('public') - ->trueIcon('heroicon-m-eye') - ->falseIcon('heroicon-m-eye-slash') + ->trueIcon('tabler-eye-check') + ->falseIcon('tabler-eye-cancel') ->sortable(), Tables\Columns\TextColumn::make('servers_count') ->counts('servers') ->label('Servers') - ->icon('heroicon-m-server-stack'), + ->icon('tabler-server'), Tables\Columns\TextColumn::make('created_at') ->dateTime() ->sortable() diff --git a/app/Filament/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Resources/NodeResource/Pages/CreateNode.php index 603385792..f2edbb6f9 100644 --- a/app/Filament/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Resources/NodeResource/Pages/CreateNode.php @@ -59,7 +59,7 @@ class CreateNode extends CreateRecord ->inline() ->helperText(function (Forms\Get $get) { if (request()->isSecure()) { - return 'Your Panel is using a secure (https) connection, therefore your Daemon has to as well.'; + return 'Your Panel is using a secure (SSL/TLS) connection, therefore your Daemon has to as well.'; } if (is_ip($get('fqdn'))) { @@ -79,15 +79,15 @@ class CreateNode extends CreateRecord }) ->options([ 'http' => 'HTTP', - 'https' => 'SSL (HTTPS)', + 'https' => 'HTTPS (SSL)', ]) ->colors([ 'http' => 'warning', 'https' => 'success', ]) ->icons([ - 'http' => 'heroicon-m-lock-open', - 'https' => 'heroicon-m-lock-closed', + 'http' => 'tabler-lock-open-off', + 'https' => 'tabler-lock', ]) ->default('http'), Forms\Components\TextInput::make('name') diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 62bd7d93f..d367d07f1 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -18,7 +18,7 @@ class ServerResource extends Resource { protected static ?string $model = Server::class; - protected static ?string $navigationIcon = 'heroicon-o-server-stack'; + protected static ?string $navigationIcon = 'tabler-server'; protected static ?string $recordTitleAttribute = 'name'; diff --git a/app/Filament/Resources/UserResource.php b/app/Filament/Resources/UserResource.php index c1418ef32..8f407adcc 100644 --- a/app/Filament/Resources/UserResource.php +++ b/app/Filament/Resources/UserResource.php @@ -17,7 +17,7 @@ class UserResource extends Resource { protected static ?string $model = User::class; - protected static ?string $navigationIcon = 'heroicon-o-user-group'; + protected static ?string $navigationIcon = 'tabler-users'; protected static ?string $recordTitleAttribute = 'username'; @@ -57,15 +57,15 @@ class UserResource extends Resource ->searchable(), Tables\Columns\IconColumn::make('root_admin')->label('Admin')->boolean()->sortable(), Tables\Columns\IconColumn::make('use_totp')->label('2FA') - ->icon(fn (User $user) => $user->use_totp ? 'heroicon-o-lock-closed' : 'heroicon-o-lock-open') + ->icon(fn (User $user) => $user->use_totp ? 'tabler-lock' : 'tabler-lock-open-off') ->boolean()->sortable(), Tables\Columns\TextColumn::make('servers_count') ->counts('servers') - ->icon('heroicon-m-server-stack') + ->icon('tabler-server') ->label('Servers Owned'), Tables\Columns\TextColumn::make('subusers_count') ->counts('subusers') - ->icon('heroicon-m-users') + ->icon('tabler-users') // ->formatStateUsing(fn (string $state, $record): string => (string) ($record->servers_count + $record->subusers_count)) ->label('Subusers'), Tables\Columns\TextColumn::make('created_at') diff --git a/app/Livewire/NodeSystemInformation.php b/app/Livewire/NodeSystemInformation.php index cefda7f72..b29190251 100644 --- a/app/Livewire/NodeSystemInformation.php +++ b/app/Livewire/NodeSystemInformation.php @@ -20,7 +20,7 @@ class NodeSystemInformation extends Component return <<<'HTML'
    diff --git a/composer.json b/composer.json index 2feb15b32..4fbc39fd6 100644 --- a/composer.json +++ b/composer.json @@ -28,6 +28,7 @@ "pragmarx/google2fa": "~8.0.0", "predis/predis": "~2.1.1", "prologue/alerts": "^1.2", + "ryangjchandler/blade-tabler-icons": "^2.3", "s1lentium/iptools": "~1.2.0", "spatie/laravel-fractal": "^6.1", "spatie/laravel-query-builder": "^5.8", diff --git a/composer.lock b/composer.lock index 6a2602309..9adbea1aa 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "e4573f890e580181b7d14bdb086f7c15", + "content-hash": "27aa42f361104f415f248548d4667e43", "packages": [ { "name": "anourvalar/eloquent-serialize", @@ -6175,6 +6175,68 @@ ], "time": "2024-02-26T18:08:49+00:00" }, + { + "name": "ryangjchandler/blade-tabler-icons", + "version": "v2.3.0", + "source": { + "type": "git", + "url": "https://github.com/ryangjchandler/blade-tabler-icons.git", + "reference": "cd359f5d3b406a982dae1aaaf121d84067576a2e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ryangjchandler/blade-tabler-icons/zipball/cd359f5d3b406a982dae1aaaf121d84067576a2e", + "reference": "cd359f5d3b406a982dae1aaaf121d84067576a2e", + "shasum": "" + }, + "require": { + "blade-ui-kit/blade-icons": "^1.5", + "illuminate/support": "^10.0 || ^11.0", + "php": "^8.1" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.14", + "orchestra/testbench": "^8.0 || ^9.0", + "phpunit/phpunit": "^9.5.10 || ^10.5" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "RyanChandler\\TablerIcons\\BladeTablerIconsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "RyanChandler\\TablerIcons\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ryan Chandler", + "email": "support@ryangjchandler.co.uk", + "homepage": "https://ryangjchandler.co.uk", + "role": "Developer" + } + ], + "description": "A package to easily make use of Tabler icons in your Laravel Blade views.", + "homepage": "https://github.com/ryangjchandler/blade-tabler-icons", + "keywords": [ + "blade", + "laravel", + "tabler" + ], + "support": { + "issues": "https://github.com/ryangjchandler/blade-tabler-icons/issues", + "source": "https://github.com/ryangjchandler/blade-tabler-icons/tree/v2.3.0" + }, + "time": "2024-03-12T23:54:24+00:00" + }, { "name": "s1lentium/iptools", "version": "v1.2.0", diff --git a/resources/views/livewire/node-system-information.blade.php b/resources/views/livewire/node-system-information.blade.php index 6c1523356..77436db06 100644 --- a/resources/views/livewire/node-system-information.blade.php +++ b/resources/views/livewire/node-system-information.blade.php @@ -2,14 +2,14 @@ @switch($node->systemInformation()['version'] ?? 'false') @case('false') true]) /> @break @default true]) @style([\Filament\Support\get_color_css_variables('success', shades: [400, 500], alias: 'tables::columns.icon-column.item') => true]) /> From 71a27862bdbd279374a4cc005b9b090a459be55c Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sat, 30 Mar 2024 02:16:02 -0400 Subject: [PATCH 025/173] =?UTF-8?q?This=20isn=E2=80=99t=20used?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/egg_features/eula.php | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 config/egg_features/eula.php diff --git a/config/egg_features/eula.php b/config/egg_features/eula.php deleted file mode 100644 index e5fb8727b..000000000 --- a/config/egg_features/eula.php +++ /dev/null @@ -1,16 +0,0 @@ - Date: Sat, 30 Mar 2024 02:29:57 -0400 Subject: [PATCH 026/173] Prevent root from getting rid of last root --- app/Filament/Resources/UserResource.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Filament/Resources/UserResource.php b/app/Filament/Resources/UserResource.php index 8f407adcc..90c842791 100644 --- a/app/Filament/Resources/UserResource.php +++ b/app/Filament/Resources/UserResource.php @@ -32,7 +32,8 @@ class UserResource extends Resource Forms\Components\TextInput::make('password')->password()->columnSpanFull(), Forms\Components\Select::make('language')->required()->default('en') ->options(fn (User $user) => $user->getAvailableLanguages()), - Forms\Components\Toggle::make('root_admin')->required()->default(0), + Forms\Components\Toggle::make('root_admin')->required()->default(0) + ->disabled(fn () => User::where('root_admin', true)->count() <= 1), ]); } From ebdca47fbca0432d2c8dc86582d11cf2a21ee7c1 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sat, 30 Mar 2024 02:30:29 -0400 Subject: [PATCH 027/173] Go nuts with icons --- app/Filament/Resources/ServerResource.php | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index d367d07f1..817efb1cd 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -18,7 +18,7 @@ class ServerResource extends Resource { protected static ?string $model = Server::class; - protected static ?string $navigationIcon = 'tabler-server'; + protected static ?string $navigationIcon = 'tabler-container'; protected static ?string $recordTitleAttribute = 'name'; @@ -106,24 +106,30 @@ class ServerResource extends Resource ->label('UUID') ->searchable(), Tables\Columns\TextColumn::make('name') + ->icon('tabler-container') + ->searchable() ->sortable(), - Tables\Columns\TextColumn::make('node.id') - ->url(fn ($state): string => route('filament.admin.resources.nodes.edit', ['record' => $state])) + Tables\Columns\TextColumn::make('node.name') + ->icon('tabler-server-2') + ->url(fn (Server $server): string => route('filament.admin.resources.nodes.edit', ['record' => $server->node])) ->sortable(), - Tables\Columns\TextColumn::make('name') - ->searchable(), Tables\Columns\TextColumn::make('user.username') + ->icon('tabler-user') + ->url(fn (Server $server): string => route('filament.admin.resources.users.edit', ['record' => $server->user])) ->sortable(), Tables\Columns\TextColumn::make('allocation.address') + ->icon('tabler-network') ->numeric() ->sortable(), Tables\Columns\TextColumn::make('egg.name') - ->numeric() + ->icon('tabler-egg') + ->url(fn (Server $server): string => route('filament.admin.resources.eggs.edit', ['record' => $server->egg])) ->sortable(), Tables\Columns\TextColumn::make('image')->hidden(), Tables\Columns\TextColumn::make('backups_count') ->counts('backups') ->label('Backups') + ->icon('tabler-file-download') ->numeric() ->sortable(), Tables\Columns\TextColumn::make('created_at') From d32d0692f85f723544fae8fe7700a3f66a185113 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sat, 30 Mar 2024 20:31:36 -0400 Subject: [PATCH 028/173] Icons --- app/Filament/Resources/NodeResource.php | 6 +++++- app/Filament/Resources/ServerResource.php | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/Filament/Resources/NodeResource.php b/app/Filament/Resources/NodeResource.php index 4f10d5c03..51dcbbbe7 100644 --- a/app/Filament/Resources/NodeResource.php +++ b/app/Filament/Resources/NodeResource.php @@ -91,14 +91,18 @@ class NodeResource extends Resource ->state(fn (Node $node) => $node) ->view('livewire.columns.version-column'), Tables\Columns\TextColumn::make('name') + ->icon('tabler-server-2') ->searchable(), Tables\Columns\TextColumn::make('fqdn') ->label('Address') + ->icon('tabler-network') ->searchable(), Tables\Columns\TextColumn::make('memory') + ->icon('tabler-device-desktop-analytics') ->numeric() ->sortable(), Tables\Columns\TextColumn::make('disk') + ->icon('tabler-file') ->numeric() ->sortable(), Tables\Columns\IconColumn::make('scheme') @@ -113,7 +117,7 @@ class NodeResource extends Resource Tables\Columns\TextColumn::make('servers_count') ->counts('servers') ->label('Servers') - ->icon('tabler-server'), + ->icon('tabler-brand-docker'), Tables\Columns\TextColumn::make('created_at') ->dateTime() ->sortable() diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 817efb1cd..b99d4fbc6 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -18,7 +18,7 @@ class ServerResource extends Resource { protected static ?string $model = Server::class; - protected static ?string $navigationIcon = 'tabler-container'; + protected static ?string $navigationIcon = 'tabler-brand-docker'; protected static ?string $recordTitleAttribute = 'name'; @@ -106,7 +106,7 @@ class ServerResource extends Resource ->label('UUID') ->searchable(), Tables\Columns\TextColumn::make('name') - ->icon('tabler-container') + ->icon('tabler-brand-docker') ->searchable() ->sortable(), Tables\Columns\TextColumn::make('node.name') From db9b3e9b6740ebf9d0ae14d7c39a7edac5792b43 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sat, 30 Mar 2024 20:32:20 -0400 Subject: [PATCH 029/173] Set the name to the first part of the domain --- app/Filament/Resources/NodeResource/Pages/CreateNode.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/Filament/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Resources/NodeResource/Pages/CreateNode.php index f2edbb6f9..b0edc953d 100644 --- a/app/Filament/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Resources/NodeResource/Pages/CreateNode.php @@ -38,7 +38,9 @@ class CreateNode extends CreateRecord }) ->helperText(fn ($state) => is_ip($state) ? 'You can also enter in the domain name instead!' : 'You can also enter the IP address instead!') ->afterStateUpdated(function (Forms\Set $set, ?string $state) { - $set('name', $state); + [$subdomain] = str($state)->explode('.', 2); + + $set('name', $subdomain); }) ->maxLength(191), From e276a07f1b4f78dd30637a13378809d701629ec0 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sat, 30 Mar 2024 20:32:48 -0400 Subject: [PATCH 030/173] Hide this for now --- app/Filament/Resources/NodeResource/Pages/CreateNode.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/Filament/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Resources/NodeResource/Pages/CreateNode.php index b0edc953d..a58e8a485 100644 --- a/app/Filament/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Resources/NodeResource/Pages/CreateNode.php @@ -98,7 +98,10 @@ class CreateNode extends CreateRecord ->regex('/[a-zA-Z0-9_\.\- ]+/') ->helperText('Character limits: [a-zA-Z0-9_.-] and [Space]') ->maxLength(100), - Forms\Components\Textarea::make('description')->columnSpanFull()->rows(5), + Forms\Components\Textarea::make('description') + ->hidden() + ->columnSpanFull() + ->rows(5), ]); } } From 6e4f3f7191b4a82749538a2144f7b25d6dbae8a2 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 31 Mar 2024 00:11:56 -0400 Subject: [PATCH 031/173] Set better default --- app/Filament/Resources/NodeResource/Pages/CreateNode.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Filament/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Resources/NodeResource/Pages/CreateNode.php index a58e8a485..3da69aca1 100644 --- a/app/Filament/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Resources/NodeResource/Pages/CreateNode.php @@ -91,7 +91,7 @@ class CreateNode extends CreateRecord 'http' => 'tabler-lock-open-off', 'https' => 'tabler-lock', ]) - ->default('http'), + ->default(fn () => request()->isSecure() ? 'https' : 'http'), Forms\Components\TextInput::make('name') ->required() ->columnSpanFull() From f5a0a0f8bad15752741ec793eab7bd10f07906c5 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 31 Mar 2024 00:12:25 -0400 Subject: [PATCH 032/173] Better helper text --- app/Filament/Resources/NodeResource/Pages/CreateNode.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Filament/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Resources/NodeResource/Pages/CreateNode.php index 3da69aca1..677a9940b 100644 --- a/app/Filament/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Resources/NodeResource/Pages/CreateNode.php @@ -96,7 +96,7 @@ class CreateNode extends CreateRecord ->required() ->columnSpanFull() ->regex('/[a-zA-Z0-9_\.\- ]+/') - ->helperText('Character limits: [a-zA-Z0-9_.-] and [Space]') + ->helperText('This is just a display name and can be changed later. Character limits: a-Z, 0-9, and [.-_ ]') ->maxLength(100), Forms\Components\Textarea::make('description') ->hidden() From eda3959748c4167ddbeafb92d41d9847c18d58ec Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 31 Mar 2024 00:13:17 -0400 Subject: [PATCH 033/173] Too slow for now --- app/Filament/Resources/NodeResource/Pages/CreateNode.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/Filament/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Resources/NodeResource/Pages/CreateNode.php index 677a9940b..9ffa0aeee 100644 --- a/app/Filament/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Resources/NodeResource/Pages/CreateNode.php @@ -30,9 +30,8 @@ class CreateNode extends CreateRecord return 'You currently have a secure connection to the panel.'; } - if (!is_ip($state) && !empty($state) && !checkdnsrr("$state.", 'A')) { - return 'Your hostname does not appear to have a valid A record.'; - } +// if (!is_ip($state) && !empty($state) && !checkdnsrr("$state.", 'A')) { +// return 'Your hostname does not appear to have a valid A record.'; return ''; }) From dc794c64ce87541d0d640f74bb3aeb1ecc4d953c Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 31 Mar 2024 00:14:15 -0400 Subject: [PATCH 034/173] =?UTF-8?q?This=20is=20supposed=20to=20be=20sent,?= =?UTF-8?q?=20but=20isn=E2=80=99t=20because=20it=E2=80=99s=20disabled,=20e?= =?UTF-8?q?ven=20though=20it=E2=80=99s=20dehydrated?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NodeResource/Pages/CreateNode.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/app/Filament/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Resources/NodeResource/Pages/CreateNode.php index 9ffa0aeee..dd06b73be 100644 --- a/app/Filament/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Resources/NodeResource/Pages/CreateNode.php @@ -69,15 +69,15 @@ class CreateNode extends CreateRecord return ''; }) - ->disabled(function (Forms\Get $get, Forms\Set $set) { - if (request()->isSecure()) { - $set('scheme', 'https'); - - return true; - } - - return false; - }) +// ->disabled(function (Forms\Get $get, Forms\Set $set) { +// if (request()->isSecure()) { +// $set('scheme', 'https'); +// +// return true; +// } +// +// return false; +// }) ->options([ 'http' => 'HTTP', 'https' => 'HTTPS (SSL)', From 57649d1c0879d86b680147e757708e34f334e124 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 31 Mar 2024 00:14:48 -0400 Subject: [PATCH 035/173] Show warning to user --- .../NodeResource/Pages/CreateNode.php | 49 ++++++++++++++++++- 1 file changed, 47 insertions(+), 2 deletions(-) diff --git a/app/Filament/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Resources/NodeResource/Pages/CreateNode.php index dd06b73be..bcd0eb28b 100644 --- a/app/Filament/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Resources/NodeResource/Pages/CreateNode.php @@ -3,6 +3,8 @@ namespace App\Filament\Resources\NodeResource\Pages; use App\Filament\Resources\NodeResource; +use App\Models\Node; +use Filament\Actions\Action; use Filament\Forms; use Filament\Notifications\Notification; use Filament\Resources\Pages\CreateRecord; @@ -12,9 +14,12 @@ class CreateNode extends CreateRecord { protected static string $resource = NodeResource::class; + private $forceReloadToggle = false; + public function form(Forms\Form $form): Forms\Form { return $form + ->debounce(0) ->columns(4) ->schema([ Forms\Components\TextInput::make('fqdn') @@ -32,14 +37,27 @@ class CreateNode extends CreateRecord // if (!is_ip($state) && !empty($state) && !checkdnsrr("$state.", 'A')) { // return 'Your hostname does not appear to have a valid A record.'; +// } return ''; }) ->helperText(fn ($state) => is_ip($state) ? 'You can also enter in the domain name instead!' : 'You can also enter the IP address instead!') ->afterStateUpdated(function (Forms\Set $set, ?string $state) { - [$subdomain] = str($state)->explode('.', 2); - $set('name', $subdomain); + $set('isInsecureIp', is_ip($state) && request()->isSecure()); + + $this->forceReloadToggle = !$this->forceReloadToggle; + + if (is_ip($state)) { + $set('name', ''); + + return; + } + + [$subdomain] = str($state)->explode('.', 2); + if (!is_numeric($subdomain)) { + $set('name', $subdomain); + } }) ->maxLength(191), @@ -101,6 +119,33 @@ class CreateNode extends CreateRecord ->hidden() ->columnSpanFull() ->rows(5), + Forms\Components\Hidden::make('skipValidation')->default(true), + Forms\Components\Hidden::make('isInsecureIp')->default(false), ]); } + + protected function getCreateFormAction(): Action + { + $label = 'Create'; + + if ($this->data['isInsecureIp']) { + return Action::make('ip-ssl') + ->label($label) + ->requiresConfirmation() + ->modalIconColor('danger') + ->modalHeading('Using an IP Address with (SSL) Panel') + ->modalDescription(' + In order for your Panel to connect to your Node, + you must get an SSL certificate for specifically your IP Address. + This is very rare and extremely difficult to accomplish. + Are you absolutely sure you want to continue? + ') + ->modalSubmitAction(false) + ->extraModalFooterActions([ + Action::make('create')->action(fn () => $this->create())->color('danger'), + ]); + } + + return parent::getCreateFormAction()->label($label); + } } From a8b3e2bfa4fe6be2482fb1ed743270761486dd34 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 31 Mar 2024 01:06:49 -0400 Subject: [PATCH 036/173] Just prevent the user altogether --- .../NodeResource/Pages/CreateNode.php | 61 +++---------------- 1 file changed, 9 insertions(+), 52 deletions(-) diff --git a/app/Filament/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Resources/NodeResource/Pages/CreateNode.php index bcd0eb28b..5c374a2b8 100644 --- a/app/Filament/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Resources/NodeResource/Pages/CreateNode.php @@ -14,12 +14,11 @@ class CreateNode extends CreateRecord { protected static string $resource = NodeResource::class; - private $forceReloadToggle = false; + protected static bool $canCreateAnother = false; public function form(Forms\Form $form): Forms\Form { return $form - ->debounce(0) ->columns(4) ->schema([ Forms\Components\TextInput::make('fqdn') @@ -27,33 +26,26 @@ class CreateNode extends CreateRecord ->required() ->autofocus() ->live(debounce: 500) + ->rule('prohibited', fn ($state) => is_ip($state) && request()->isSecure()) ->label(fn ($state) => is_ip($state) ? 'IP Address' : 'Domain Name') ->placeholder(fn ($state) => is_ip($state) ? '192.168.1.1' : 'node.example.com') + ->helperText(fn ($state) => is_ip($state) && request()->isSecure() ? ' + Your panel is currently secured via an SSL certificate and that means your nodes require one too. + You must use a domain name, because you cannot get SSL certificates for IP Addresses' + : '') ->hintColor('danger') ->hint(function ($state) { if (is_ip($state) && request()->isSecure()) { - return 'You currently have a secure connection to the panel.'; + return 'You cannot connect to an IP Address over SSL'; } // if (!is_ip($state) && !empty($state) && !checkdnsrr("$state.", 'A')) { -// return 'Your hostname does not appear to have a valid A record.'; +// return 'Your hostname does not have a valid A record'; // } return ''; }) - ->helperText(fn ($state) => is_ip($state) ? 'You can also enter in the domain name instead!' : 'You can also enter the IP address instead!') ->afterStateUpdated(function (Forms\Set $set, ?string $state) { - - $set('isInsecureIp', is_ip($state) && request()->isSecure()); - - $this->forceReloadToggle = !$this->forceReloadToggle; - - if (is_ip($state)) { - $set('name', ''); - - return; - } - [$subdomain] = str($state)->explode('.', 2); if (!is_numeric($subdomain)) { $set('name', $subdomain); @@ -74,7 +66,6 @@ class CreateNode extends CreateRecord Forms\Components\ToggleButtons::make('scheme') ->label('Communicate over SSL') ->required() - ->dehydrated() ->inline() ->helperText(function (Forms\Get $get) { if (request()->isSecure()) { @@ -87,15 +78,7 @@ class CreateNode extends CreateRecord return ''; }) -// ->disabled(function (Forms\Get $get, Forms\Set $set) { -// if (request()->isSecure()) { -// $set('scheme', 'https'); -// -// return true; -// } -// -// return false; -// }) + ->disableOptionWhen(fn (string $value): bool => $value === 'http' && request()->isSecure()) ->options([ 'http' => 'HTTP', 'https' => 'HTTPS (SSL)', @@ -120,32 +103,6 @@ class CreateNode extends CreateRecord ->columnSpanFull() ->rows(5), Forms\Components\Hidden::make('skipValidation')->default(true), - Forms\Components\Hidden::make('isInsecureIp')->default(false), ]); } - - protected function getCreateFormAction(): Action - { - $label = 'Create'; - - if ($this->data['isInsecureIp']) { - return Action::make('ip-ssl') - ->label($label) - ->requiresConfirmation() - ->modalIconColor('danger') - ->modalHeading('Using an IP Address with (SSL) Panel') - ->modalDescription(' - In order for your Panel to connect to your Node, - you must get an SSL certificate for specifically your IP Address. - This is very rare and extremely difficult to accomplish. - Are you absolutely sure you want to continue? - ') - ->modalSubmitAction(false) - ->extraModalFooterActions([ - Action::make('create')->action(fn () => $this->create())->color('danger'), - ]); - } - - return parent::getCreateFormAction()->label($label); - } } From 400e4d783bdf1a0badbff1823c11af1bed905c4d Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 31 Mar 2024 01:07:03 -0400 Subject: [PATCH 037/173] Redirect them directly to the config --- app/Filament/Resources/NodeResource/Pages/CreateNode.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/Filament/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Resources/NodeResource/Pages/CreateNode.php index 5c374a2b8..1a7f2e3be 100644 --- a/app/Filament/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Resources/NodeResource/Pages/CreateNode.php @@ -105,4 +105,11 @@ class CreateNode extends CreateRecord Forms\Components\Hidden::make('skipValidation')->default(true), ]); } + + protected function getRedirectUrlParameters(): array + { + return [ + 'step' => 'configuration', + ]; + } } From 766c6c08f48b0d651215e38a4e993c4ccc4446eb Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 31 Mar 2024 01:39:24 -0400 Subject: [PATCH 038/173] Easy to copy and paste --- .../Resources/NodeResource/Pages/EditNode.php | 24 +++++++- composer.json | 1 + composer.lock | 56 ++++++++++++++++++- 3 files changed, 79 insertions(+), 2 deletions(-) diff --git a/app/Filament/Resources/NodeResource/Pages/EditNode.php b/app/Filament/Resources/NodeResource/Pages/EditNode.php index 7be05ce3c..e508f7c30 100644 --- a/app/Filament/Resources/NodeResource/Pages/EditNode.php +++ b/app/Filament/Resources/NodeResource/Pages/EditNode.php @@ -3,10 +3,13 @@ namespace App\Filament\Resources\NodeResource\Pages; use App\Filament\Resources\NodeResource; +use App\Models\Node; use Filament\Actions; use Filament\Forms; use Filament\Forms\Components\Wizard; use Filament\Resources\Pages\EditRecord; +use Illuminate\Support\HtmlString; +use Webbingbrasil\FilamentCopyActions\Forms\Actions\CopyAction; class EditNode extends EditRecord { @@ -23,7 +26,17 @@ class EditNode extends EditRecord Forms\Components\Wizard\Step::make('Configuration') ->description('') ->schema([ - + Forms\Components\Placeholder::make('instructions') + ->columnSpanFull() + ->content(new HtmlString(' + This file should be placed in your daemon\'s root directory (usually /etc/pelican) in a file called config.yml. + ')), + Forms\Components\Textarea::make('config') + ->label('Configuration File') + ->disabled() + ->rows(19) + ->hintAction(CopyAction::make()) + ->columnSpanFull(), ]), ]) ->columns(4) @@ -36,6 +49,15 @@ class EditNode extends EditRecord ]); } + protected function mutateFormDataBeforeFill(array $data): array + { + $node = Node::findOrFail($data['id']); + + $data['config'] = $node->getYamlConfiguration(); + + return $data; + } + protected function getSteps(): array { return [ diff --git a/composer.json b/composer.json index 4fbc39fd6..e5cf3f9e0 100644 --- a/composer.json +++ b/composer.json @@ -35,6 +35,7 @@ "symfony/mailgun-mailer": "^7.0", "symfony/postmark-mailer": "^7.0", "symfony/yaml": "^7.0", + "webbingbrasil/filament-copyactions": "^3.0", "webmozart/assert": "~1.11.0" }, "require-dev": { diff --git a/composer.lock b/composer.lock index 9adbea1aa..eb3d9fa05 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "27aa42f361104f415f248548d4667e43", + "content-hash": "bf147fbbb2f57777d6c6b137bc61bcda", "packages": [ { "name": "anourvalar/eloquent-serialize", @@ -9471,6 +9471,60 @@ ], "time": "2022-03-08T17:03:00+00:00" }, + { + "name": "webbingbrasil/filament-copyactions", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/webbingbrasil/filament-copyactions.git", + "reference": "363215d222de4127d81ea295c8a2163cd5c5a3f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webbingbrasil/filament-copyactions/zipball/363215d222de4127d81ea295c8a2163cd5c5a3f8", + "reference": "363215d222de4127d81ea295c8a2163cd5c5a3f8", + "shasum": "" + }, + "require": { + "filament/filament": "^3.0", + "php": "^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Webbingbrasil\\FilamentCopyActions\\FilamentCopyActionsProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Webbingbrasil\\FilamentCopyActions\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Danilo Andrade", + "email": "danilo@webbingbrasil.com.br", + "role": "Developer" + } + ], + "description": "A easy-to-use copy actions for Filament Admin.", + "homepage": "https://github.com/webbingbrasil/filament-copyactions", + "keywords": [ + "filament", + "laravel" + ], + "support": { + "issues": "https://github.com/webbingbrasil/filament-copyactions/issues", + "source": "https://github.com/webbingbrasil/filament-copyactions/tree/3.0.0" + }, + "time": "2024-01-17T18:17:00+00:00" + }, { "name": "webmozart/assert", "version": "1.11.0", From 1728cbf28b123766474ec2b2c66ae4138465b777 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 31 Mar 2024 01:57:59 -0400 Subject: [PATCH 039/173] Not used --- app/Models/User.php | 8 ---- resources/views/templates/wrapper.blade.php | 53 --------------------- 2 files changed, 61 deletions(-) delete mode 100644 resources/views/templates/wrapper.blade.php diff --git a/app/Models/User.php b/app/Models/User.php index 9bef6bdfd..aff292c7c 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -198,14 +198,6 @@ class User extends Model implements AuthenticatableContract, AuthorizableContrac return $rules; } - /** - * Return the user model in a format that can be passed over to Vue templates. - */ - public function toVueObject(): array - { - return Collection::make($this->toArray())->except(['id', 'external_id'])->toArray(); - } - /** * Send the password reset notification. * diff --git a/resources/views/templates/wrapper.blade.php b/resources/views/templates/wrapper.blade.php deleted file mode 100644 index 4c2705517..000000000 --- a/resources/views/templates/wrapper.blade.php +++ /dev/null @@ -1,53 +0,0 @@ - - - - {{ config('app.name') }} - - @section('meta') - - - - - - - - - - - - - - @show - - @section('user-data') - @if(!is_null(Auth::user())) - - @endif - @if(!empty($siteConfiguration)) - - @endif - @show - - - @yield('assets') - - @include('layouts.scripts') - - - @section('content') - @yield('above-container') - @yield('container') - @yield('below-container') - @show - @section('scripts') - {!! $asset->js('main.js') !!} - @show - - From 2b172e6d8bbe72851b7a9e5f9737a580cd86dfdc Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 31 Mar 2024 02:09:23 -0400 Subject: [PATCH 040/173] User adjustments --- app/Filament/Resources/UserResource.php | 22 ++++++++++++++++------ app/Models/User.php | 16 ++++++++++++---- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/app/Filament/Resources/UserResource.php b/app/Filament/Resources/UserResource.php index 90c842791..20f08313d 100644 --- a/app/Filament/Resources/UserResource.php +++ b/app/Filament/Resources/UserResource.php @@ -27,13 +27,16 @@ class UserResource extends Resource ->schema([ Forms\Components\TextInput::make('username')->required()->maxLength(191), Forms\Components\TextInput::make('email')->email()->required()->maxLength(191), - Forms\Components\TextInput::make('name_first')->maxLength(191), - Forms\Components\TextInput::make('name_last')->maxLength(191), + Forms\Components\TextInput::make('name_first')->maxLength(191)->label('First Name'), + Forms\Components\TextInput::make('name_last')->maxLength(191)->label('Last Name'), Forms\Components\TextInput::make('password')->password()->columnSpanFull(), + Forms\Components\Hidden::make('skipValidation')->default(true), Forms\Components\Select::make('language')->required()->default('en') ->options(fn (User $user) => $user->getAvailableLanguages()), - Forms\Components\Toggle::make('root_admin')->required()->default(0) - ->disabled(fn () => User::where('root_admin', true)->count() <= 1), + Forms\Components\Toggle::make('root_admin') + ->required() + ->default(false), + // ->disabled(fn () => User::where('root_admin', true)->count() <= 1), ]); } @@ -52,11 +55,18 @@ class UserResource extends Resource ->searchable(), Tables\Columns\TextColumn::make('username') ->searchable(), - Tables\Columns\TextColumn::make('email')->searchable(), + Tables\Columns\TextColumn::make('email') + ->searchable() + ->icon('tabler-mail'), Tables\Columns\TextColumn::make('name') ->hidden() ->searchable(), - Tables\Columns\IconColumn::make('root_admin')->label('Admin')->boolean()->sortable(), + Tables\Columns\IconColumn::make('root_admin') + ->label('Admin') + ->boolean() + ->trueIcon('tabler-adjustments-check') + ->falseIcon('tabler-adjustments-cancel') + ->sortable(), Tables\Columns\IconColumn::make('use_totp')->label('2FA') ->icon(fn (User $user) => $user->use_totp ? 'tabler-lock' : 'tabler-lock-open-off') ->boolean()->sortable(), diff --git a/app/Models/User.php b/app/Models/User.php index aff292c7c..48724efad 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -7,7 +7,7 @@ use App\Rules\Username; use App\Facades\Activity; use Filament\Models\Contracts\FilamentUser; use Filament\Panel; -use Illuminate\Support\Collection; +use Illuminate\Support\Str; use Illuminate\Validation\Rules\In; use Illuminate\Auth\Authenticatable; use Illuminate\Notifications\Notifiable; @@ -141,18 +141,20 @@ class User extends Model implements AuthenticatableContract, AuthorizableContrac 'language' => 'en', 'use_totp' => false, 'totp_secret' => null, + 'name_first' => '', + 'name_last' => '', ]; /** * Rules verifying that the data being stored matches the expectations of the database. */ public static array $validationRules = [ - 'uuid' => 'required|string|size:36|unique:users,uuid', + 'uuid' => 'nullable|string|size:36|unique:users,uuid', 'email' => 'required|email|between:1,191|unique:users,email', 'external_id' => 'sometimes|nullable|string|max:191|unique:users,external_id', 'username' => 'required|between:1,191|unique:users,username', - 'name_first' => 'required|string|between:1,191', - 'name_last' => 'required|string|between:1,191', + 'name_first' => 'nullable|string|between:0,191', + 'name_last' => 'nullable|string|between:0,191', 'password' => 'sometimes|nullable|string', 'root_admin' => 'boolean', 'language' => 'string', @@ -172,6 +174,12 @@ class User extends Model implements AuthenticatableContract, AuthorizableContrac protected static function booted(): void { + static::creating(function (self $user) { + $user->uuid = Str::uuid(); + + return true; + }); + static::deleting(function (self $user) { throw_if($user->servers()->count() > 0, new DisplayException(__('admin/user.exceptions.user_has_servers'))); From 1add3ca60597bbf0aad3ac385851a85c9e7cd452 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 31 Mar 2024 02:20:23 -0400 Subject: [PATCH 041/173] Allow this to be swappable from here in the future --- app/Filament/Resources/ServerResource.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index b99d4fbc6..026ae6557 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -117,9 +117,9 @@ class ServerResource extends Resource ->icon('tabler-user') ->url(fn (Server $server): string => route('filament.admin.resources.users.edit', ['record' => $server->user])) ->sortable(), - Tables\Columns\TextColumn::make('allocation.address') - ->icon('tabler-network') - ->numeric() + Tables\Columns\SelectColumn::make('allocation.id') + ->options(fn ($state, Server $server) => [$server->allocation->id => $server->allocation->address]) + ->selectablePlaceholder(false) ->sortable(), Tables\Columns\TextColumn::make('egg.name') ->icon('tabler-egg') From f47b4207858b19cde07356b0f33cce8a725e4224 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Mon, 1 Apr 2024 12:33:16 -0400 Subject: [PATCH 042/173] Better display of tablular data --- app/Filament/Resources/EggResource.php | 9 ++-- app/Filament/Resources/NodeResource.php | 4 ++ app/Filament/Resources/ServerResource.php | 50 +++++++++++------------ app/Filament/Resources/UserResource.php | 3 +- 4 files changed, 34 insertions(+), 32 deletions(-) diff --git a/app/Filament/Resources/EggResource.php b/app/Filament/Resources/EggResource.php index 93778453a..05a0f3ddb 100644 --- a/app/Filament/Resources/EggResource.php +++ b/app/Filament/Resources/EggResource.php @@ -130,16 +130,13 @@ class EggResource extends Resource ->columns([ Tables\Columns\TextColumn::make('id') ->label('Id') - // ->hidden() - ->searchable(), - Tables\Columns\TextColumn::make('uuid') - ->label('UUID') - ->hidden() + ->toggleable(isToggledHiddenByDefault: true) ->searchable(), Tables\Columns\TextColumn::make('name') + ->icon('tabler-egg') ->searchable(), Tables\Columns\TextColumn::make('author') - ->hidden() + ->toggleable(isToggledHiddenByDefault: true) ->searchable(), Tables\Columns\TextColumn::make('description') ->words(50) diff --git a/app/Filament/Resources/NodeResource.php b/app/Filament/Resources/NodeResource.php index 51dcbbbe7..d394674b1 100644 --- a/app/Filament/Resources/NodeResource.php +++ b/app/Filament/Resources/NodeResource.php @@ -100,10 +100,14 @@ class NodeResource extends Resource Tables\Columns\TextColumn::make('memory') ->icon('tabler-device-desktop-analytics') ->numeric() + ->suffix(' GB') + ->formatStateUsing(fn ($state) => number_format($state / 1000, 2)) ->sortable(), Tables\Columns\TextColumn::make('disk') ->icon('tabler-file') ->numeric() + ->suffix(' GB') + ->formatStateUsing(fn ($state) => number_format($state / 1000, 2)) ->sortable(), Tables\Columns\IconColumn::make('scheme') ->label('SSL') diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 026ae6557..eaef1beed 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -25,32 +25,40 @@ class ServerResource extends Resource public static function form(Form $form): Form { return $form + ->columns(4) ->schema([ - Forms\Components\TextInput::make('external_id') + Forms\Components\TextInput::make('external_id')->maxLength(191)->hidden(), + Forms\Components\TextInput::make('name') + ->columnSpanFull() + ->required() ->maxLength(191), - Forms\Components\TextInput::make('uuid') - ->label('UUID') - ->required() - ->maxLength(36), - Forms\Components\TextInput::make('uuidShort') - ->required() - ->maxLength(8), Forms\Components\Select::make('node_id') ->relationship('node', 'name') + ->searchable() + ->preload() + ->required(), + Forms\Components\Select::make('egg_id') + ->relationship('egg', 'name') + ->searchable() + ->preload() + ->required(), + Forms\Components\Select::make('owner_id') + ->relationship('user', 'username') + ->searchable() + ->preload() + ->default(auth()->user()->id) + ->required(), + Forms\Components\Select::make('allocation_id') + ->relationship('allocation', 'address') + ->searchable() ->required(), - Forms\Components\TextInput::make('name') - ->required() - ->maxLength(191), Forms\Components\Textarea::make('description') + ->hidden() + ->default('') ->required() ->columnSpanFull(), - Forms\Components\TextInput::make('status') - ->maxLength(191), Forms\Components\Toggle::make('skip_scripts') ->required(), - Forms\Components\TextInput::make('owner_id') - ->required() - ->numeric(), Forms\Components\TextInput::make('memory') ->required() ->numeric(), @@ -72,17 +80,10 @@ class ServerResource extends Resource ->required() ->numeric() ->default(0), - Forms\Components\Select::make('allocation_id') - ->relationship('allocation', 'id') - ->required(), - Forms\Components\TextInput::make('egg_id') - ->required() - ->numeric(), Forms\Components\Textarea::make('startup') ->required() ->columnSpanFull(), - Forms\Components\FileUpload::make('image') - ->image() + Forms\Components\TextInput::make('image') ->required(), Forms\Components\TextInput::make('allocation_limit') ->numeric(), @@ -93,7 +94,6 @@ class ServerResource extends Resource ->required() ->numeric() ->default(0), - Forms\Components\DateTimePicker::make('installed_at'), ]); } diff --git a/app/Filament/Resources/UserResource.php b/app/Filament/Resources/UserResource.php index 20f08313d..e2d44b608 100644 --- a/app/Filament/Resources/UserResource.php +++ b/app/Filament/Resources/UserResource.php @@ -45,6 +45,7 @@ class UserResource extends Resource return $table ->columns([ Tables\Columns\ImageColumn::make('picture') + ->label('') ->defaultImageUrl(fn (User $user) => 'https://gravatar.com/avatar/' . md5(strtolower($user->email))), Tables\Columns\TextColumn::make('external_id') ->searchable() @@ -73,7 +74,7 @@ class UserResource extends Resource Tables\Columns\TextColumn::make('servers_count') ->counts('servers') ->icon('tabler-server') - ->label('Servers Owned'), + ->label('Servers'), Tables\Columns\TextColumn::make('subusers_count') ->counts('subusers') ->icon('tabler-users') From c6f4ee3d57621a2792b3a2f44b131ce4e4bbeb37 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Mon, 1 Apr 2024 12:33:22 -0400 Subject: [PATCH 043/173] Increase this slightly --- app/Models/Node.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/Node.php b/app/Models/Node.php index e70beddf2..a83fd6170 100644 --- a/app/Models/Node.php +++ b/app/Models/Node.php @@ -268,7 +268,7 @@ class Node extends Model try { return resolve(DaemonConfigurationRepository::class) ->setNode($this) - ->getSystemInformation(connectTimeout: 1); + ->getSystemInformation(connectTimeout: 3); } catch (Exception $exception) { $message = str($exception->getMessage()); From e634dd81b1ff45102d65c6a58f26a1fdd7024e59 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 4 Apr 2024 18:58:01 -0400 Subject: [PATCH 044/173] Take these out --- .../Admin/Nodes/NodeViewController.php | 21 ------------------- .../views/admin/nodes/view/index.blade.php | 12 +++++------ 2 files changed, 6 insertions(+), 27 deletions(-) diff --git a/app/Http/Controllers/Admin/Nodes/NodeViewController.php b/app/Http/Controllers/Admin/Nodes/NodeViewController.php index 608d74fdd..f7e72773f 100644 --- a/app/Http/Controllers/Admin/Nodes/NodeViewController.php +++ b/app/Http/Controllers/Admin/Nodes/NodeViewController.php @@ -39,29 +39,8 @@ class NodeViewController extends Controller ->where('node_id', '=', $node->id) ->first(); - $usageStats = Collection::make(['disk' => $stats->sum_disk, 'memory' => $stats->sum_memory]) - ->mapWithKeys(function ($value, $key) use ($node) { - $maxUsage = $node->{$key}; - if ($node->{$key . '_overallocate'} > 0) { - $maxUsage = $node->{$key} * (1 + ($node->{$key . '_overallocate'} / 100)); - } - - $percent = ($value / $maxUsage) * 100; - - return [ - $key => [ - 'value' => number_format($value), - 'max' => number_format($maxUsage), - 'percent' => $percent, - 'css' => ($percent <= self::THRESHOLD_PERCENTAGE_LOW) ? 'green' : (($percent > self::THRESHOLD_PERCENTAGE_MEDIUM) ? 'red' : 'yellow'), - ], - ]; - }) - ->toArray(); - return view('admin.nodes.view.index', [ 'node' => $node, - 'stats' => $usageStats, 'version' => $this->versionService, ]); } diff --git a/resources/views/admin/nodes/view/index.blade.php b/resources/views/admin/nodes/view/index.blade.php index 2d0bb3287..230b2f23a 100644 --- a/resources/views/admin/nodes/view/index.blade.php +++ b/resources/views/admin/nodes/view/index.blade.php @@ -103,25 +103,25 @@
    @endif
    -
    +
    Disk Space Allocated - {{ $stats['disk']['value'] }} / {{ $stats['disk']['max'] }} MiB + Disk Value / Disk Max MiB
    -
    +
    -
    +
    Memory Allocated - {{ $stats['memory']['value'] }} / {{ $stats['memory']['max'] }} MiB + Memory Value / Memory Max MiB
    -
    +
    From a7d8f3b79f9f663c38ddec00f6682b3a2565ab4d Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 4 Apr 2024 18:58:19 -0400 Subject: [PATCH 045/173] Better account for ip addresses --- .../NodeResource/Pages/CreateNode.php | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/app/Filament/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Resources/NodeResource/Pages/CreateNode.php index 1a7f2e3be..c1cfe8fce 100644 --- a/app/Filament/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Resources/NodeResource/Pages/CreateNode.php @@ -29,10 +29,23 @@ class CreateNode extends CreateRecord ->rule('prohibited', fn ($state) => is_ip($state) && request()->isSecure()) ->label(fn ($state) => is_ip($state) ? 'IP Address' : 'Domain Name') ->placeholder(fn ($state) => is_ip($state) ? '192.168.1.1' : 'node.example.com') - ->helperText(fn ($state) => is_ip($state) && request()->isSecure() ? ' - Your panel is currently secured via an SSL certificate and that means your nodes require one too. - You must use a domain name, because you cannot get SSL certificates for IP Addresses' - : '') + ->helperText(function ($state) { + if (is_ip($state)) { + if (request()->isSecure()) { + return ' + Your panel is currently secured via an SSL certificate and that means your nodes require one too. + You must use a domain name, because you cannot get SSL certificates for IP Addresses + '; + } + + return ''; + } + + return " + This is the domain name that points to your node's IP Address. + If you've already set up this, you can verify it by checking the next field! + "; + }) ->hintColor('danger') ->hint(function ($state) { if (is_ip($state) && request()->isSecure()) { From a8532d1cd2932aa0db75bd28909a6d8caf74528a Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 4 Apr 2024 18:58:40 -0400 Subject: [PATCH 046/173] Fix colspan --- app/Filament/Resources/NodeResource/Pages/CreateNode.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Filament/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Resources/NodeResource/Pages/CreateNode.php index c1cfe8fce..5057d3ee6 100644 --- a/app/Filament/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Resources/NodeResource/Pages/CreateNode.php @@ -67,7 +67,7 @@ class CreateNode extends CreateRecord ->maxLength(191), Forms\Components\TextInput::make('daemonListen') - ->columns(1) + ->columnSpan(1) ->label('Port') ->helperText('If you are running the daemon behind Cloudflare you should set the daemon port to 8443 to allow websocket proxying over SSL.') ->minValue(0) From 051b5d6bea0e0c5bf424fdf5b8e7d629b7cac6bc Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 4 Apr 2024 18:59:12 -0400 Subject: [PATCH 047/173] Move this up --- .../Resources/NodeResource/Pages/CreateNode.php | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/app/Filament/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Resources/NodeResource/Pages/CreateNode.php index 5057d3ee6..3d709cb73 100644 --- a/app/Filament/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Resources/NodeResource/Pages/CreateNode.php @@ -76,6 +76,14 @@ class CreateNode extends CreateRecord ->required() ->integer(), + + + Forms\Components\TextInput::make('name') + ->columnSpan(2) + ->required() + ->regex('/[a-zA-Z0-9_\.\- ]+/') + ->helperText('This is the display name and can be changed later. Character limits: a-Z, 0-9, and [.-_ ]') + ->maxLength(100), Forms\Components\ToggleButtons::make('scheme') ->label('Communicate over SSL') ->required() @@ -105,12 +113,7 @@ class CreateNode extends CreateRecord 'https' => 'tabler-lock', ]) ->default(fn () => request()->isSecure() ? 'https' : 'http'), - Forms\Components\TextInput::make('name') - ->required() - ->columnSpanFull() - ->regex('/[a-zA-Z0-9_\.\- ]+/') - ->helperText('This is just a display name and can be changed later. Character limits: a-Z, 0-9, and [.-_ ]') - ->maxLength(100), + Forms\Components\Textarea::make('description') ->hidden() ->columnSpanFull() From cf13bfb1e407a1ee398796dfd5f1a94b29e8a351 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 4 Apr 2024 18:59:34 -0400 Subject: [PATCH 048/173] Add dns checking field --- .../NodeResource/Pages/CreateNode.php | 36 ++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/app/Filament/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Resources/NodeResource/Pages/CreateNode.php index 3d709cb73..b44912616 100644 --- a/app/Filament/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Resources/NodeResource/Pages/CreateNode.php @@ -52,20 +52,48 @@ class CreateNode extends CreateRecord return 'You cannot connect to an IP Address over SSL'; } -// if (!is_ip($state) && !empty($state) && !checkdnsrr("$state.", 'A')) { -// return 'Your hostname does not have a valid A record'; -// } - return ''; }) ->afterStateUpdated(function (Forms\Set $set, ?string $state) { + $set('dns', null); [$subdomain] = str($state)->explode('.', 2); if (!is_numeric($subdomain)) { $set('name', $subdomain); } + + if (!$state || is_ip($state)) { + $set('dns', null); + + return; + } + + $validRecord = checkdnsrr("$state.", 'A'); + if ($validRecord) { + $set('dns', true); + + return; + } + + $set('dns', false); }) ->maxLength(191), + Forms\Components\ToggleButtons::make('dns') + ->label('DNS Record Check') + ->helperText('This lets you know if your DNS record points to an IP Address.') + ->disabled() + ->inline() + ->default(null) + // ->hidden() + ->options([ + true => 'Valid', + false => 'Invalid' + ]) + ->colors([ + true => 'success', + false => 'danger' + ]), + Forms\Components\TextInput::make('daemonListen') ->columnSpan(1) ->label('Port') From 5d38f2ece694a8633536caacbd37b46a7c757644 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 4 Apr 2024 18:59:42 -0400 Subject: [PATCH 049/173] Adjustments --- app/Filament/Resources/NodeResource/Pages/CreateNode.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/Filament/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Resources/NodeResource/Pages/CreateNode.php index b44912616..e1b4ee559 100644 --- a/app/Filament/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Resources/NodeResource/Pages/CreateNode.php @@ -112,13 +112,15 @@ class CreateNode extends CreateRecord ->regex('/[a-zA-Z0-9_\.\- ]+/') ->helperText('This is the display name and can be changed later. Character limits: a-Z, 0-9, and [.-_ ]') ->maxLength(100), + Forms\Components\ToggleButtons::make('scheme') ->label('Communicate over SSL') + ->columnSpan(2) ->required() ->inline() ->helperText(function (Forms\Get $get) { if (request()->isSecure()) { - return 'Your Panel is using a secure (SSL/TLS) connection, therefore your Daemon has to as well.'; + return 'Your Panel is using a secure (SSL/TLS) connection. Therefore your Daemon must too.'; } if (is_ip($get('fqdn'))) { From f79ec37f5ee41b8978e12e25295f2c4eee8c4eaf Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 4 Apr 2024 20:15:41 -0400 Subject: [PATCH 050/173] Move this over --- app/Filament/Resources/ServerResource.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index eaef1beed..42ca44268 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -113,6 +113,10 @@ class ServerResource extends Resource ->icon('tabler-server-2') ->url(fn (Server $server): string => route('filament.admin.resources.nodes.edit', ['record' => $server->node])) ->sortable(), + Tables\Columns\TextColumn::make('egg.name') + ->icon('tabler-egg') + ->url(fn (Server $server): string => route('filament.admin.resources.eggs.edit', ['record' => $server->egg])) + ->sortable(), Tables\Columns\TextColumn::make('user.username') ->icon('tabler-user') ->url(fn (Server $server): string => route('filament.admin.resources.users.edit', ['record' => $server->user])) @@ -121,10 +125,6 @@ class ServerResource extends Resource ->options(fn ($state, Server $server) => [$server->allocation->id => $server->allocation->address]) ->selectablePlaceholder(false) ->sortable(), - Tables\Columns\TextColumn::make('egg.name') - ->icon('tabler-egg') - ->url(fn (Server $server): string => route('filament.admin.resources.eggs.edit', ['record' => $server->egg])) - ->sortable(), Tables\Columns\TextColumn::make('image')->hidden(), Tables\Columns\TextColumn::make('backups_count') ->counts('backups') From a96c53f4076fe90aadc457d113432e21d3ff6212 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 4 Apr 2024 20:15:56 -0400 Subject: [PATCH 051/173] Make this hidden by default --- app/Filament/Resources/ServerResource.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 42ca44268..532777e4c 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -131,7 +131,8 @@ class ServerResource extends Resource ->label('Backups') ->icon('tabler-file-download') ->numeric() - ->sortable(), + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), Tables\Columns\TextColumn::make('created_at') ->dateTime() ->sortable() From 95570724e6415b317af3ed5d3cd71a5ebb61e07b Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 4 Apr 2024 20:16:14 -0400 Subject: [PATCH 052/173] Use tabs instead --- .../NodeResource/Pages/CreateNode.php | 3 +- .../Resources/NodeResource/Pages/EditNode.php | 37 +++++++++++-------- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/app/Filament/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Resources/NodeResource/Pages/CreateNode.php index e1b4ee559..c00a8b963 100644 --- a/app/Filament/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Resources/NodeResource/Pages/CreateNode.php @@ -148,6 +148,7 @@ class CreateNode extends CreateRecord ->hidden() ->columnSpanFull() ->rows(5), + Forms\Components\Hidden::make('skipValidation')->default(true), ]); } @@ -155,7 +156,7 @@ class CreateNode extends CreateRecord protected function getRedirectUrlParameters(): array { return [ - 'step' => 'configuration', + 'tab' => '-configuration-tab', ]; } } diff --git a/app/Filament/Resources/NodeResource/Pages/EditNode.php b/app/Filament/Resources/NodeResource/Pages/EditNode.php index e508f7c30..e56024978 100644 --- a/app/Filament/Resources/NodeResource/Pages/EditNode.php +++ b/app/Filament/Resources/NodeResource/Pages/EditNode.php @@ -6,6 +6,7 @@ use App\Filament\Resources\NodeResource; use App\Models\Node; use Filament\Actions; use Filament\Forms; +use Filament\Forms\Components\Tabs; use Filament\Forms\Components\Wizard; use Filament\Resources\Pages\EditRecord; use Illuminate\Support\HtmlString; @@ -17,19 +18,25 @@ class EditNode extends EditRecord public function form(Forms\Form $form): Forms\Form { - return $form - ->schema([ - Wizard::make([ - Forms\Components\Wizard\Step::make('Basic') - ->description('') + return $form->schema([ + Tabs::make('Tabs') + ->columns(4) + ->persistTabInQueryString() + ->columnSpanFull() + ->tabs([ + Tabs\Tab::make('Basic Settings') + ->icon('tabler-server') ->schema((new CreateNode())->form($form)->getComponents()), - Forms\Components\Wizard\Step::make('Configuration') - ->description('') + Tabs\Tab::make('Advanced Settings') + ->icon('tabler-server-cog'), + Tabs\Tab::make('Configuration') + ->icon('tabler-code') ->schema([ Forms\Components\Placeholder::make('instructions') ->columnSpanFull() ->content(new HtmlString(' - This file should be placed in your daemon\'s root directory (usually /etc/pelican) in a file called config.yml. + This file should be placed in your daemon\'s root directory + (usually /etc/pelican) in a file called config.yml. ')), Forms\Components\Textarea::make('config') ->label('Configuration File') @@ -38,15 +45,13 @@ class EditNode extends EditRecord ->hintAction(CopyAction::make()) ->columnSpanFull(), ]), + Tabs\Tab::make('Allocations') + ->icon('tabler-plug-connected') + ->schema([ + // ... + ]), ]) - ->columns(4) - ->persistStepInQueryString() - ->columnSpanFull() - // ->startOnStep($this->getStartStep()) - // ->cancelAction($this->getCancelFormAction()) - // ->submitAction($this->getSubmitFormAction()) - // ->skippable($this->hasSkippableSteps()), - ]); + ]); } protected function mutateFormDataBeforeFill(array $data): array From aac522232fe471016183357e8ba998270ab156de Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 4 Apr 2024 21:25:59 -0400 Subject: [PATCH 053/173] Update database form --- app/Filament/Resources/DatabaseResource.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/app/Filament/Resources/DatabaseResource.php b/app/Filament/Resources/DatabaseResource.php index d140fb98a..5e2e1cef6 100644 --- a/app/Filament/Resources/DatabaseResource.php +++ b/app/Filament/Resources/DatabaseResource.php @@ -25,6 +25,8 @@ class DatabaseResource extends Resource ->schema([ Forms\Components\Select::make('server_id') ->relationship('server', 'name') + ->searchable() + ->preload() ->required(), Forms\Components\TextInput::make('database_host_id') ->required() @@ -32,18 +34,20 @@ class DatabaseResource extends Resource Forms\Components\TextInput::make('database') ->required() ->maxLength(191), - Forms\Components\TextInput::make('username') - ->required() - ->maxLength(191), Forms\Components\TextInput::make('remote') ->required() ->maxLength(191) ->default('%'), - Forms\Components\Textarea::make('password') + Forms\Components\TextInput::make('username') ->required() - ->columnSpanFull(), + ->maxLength(191), + Forms\Components\TextInput::make('password') + ->password() + ->revealable() + ->required(), Forms\Components\TextInput::make('max_connections') ->numeric() + ->minValue(0) ->default(0), ]); } From 978a4ac0a2d806ddc6c07879f864730d3de96678 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 4 Apr 2024 21:26:10 -0400 Subject: [PATCH 054/173] Adjust the mounts --- app/Filament/Resources/MountResource.php | 54 ++++++++++++++++++------ 1 file changed, 42 insertions(+), 12 deletions(-) diff --git a/app/Filament/Resources/MountResource.php b/app/Filament/Resources/MountResource.php index 4f64f41ac..79e6a5cd9 100644 --- a/app/Filament/Resources/MountResource.php +++ b/app/Filament/Resources/MountResource.php @@ -23,27 +23,57 @@ class MountResource extends Resource { return $form ->schema([ - Forms\Components\TextInput::make('uuid') - ->label('UUID') - ->required() - ->maxLength(36), Forms\Components\TextInput::make('name') ->required() + ->helperText('Unique name used to separate this mount from another.') ->maxLength(191), - Forms\Components\Textarea::make('description') - ->columnSpanFull(), + Forms\Components\ToggleButtons::make('read_only') + ->label('Read only?') + ->helperText('Is the mount read only inside the container?') + ->options([ + false => 'Writeable', + true => 'Read only', + ]) + ->icons([ + false => 'tabler-writing', + true => 'tabler-writing-off', + ]) + ->colors([ + false => 'warning', + true => 'success', + ]) + ->inline() + ->default(false) + ->required(), Forms\Components\TextInput::make('source') ->required() + ->helperText('File path on the host system to mount to a container.') ->maxLength(191), Forms\Components\TextInput::make('target') ->required() + ->helperText('Where the mount will be accessible inside a container.') ->maxLength(191), - Forms\Components\TextInput::make('read_only') - ->required() - ->numeric(), - Forms\Components\TextInput::make('user_mountable') - ->required() - ->numeric(), + Forms\Components\ToggleButtons::make('user_mountable') + ->hidden() + ->label('User mountable?') + ->options([ + false => 'No', + true => 'Yes', + ]) + ->icons([ + false => 'tabler-user-cancel', + true => 'tabler-user-bolt', + ]) + ->colors([ + false => 'success', + true => 'warning', + ]) + ->default(false) + ->inline() + ->required(), + Forms\Components\Textarea::make('description') + ->helperText('A longer description for this mount.') + ->columnSpanFull(), ]); } From bf8f90f4796782f428be4c14572dd3aee1d80b87 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 4 Apr 2024 21:26:18 -0400 Subject: [PATCH 055/173] More specific --- app/Filament/Resources/ServerResource.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 532777e4c..cba785599 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -122,6 +122,7 @@ class ServerResource extends Resource ->url(fn (Server $server): string => route('filament.admin.resources.users.edit', ['record' => $server->user])) ->sortable(), Tables\Columns\SelectColumn::make('allocation.id') + ->label('Primary Allocation') ->options(fn ($state, Server $server) => [$server->allocation->id => $server->allocation->address]) ->selectablePlaceholder(false) ->sortable(), From e00d9ed2730adfb63a21e24a1c8e046982c2ed8a Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 4 Apr 2024 21:43:18 -0400 Subject: [PATCH 056/173] Add some allocations --- .../Resources/NodeResource/Pages/EditNode.php | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/app/Filament/Resources/NodeResource/Pages/EditNode.php b/app/Filament/Resources/NodeResource/Pages/EditNode.php index e56024978..11943c8ea 100644 --- a/app/Filament/Resources/NodeResource/Pages/EditNode.php +++ b/app/Filament/Resources/NodeResource/Pages/EditNode.php @@ -47,8 +47,26 @@ class EditNode extends EditRecord ]), Tabs\Tab::make('Allocations') ->icon('tabler-plug-connected') + ->columns(5) ->schema([ - // ... + Forms\Components\Repeater::make('allocations') + ->orderColumn('server_id') + ->columnSpan(3) + ->columns(4) + ->relationship() + ->addActionLabel('Create New Allocation') + ->addAction(fn ($action) => $action->color('info')) + ->schema([ + Forms\Components\TextInput::make('ip') + ->label('IP Address'), + Forms\Components\TextInput::make('ip_alias') + ->label('Alias'), + Forms\Components\TextInput::make('port') + ->minValue(0) + ->maxValue(65535) + ->numeric(), + Forms\Components\Select::make('server_id')->relationship('server', 'name'), + ]) ]), ]) ]); From 05ae2b2ecf6077e78df9c6461ce9a63a662bff76 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 4 Apr 2024 21:43:31 -0400 Subject: [PATCH 057/173] Add home url --- app/Providers/Filament/AdminPanelProvider.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php index 1ee13aa18..7d0409d16 100644 --- a/app/Providers/Filament/AdminPanelProvider.php +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -28,6 +28,7 @@ class AdminPanelProvider extends PanelProvider ->path('panel') ->login() ->brandName('Pelican') + ->homeUrl('/') ->favicon('/favicon.ico') ->colors([ 'danger' => Color::Red, From 3465d2fc646bbce48fd392ac34f0f11e6fe57569 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 4 Apr 2024 21:45:21 -0400 Subject: [PATCH 058/173] Revert "Not used" This reverts commit 1728cbf28b123766474ec2b2c66ae4138465b777. --- app/Models/User.php | 8 ++++ resources/views/templates/wrapper.blade.php | 53 +++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 resources/views/templates/wrapper.blade.php diff --git a/app/Models/User.php b/app/Models/User.php index 48724efad..7892298fe 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -206,6 +206,14 @@ class User extends Model implements AuthenticatableContract, AuthorizableContrac return $rules; } + /** + * Return the user model in a format that can be passed over to Vue templates. + */ + public function toVueObject(): array + { + return Collection::make($this->toArray())->except(['id', 'external_id'])->toArray(); + } + /** * Send the password reset notification. * diff --git a/resources/views/templates/wrapper.blade.php b/resources/views/templates/wrapper.blade.php new file mode 100644 index 000000000..4c2705517 --- /dev/null +++ b/resources/views/templates/wrapper.blade.php @@ -0,0 +1,53 @@ + + + + {{ config('app.name') }} + + @section('meta') + + + + + + + + + + + + + + @show + + @section('user-data') + @if(!is_null(Auth::user())) + + @endif + @if(!empty($siteConfiguration)) + + @endif + @show + + + @yield('assets') + + @include('layouts.scripts') + + + @section('content') + @yield('above-container') + @yield('container') + @yield('below-container') + @show + @section('scripts') + {!! $asset->js('main.js') !!} + @show + + From a133503256754c15dc219a489ef68696885f8f38 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 4 Apr 2024 21:45:57 -0400 Subject: [PATCH 059/173] Simplify --- app/Models/User.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/User.php b/app/Models/User.php index 7892298fe..6c17ddc6b 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -211,7 +211,7 @@ class User extends Model implements AuthenticatableContract, AuthorizableContrac */ public function toVueObject(): array { - return Collection::make($this->toArray())->except(['id', 'external_id'])->toArray(); + return collect($this->toArray())->except(['id', 'external_id'])->toArray(); } /** From b0067c4e4baf973680a84051e1d0d5b28cb6e92c Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sat, 6 Apr 2024 10:11:10 -0400 Subject: [PATCH 060/173] Top right user menu --- app/Models/User.php | 14 +++++++++++++- app/Providers/Filament/AdminPanelProvider.php | 7 +++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/app/Models/User.php b/app/Models/User.php index 6c17ddc6b..ca6af6258 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -6,6 +6,8 @@ use App\Exceptions\DisplayException; use App\Rules\Username; use App\Facades\Activity; use Filament\Models\Contracts\FilamentUser; +use Filament\Models\Contracts\HasAvatar; +use Filament\Models\Contracts\HasName; use Filament\Panel; use Illuminate\Support\Str; use Illuminate\Validation\Rules\In; @@ -81,7 +83,7 @@ use App\Notifications\SendPasswordReset as ResetPasswordNotification; * * @mixin \Eloquent */ -class User extends Model implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, FilamentUser +class User extends Model implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, FilamentUser, HasName, HasAvatar { use Authenticatable; use Authorizable {can as protected canned; } @@ -338,4 +340,14 @@ class User extends Model implements AuthenticatableContract, AuthorizableContrac { return $this->root_admin; } + + public function getFilamentName(): string + { + return $this->name_first ?: $this->username; + } + + public function getFilamentAvatarUrl(): ?string + { + return 'https://gravatar.com/avatar/' . md5(strtolower($this->email)); + } } diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php index 7d0409d16..7c55f6145 100644 --- a/app/Providers/Filament/AdminPanelProvider.php +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -5,11 +5,13 @@ namespace App\Providers\Filament; use Filament\Http\Middleware\Authenticate; use Filament\Http\Middleware\DisableBladeIconComponents; use Filament\Http\Middleware\DispatchServingFilamentEvent; +use Filament\Navigation\MenuItem; use Filament\Pages; use Filament\Panel; use Filament\PanelProvider; use Filament\Support\Colors\Color; use Filament\Widgets; +use Illuminate\Contracts\Auth\Guard; use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse; use Illuminate\Cookie\Middleware\EncryptCookies; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken; @@ -30,6 +32,11 @@ class AdminPanelProvider extends PanelProvider ->brandName('Pelican') ->homeUrl('/') ->favicon('/favicon.ico') + ->userMenuItems([ + 'profile' => MenuItem::make() + ->label('Edit profile') + ->url(fn (Guard $guard) => '/panel/users/' . $guard->id() . '/edit'), + ]) ->colors([ 'danger' => Color::Red, 'gray' => Color::Zinc, From a19c8e72b39634b7ee12d6a08a51807c803e6721 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sat, 6 Apr 2024 22:56:57 -0400 Subject: [PATCH 061/173] Fix password saving --- app/Filament/Resources/UserResource.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/Filament/Resources/UserResource.php b/app/Filament/Resources/UserResource.php index e2d44b608..fb7f59ed2 100644 --- a/app/Filament/Resources/UserResource.php +++ b/app/Filament/Resources/UserResource.php @@ -12,6 +12,7 @@ use Filament\Tables; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\SoftDeletingScope; +use Illuminate\Support\Facades\Hash; class UserResource extends Resource { @@ -29,7 +30,12 @@ class UserResource extends Resource Forms\Components\TextInput::make('email')->email()->required()->maxLength(191), Forms\Components\TextInput::make('name_first')->maxLength(191)->label('First Name'), Forms\Components\TextInput::make('name_last')->maxLength(191)->label('Last Name'), - Forms\Components\TextInput::make('password')->password()->columnSpanFull(), + Forms\Components\TextInput::make('password') + ->password() + ->dehydrateStateUsing(fn (string $state): string => Hash::make($state)) + ->dehydrated(fn (?string $state): bool => filled($state)) + ->required(fn (string $operation): bool => $operation === 'create') + ->columnSpanFull(), Forms\Components\Hidden::make('skipValidation')->default(true), Forms\Components\Select::make('language')->required()->default('en') ->options(fn (User $user) => $user->getAvailableLanguages()), From 732db9a5b460fe8187bcf90f60829200f347e49b Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sat, 6 Apr 2024 23:58:10 -0400 Subject: [PATCH 062/173] User resource adjustments --- app/Filament/Resources/UserResource.php | 61 ++++++++++++++++++++----- app/Models/User.php | 7 +++ 2 files changed, 56 insertions(+), 12 deletions(-) diff --git a/app/Filament/Resources/UserResource.php b/app/Filament/Resources/UserResource.php index fb7f59ed2..9629836bc 100644 --- a/app/Filament/Resources/UserResource.php +++ b/app/Filament/Resources/UserResource.php @@ -28,21 +28,52 @@ class UserResource extends Resource ->schema([ Forms\Components\TextInput::make('username')->required()->maxLength(191), Forms\Components\TextInput::make('email')->email()->required()->maxLength(191), - Forms\Components\TextInput::make('name_first')->maxLength(191)->label('First Name'), - Forms\Components\TextInput::make('name_last')->maxLength(191)->label('Last Name'), + + Forms\Components\TextInput::make('name_first') + ->maxLength(191) + ->hidden(fn (string $operation): bool => $operation === 'create') + ->label('First Name'), + Forms\Components\TextInput::make('name_last') + ->maxLength(191) + ->hidden(fn (string $operation): bool => $operation === 'create') + ->label('Last Name'), + Forms\Components\TextInput::make('password') - ->password() ->dehydrateStateUsing(fn (string $state): string => Hash::make($state)) ->dehydrated(fn (?string $state): bool => filled($state)) ->required(fn (string $operation): bool => $operation === 'create') - ->columnSpanFull(), - Forms\Components\Hidden::make('skipValidation')->default(true), - Forms\Components\Select::make('language')->required()->default('en') - ->options(fn (User $user) => $user->getAvailableLanguages()), - Forms\Components\Toggle::make('root_admin') + ->password(), + + Forms\Components\ToggleButtons::make('root_admin') + ->label('Administrator (Root)') + ->options([ + false => 'No', + true => 'Admin', + ]) + ->colors([ + false => 'primary', + true => 'danger', + ]) + ->disableOptionWhen(function (string $operation, $value, User $user) { + if ($operation !== 'edit' || $value) { + return false; + } + + return $user->isLastRootAdmin(); + }) + ->hint(fn (User $user) => $user->isLastRootAdmin() ? 'This is the last root administrator!' : '') + ->helperText(fn (User $user) => $user->isLastRootAdmin() ? 'You must have at least one root administrator in your system.' : '') + ->hintColor('warning') + ->inline() ->required() ->default(false), - // ->disabled(fn () => User::where('root_admin', true)->count() <= 1), + + Forms\Components\Hidden::make('skipValidation')->default(true), + Forms\Components\Select::make('language') + ->required() + ->hidden() + ->default('en') + ->options(fn (User $user) => $user->getAvailableLanguages()), ]); } @@ -65,8 +96,13 @@ class UserResource extends Resource Tables\Columns\TextColumn::make('email') ->searchable() ->icon('tabler-mail'), - Tables\Columns\TextColumn::make('name') - ->hidden() + Tables\Columns\TextColumn::make('name_first') + ->toggleable(isToggledHiddenByDefault: true) + ->label('First Name') + ->searchable(), + Tables\Columns\TextColumn::make('name_last') + ->toggleable(isToggledHiddenByDefault: true) + ->label('Last Name') ->searchable(), Tables\Columns\IconColumn::make('root_admin') ->label('Admin') @@ -82,10 +118,11 @@ class UserResource extends Resource ->icon('tabler-server') ->label('Servers'), Tables\Columns\TextColumn::make('subusers_count') + ->toggleable(isToggledHiddenByDefault: true) ->counts('subusers') ->icon('tabler-users') // ->formatStateUsing(fn (string $state, $record): string => (string) ($record->servers_count + $record->subusers_count)) - ->label('Subusers'), + ->label('Subuser Accounts'), Tables\Columns\TextColumn::make('created_at') ->dateTime() ->sortable() diff --git a/app/Models/User.php b/app/Models/User.php index ca6af6258..2b52676a9 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -336,6 +336,13 @@ class User extends Model implements AuthenticatableContract, AuthorizableContrac return $this->canned($abilities, $arguments); } + public function isLastRootAdmin(): bool + { + $rootAdmins = User::query()->where('root_admin', true)->limit(2)->get(); + + return once(fn() => $rootAdmins->count() === 1 && $rootAdmins->first()->is($this)); + } + public function canAccessPanel(Panel $panel): bool { return $this->root_admin; From 42728fd9b909daf5d9956a36f3178d9e866b4c46 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 7 Apr 2024 01:35:20 -0400 Subject: [PATCH 063/173] Small tweaks --- app/Filament/Resources/NodeResource/Pages/EditNode.php | 1 - app/Filament/Resources/ServerResource.php | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Filament/Resources/NodeResource/Pages/EditNode.php b/app/Filament/Resources/NodeResource/Pages/EditNode.php index 11943c8ea..be5d75cac 100644 --- a/app/Filament/Resources/NodeResource/Pages/EditNode.php +++ b/app/Filament/Resources/NodeResource/Pages/EditNode.php @@ -7,7 +7,6 @@ use App\Models\Node; use Filament\Actions; use Filament\Forms; use Filament\Forms\Components\Tabs; -use Filament\Forms\Components\Wizard; use Filament\Resources\Pages\EditRecord; use Illuminate\Support\HtmlString; use Webbingbrasil\FilamentCopyActions\Forms\Actions\CopyAction; diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index cba785599..ee0ae0399 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -69,6 +69,7 @@ class ServerResource extends Resource ->required() ->numeric(), Forms\Components\TextInput::make('io') + ->default(500) ->required() ->numeric(), Forms\Components\TextInput::make('cpu') From d05332662b9b1dbc4ef643b9f541379fd01ff425 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 7 Apr 2024 01:35:30 -0400 Subject: [PATCH 064/173] Add some of these --- .../ServerResource/Pages/EditServer.php | 120 ++++++++++++++++++ 1 file changed, 120 insertions(+) diff --git a/app/Filament/Resources/ServerResource/Pages/EditServer.php b/app/Filament/Resources/ServerResource/Pages/EditServer.php index 856aa1026..af4d8e671 100644 --- a/app/Filament/Resources/ServerResource/Pages/EditServer.php +++ b/app/Filament/Resources/ServerResource/Pages/EditServer.php @@ -3,7 +3,9 @@ namespace App\Filament\Resources\ServerResource\Pages; use App\Filament\Resources\ServerResource; +use App\Models\Allocation; use Filament\Actions; +use Filament\Forms; use Filament\Resources\Pages\EditRecord; class EditServer extends EditRecord @@ -16,4 +18,122 @@ class EditServer extends EditRecord Actions\DeleteAction::make(), ]; } + + public function form(Forms\Form $form): Forms\Form + { + return $form + ->columns(6) + ->schema([ + Forms\Components\TextInput::make('name') + ->columnSpan(4) + ->required() + ->maxLength(191), + + Forms\Components\Select::make('owner_id') + ->columnSpan(2) + ->relationship('user', 'username') + ->searchable() + ->preload() + ->required(), + + Forms\Components\Select::make('allocation_id') + ->columnSpan(2) + ->label('Primary Allocation') + ->relationship('allocation', 'port') + ->getOptionLabelFromRecordUsing(fn (Allocation $allocation) => + "$allocation->ip:$allocation->port" . + ($allocation->ip_alias ? " ($allocation->ip_alias)" : '') + ) + ->searchable(['ip', 'port', 'ip_alias']) + ->required(), + + Forms\Components\Textarea::make('description') + ->hidden() + ->default('') + ->required() + ->columnSpanFull(), + + Forms\Components\Toggle::make('skip_scripts') + ->required(), + Forms\Components\TextInput::make('memory') + ->label('Allocated Memory') + ->suffix('MB') + ->required() + ->numeric(), + Forms\Components\TextInput::make('swap') + ->label('Allocated Swap') + ->suffix('MB') + ->required() + ->numeric(), + + Forms\Components\TextInput::make('disk') + ->label('Disk Space Limit') + ->suffix('MB') + ->required() + ->numeric(), + + Forms\Components\TextInput::make('io') + ->columnSpan(2) + ->label('Block IO Proportion') + ->hint('Advanced') + ->hintColor('danger') + ->required() + ->minValue(10) + ->maxValue(1000) + ->step(10) + ->default(500) + ->numeric(), + + Forms\Components\TextInput::make('cpu') + ->label('CPU Limit') + ->suffix('%') + ->required() + ->numeric(), + + Forms\Components\TextInput::make('threads') + ->hidden() + ->columnSpan(2) + ->hint('Advanced') + ->hintColor('danger') + ->helperText('Examples: 0, 0-1,3, or 0,1,3,4') + ->label('CPU Pinning') + ->suffixIcon('tabler-cpu') + ->maxLength(191), + + Forms\Components\ToggleButtons::make('oom_disabled') + ->columnSpan(2) + ->label('OOM Killer') + ->inline() + ->options([ + false => 'Disabled', + true => 'Enabled', + ]) + ->colors([ + false => 'success', + true => 'danger', + ]) + ->required(), + + Forms\Components\Textarea::make('startup') + ->required() + ->columnSpanFull(), + Forms\Components\TextInput::make('image') + ->required(), + Forms\Components\TextInput::make('allocation_limit') + ->numeric(), + Forms\Components\TextInput::make('database_limit') + ->numeric() + ->default(0), + + Forms\Components\TextInput::make('backup_limit') + ->required() + ->numeric() + ->default(0), + + Forms\Components\TextInput::make('external_id') + ->maxLength(191) + ->hidden(), + + ]); + } } From 17c20d6b91e7109fd24077c1f07957ee1c4ffd64 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 7 Apr 2024 20:13:39 -0400 Subject: [PATCH 065/173] Shorten nav sidebar --- app/Providers/Filament/AdminPanelProvider.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php index 7c55f6145..817e84062 100644 --- a/app/Providers/Filament/AdminPanelProvider.php +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -5,13 +5,11 @@ namespace App\Providers\Filament; use Filament\Http\Middleware\Authenticate; use Filament\Http\Middleware\DisableBladeIconComponents; use Filament\Http\Middleware\DispatchServingFilamentEvent; -use Filament\Navigation\MenuItem; -use Filament\Pages; use Filament\Panel; use Filament\PanelProvider; use Filament\Support\Colors\Color; +use Filament\Support\Facades\FilamentAsset; use Filament\Widgets; -use Illuminate\Contracts\Auth\Guard; use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse; use Illuminate\Cookie\Middleware\EncryptCookies; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken; @@ -22,6 +20,13 @@ use Illuminate\View\Middleware\ShareErrorsFromSession; class AdminPanelProvider extends PanelProvider { + public function boot() + { + FilamentAsset::registerCssVariables([ + 'sidebar-width' => '12rem !important', + ]); + } + public function panel(Panel $panel): Panel { return $panel From b1cc4ef45ce30c7026d676ed1e36c8787b96c813 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Mon, 8 Apr 2024 00:10:19 -0400 Subject: [PATCH 066/173] Squish them --- app/Filament/Resources/EggResource.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Filament/Resources/EggResource.php b/app/Filament/Resources/EggResource.php index 05a0f3ddb..13879b548 100644 --- a/app/Filament/Resources/EggResource.php +++ b/app/Filament/Resources/EggResource.php @@ -82,6 +82,7 @@ class EggResource extends Resource // ->columns(2) ->schema([ Forms\Components\Repeater::make('Blah') + ->grid(3) ->relationship('variables') ->name('name') ->columns(1) From 970d2b0f0fb49450e38036b1367ebd4e53e3263d Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Mon, 8 Apr 2024 00:33:00 -0400 Subject: [PATCH 067/173] Add better profile page --- .../UserResource/Pages/EditProfile.php | 99 +++++++++++++++++++ app/Models/ActivityLog.php | 25 +++++ app/Providers/Filament/AdminPanelProvider.php | 7 +- 3 files changed, 126 insertions(+), 5 deletions(-) create mode 100644 app/Filament/Resources/UserResource/Pages/EditProfile.php diff --git a/app/Filament/Resources/UserResource/Pages/EditProfile.php b/app/Filament/Resources/UserResource/Pages/EditProfile.php new file mode 100644 index 000000000..8480952ba --- /dev/null +++ b/app/Filament/Resources/UserResource/Pages/EditProfile.php @@ -0,0 +1,99 @@ + $this->form( + $this->makeForm() + ->schema([ + Tabs::make()->schema([ + Tab::make('Account') + ->icon('tabler-user') + ->schema([ + TextInput::make('username') + ->disabled() + ->readOnly() + ->maxLength(191) + ->unique(ignoreRecord: true) + ->autofocus(), + + TextInput::make('email') + ->email() + ->required() + ->maxLength(191) + ->unique(ignoreRecord: true), + + TextInput::make('password') + ->password() + ->revealable(filament()->arePasswordsRevealable()) + ->rule(Password::default()) + ->autocomplete('new-password') + ->dehydrated(fn ($state): bool => filled($state)) + ->dehydrateStateUsing(fn ($state): string => Hash::make($state)) + ->live(debounce: 500) + ->same('passwordConfirmation'), + + TextInput::make('passwordConfirmation') + ->password() + ->revealable(filament()->arePasswordsRevealable()) + ->required() + ->visible(fn (Get $get): bool => filled($get('password'))) + ->dehydrated(false), + ]), + + Tab::make('2FA') + ->icon('tabler-shield-lock') + ->schema([ + Placeholder::make('Coming soon!'), + ]), + + Tab::make('API Keys') + ->icon('tabler-key') + ->schema([ + Placeholder::make('Coming soon!'), + ]), + + Tab::make('SSH Keys') + ->icon('tabler-lock-code') + ->schema([ + Placeholder::make('Coming soon!'), + ]), + + Tab::make('Activity') + ->icon('tabler-activity') + ->schema([ + Repeater::make('activity') + ->deletable(false) + ->addable(false) + ->relationship() + + ->schema([ + Placeholder::make('activity!')->label('')->content(fn (ActivityLog $log) => new HtmlString($log->htmlable())), + ]) + ]), + ]), + ]) + ->operation('edit') + ->model($this->getUser()) + ->statePath('data') + ->inlineLabel(! static::isSimple()), + ), + ]; + } +} diff --git a/app/Models/ActivityLog.php b/app/Models/ActivityLog.php index 8eaeb744d..06fd2d108 100644 --- a/app/Models/ActivityLog.php +++ b/app/Models/ActivityLog.php @@ -144,4 +144,29 @@ class ActivityLog extends Model Event::dispatch(new ActivityLogged($model)); }); } + + public function htmlable() + { + $user = $this->actor; + if (!$user instanceof User) { + $user = new User([ + 'email' => 'system@pelican.dev', + 'username' => 'system', + ]); + } + + $event = __('activity.'.str($this->event)->replace(':', '.')); + + return " +
    + + +
    +

    $user->username — $this->event

    +

    $event

    +

    $this->ip — {$this->timestamp->diffForHumans()}

    +
    +
    + "; + } } diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php index 817e84062..b13685be2 100644 --- a/app/Providers/Filament/AdminPanelProvider.php +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -2,6 +2,7 @@ namespace App\Providers\Filament; +use App\Filament\Resources\UserResource\Pages\EditProfile; use Filament\Http\Middleware\Authenticate; use Filament\Http\Middleware\DisableBladeIconComponents; use Filament\Http\Middleware\DispatchServingFilamentEvent; @@ -37,11 +38,7 @@ class AdminPanelProvider extends PanelProvider ->brandName('Pelican') ->homeUrl('/') ->favicon('/favicon.ico') - ->userMenuItems([ - 'profile' => MenuItem::make() - ->label('Edit profile') - ->url(fn (Guard $guard) => '/panel/users/' . $guard->id() . '/edit'), - ]) + ->profile(EditProfile::class, false) ->colors([ 'danger' => Color::Red, 'gray' => Color::Zinc, From 4e0aaedc868e6acf4869f7baeb8499dbe11af488 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Mon, 8 Apr 2024 00:59:55 -0400 Subject: [PATCH 068/173] Add api keys --- app/Filament/Resources/ApiKeyResource.php | 190 ++++++++++++++++++ .../ApiKeyResource/Pages/CreateApiKey.php | 12 ++ .../ApiKeyResource/Pages/ListApiKeys.php | 42 ++++ app/Models/ApiKey.php | 11 + 4 files changed, 255 insertions(+) create mode 100644 app/Filament/Resources/ApiKeyResource.php create mode 100644 app/Filament/Resources/ApiKeyResource/Pages/CreateApiKey.php create mode 100644 app/Filament/Resources/ApiKeyResource/Pages/ListApiKeys.php diff --git a/app/Filament/Resources/ApiKeyResource.php b/app/Filament/Resources/ApiKeyResource.php new file mode 100644 index 000000000..284195a9e --- /dev/null +++ b/app/Filament/Resources/ApiKeyResource.php @@ -0,0 +1,190 @@ + Tab::make('All Keys'), + 'application' => Tab::make('Application Keys') + ->modifyQueryUsing(fn (Builder $query) => $query->where('key_type', ApiKey::TYPE_APPLICATION)), + ]; + } + + public function getDefaultActiveTab(): string | int | null + { + return 'application'; + } + + public static function form(Form $form): Form + { + return $form + ->schema([ + Forms\Components\Hidden::make('identifier')->default(ApiKey::generateTokenIdentifier(ApiKey::TYPE_APPLICATION)), + Forms\Components\Hidden::make('token')->default(encrypt(str_random(ApiKey::KEY_LENGTH))), + + Forms\Components\Select::make('user_id') + ->searchable() + ->preload() + ->relationship('user', 'username') + ->default(auth()->user()->id) + ->required(), + + Forms\Components\Select::make('key_type') + ->options(function (ApiKey $apiKey) { + $originalOptions = [ + ApiKey::TYPE_NONE => 'None', + ApiKey::TYPE_ACCOUNT => 'Account', + ApiKey::TYPE_APPLICATION => 'Application', + ApiKey::TYPE_DAEMON_USER => 'Daemon User', + ApiKey::TYPE_DAEMON_APPLICATION => 'Daemon Application', + ]; + + return collect($originalOptions) + ->filter(fn ($value, $key) => $key <= ApiKey::TYPE_APPLICATION || $apiKey->key_type === $key) + ->all(); + }) + ->selectablePlaceholder(false) + ->required() + ->default(ApiKey::TYPE_APPLICATION), + + Forms\Components\Fieldset::make('Permissions')->schema( + collect(ApiKey::RESOURCES)->map(fn ($resource) => + Forms\Components\ToggleButtons::make("r_$resource") + ->label(str($resource)->replace('_', ' ')->title()) + ->options([ + 0 => 'None', + 1 => 'Read', + // 2 => 'Write', + 3 => 'Read & Write', + ]) + ->icons([ + 0 => 'tabler-book-off', + 1 => 'tabler-book', + 2 => 'tabler-writing', + 3 => 'tabler-writing', + ]) + ->colors([ + 0 => 'primary', + 1 => 'warning', + 2 => 'danger', + 3 => 'danger', + ]) + ->inline() + ->required() + ->disabledOn('edit') + ->default(0), + )->all(), + ), + + Forms\Components\TagsInput::make('allowed_ips') + ->placeholder('Example: 127.0.0.1 or 192.168.1.1') + ->label('Whitelisted IPv4 Addresses') + ->helperText('Press enter to add a new IP address or leave blank to allow any IP address') + ->columnSpanFull() + ->hidden() + ->default(null), + + Forms\Components\Textarea::make('memo') + ->required() + ->label('Description') + ->helperText(' + Once you have assigned permissions and created this set of credentials you will be unable to come back and edit it. + If you need to make changes down the road you will need to create a new set of credentials. + ') + ->columnSpanFull(), + ]); + } + + public static function table(Table $table): Table + { + return $table + ->columns([ + Tables\Columns\TextColumn::make('user.username') + ->searchable() + ->hidden() + ->sortable(), + + Tables\Columns\TextColumn::make('key_type') + ->label('Type') + ->state(fn (ApiKey $key) => $key->type()) + ->hidden() + ->sortable(), + + Tables\Columns\TextColumn::make('key') + ->copyable() + ->state(fn (ApiKey $key) => $key->identifier . decrypt($key->token)), + + Tables\Columns\TextColumn::make('memo') + ->wrap() + ->limit(50), + + Tables\Columns\TextColumn::make('identifier') + ->hidden() + ->searchable(), + + Tables\Columns\TextColumn::make('last_used_at') + ->dateTime() + ->sortable() + ->toggleable(), + + Tables\Columns\TextColumn::make('expires_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + + Tables\Columns\TextColumn::make('created_at') + ->dateTime() + ->sortable() + ->toggleable(), + ]) + ->filters([ + // + ]) + ->actions([ + Tables\Actions\EditAction::make(), + ]) + ->bulkActions([ + Tables\Actions\BulkActionGroup::make([ + Tables\Actions\DeleteBulkAction::make(), + ]), + ]); + } + + public static function getRelations(): array + { + return [ + // + ]; + } + + public static function getPages(): array + { + return [ + 'index' => Pages\ListApiKeys::route('/'), + 'create' => Pages\CreateApiKey::route('/create'), + ]; + } +} diff --git a/app/Filament/Resources/ApiKeyResource/Pages/CreateApiKey.php b/app/Filament/Resources/ApiKeyResource/Pages/CreateApiKey.php new file mode 100644 index 000000000..2aca41e5c --- /dev/null +++ b/app/Filament/Resources/ApiKeyResource/Pages/CreateApiKey.php @@ -0,0 +1,12 @@ + Tab::make('All Keys'), + 'application' => Tab::make('Application Keys') + ->modifyQueryUsing(fn (Builder $query) => + $query->where('key_type', ApiKey::TYPE_APPLICATION) + ), + 'account' => Tab::make('Account Keys') + ->modifyQueryUsing(fn (Builder $query) => + $query->where('key_type', ApiKey::TYPE_ACCOUNT) + ), + ]; + } + + public function getDefaultActiveTab(): string | int | null + { + return 'application'; + } +} diff --git a/app/Models/ApiKey.php b/app/Models/ApiKey.php index b3a1a1bcb..42d9fe4d7 100644 --- a/app/Models/ApiKey.php +++ b/app/Models/ApiKey.php @@ -83,6 +83,8 @@ class ApiKey extends Model */ public const KEY_LENGTH = 32; + public const RESOURCES = ['servers', 'nodes', 'allocations', 'users', 'eggs', 'database_hosts', 'server_databases']; + /** * The table associated with the model. */ @@ -92,12 +94,21 @@ class ApiKey extends Model * Fields that are mass assignable. */ protected $fillable = [ + 'user_id', + 'key_type', 'identifier', 'token', 'allowed_ips', 'memo', 'last_used_at', 'expires_at', + 'r_' . AdminAcl::RESOURCE_USERS, + 'r_' . AdminAcl::RESOURCE_ALLOCATIONS, + 'r_' . AdminAcl::RESOURCE_DATABASE_HOSTS, + 'r_' . AdminAcl::RESOURCE_SERVER_DATABASES, + 'r_' . AdminAcl::RESOURCE_EGGS, + 'r_' . AdminAcl::RESOURCE_NODES, + 'r_' . AdminAcl::RESOURCE_SERVERS, ]; /** From 2dd53eee2768b6c3fcb190b06bfd451de31df226 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Mon, 8 Apr 2024 01:20:07 -0400 Subject: [PATCH 069/173] Clean up --- app/Filament/Resources/ApiKeyResource.php | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/app/Filament/Resources/ApiKeyResource.php b/app/Filament/Resources/ApiKeyResource.php index 284195a9e..8e3dbe7ba 100644 --- a/app/Filament/Resources/ApiKeyResource.php +++ b/app/Filament/Resources/ApiKeyResource.php @@ -127,17 +127,13 @@ class ApiKeyResource extends Resource ->hidden() ->sortable(), - Tables\Columns\TextColumn::make('key_type') - ->label('Type') - ->state(fn (ApiKey $key) => $key->type()) - ->hidden() - ->sortable(), - Tables\Columns\TextColumn::make('key') ->copyable() + ->icon('tabler-clipboard-text') ->state(fn (ApiKey $key) => $key->identifier . decrypt($key->token)), Tables\Columns\TextColumn::make('memo') + ->label('Description') ->wrap() ->limit(50), @@ -146,16 +142,13 @@ class ApiKeyResource extends Resource ->searchable(), Tables\Columns\TextColumn::make('last_used_at') + ->label('Last Used') ->dateTime() ->sortable() ->toggleable(), - Tables\Columns\TextColumn::make('expires_at') - ->dateTime() - ->sortable() - ->toggleable(isToggledHiddenByDefault: true), - Tables\Columns\TextColumn::make('created_at') + ->label('Created') ->dateTime() ->sortable() ->toggleable(), From 6307919546873c91678a7a36d15e2455d3d1bc43 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Tue, 9 Apr 2024 18:45:01 -0400 Subject: [PATCH 070/173] Add database hosts --- .../Resources/DatabaseHostResource.php | 121 ++++++++++++++++++ .../Pages/CreateDatabaseHost.php | 12 ++ .../Pages/EditDatabaseHost.php | 19 +++ .../Pages/ListDatabaseHosts.php | 19 +++ app/Filament/Resources/DatabaseResource.php | 2 + 5 files changed, 173 insertions(+) create mode 100644 app/Filament/Resources/DatabaseHostResource.php create mode 100644 app/Filament/Resources/DatabaseHostResource/Pages/CreateDatabaseHost.php create mode 100644 app/Filament/Resources/DatabaseHostResource/Pages/EditDatabaseHost.php create mode 100644 app/Filament/Resources/DatabaseHostResource/Pages/ListDatabaseHosts.php diff --git a/app/Filament/Resources/DatabaseHostResource.php b/app/Filament/Resources/DatabaseHostResource.php new file mode 100644 index 000000000..5ab9c4bbc --- /dev/null +++ b/app/Filament/Resources/DatabaseHostResource.php @@ -0,0 +1,121 @@ +schema([ + Forms\Components\TextInput::make('host') + ->helperText('The IP address or Domain name that should be used when attempting to connect to this MySQL host from this Panel to create new databases.') + ->required() + ->live() + ->debounce(500) + ->afterStateUpdated(fn ($state, Forms\Set $set) => $set('name', $state)) + ->maxLength(191), + Forms\Components\TextInput::make('port') + ->helperText('The port that MySQL is running on for this host.') + ->required() + ->numeric() + ->default(3306) + ->minValue(0) + ->maxValue(65535), + Forms\Components\TextInput::make('username') + ->helperText('The username of an account that has enough permissions to create new users and databases on the system.') + ->required() + ->maxLength(191), + Forms\Components\TextInput::make('password') + ->helperText('The password for the database user.') + ->password() + ->revealable() + ->maxLength(191) + ->required(), + Forms\Components\TextInput::make('name') + ->helperText('A short identifier used to distinguish this location from others. Must be between 1 and 60 characters, for example, us.nyc.lvl3.') + ->required() + ->maxLength(60), + Forms\Components\Select::make('node_id') + ->searchable() + ->preload() + ->helperText('This setting only defaults to this database host when adding a database to a server on the selected node.') + ->label('Linked Node') + ->relationship('node', 'name'), + ]); + } + + public static function table(Table $table): Table + { + return $table + ->columns([ + Tables\Columns\TextColumn::make('name') + ->searchable(), + Tables\Columns\TextColumn::make('host') + ->searchable(), + Tables\Columns\TextColumn::make('port') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('username') + ->searchable(), + Tables\Columns\TextColumn::make('max_databases') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('node.name') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('created_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + Tables\Columns\TextColumn::make('updated_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + ]) + ->filters([ + // + ]) + ->actions([ + Tables\Actions\EditAction::make(), + ]) + ->bulkActions([ + Tables\Actions\BulkActionGroup::make([ + Tables\Actions\DeleteBulkAction::make(), + ]), + ]); + } + + public static function getRelations(): array + { + return [ + // + ]; + } + + public static function getPages(): array + { + return [ + 'index' => Pages\ListDatabaseHosts::route('/'), + 'create' => Pages\CreateDatabaseHost::route('/create'), + 'edit' => Pages\EditDatabaseHost::route('/{record}/edit'), + ]; + } +} diff --git a/app/Filament/Resources/DatabaseHostResource/Pages/CreateDatabaseHost.php b/app/Filament/Resources/DatabaseHostResource/Pages/CreateDatabaseHost.php new file mode 100644 index 000000000..f4acc05bf --- /dev/null +++ b/app/Filament/Resources/DatabaseHostResource/Pages/CreateDatabaseHost.php @@ -0,0 +1,12 @@ + Date: Tue, 9 Apr 2024 18:45:31 -0400 Subject: [PATCH 071/173] Remove the top bar --- app/Filament/Resources/NodeResource.php | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/app/Filament/Resources/NodeResource.php b/app/Filament/Resources/NodeResource.php index d394674b1..330d44143 100644 --- a/app/Filament/Resources/NodeResource.php +++ b/app/Filament/Resources/NodeResource.php @@ -81,6 +81,7 @@ class NodeResource extends Resource public static function table(Table $table): Table { return $table + ->searchable(false) ->columns([ Tables\Columns\TextColumn::make('uuid') ->label('UUID') @@ -92,10 +93,13 @@ class NodeResource extends Resource ->view('livewire.columns.version-column'), Tables\Columns\TextColumn::make('name') ->icon('tabler-server-2') + ->sortable() ->searchable(), Tables\Columns\TextColumn::make('fqdn') ->label('Address') ->icon('tabler-network') + ->formatStateUsing(fn ($state) => 'node.'.fake()->word.'.com') + ->sortable() ->searchable(), Tables\Columns\TextColumn::make('memory') ->icon('tabler-device-desktop-analytics') @@ -116,20 +120,12 @@ class NodeResource extends Resource ->state(fn (Node $node) => $node->scheme === 'https'), Tables\Columns\IconColumn::make('public') ->trueIcon('tabler-eye-check') - ->falseIcon('tabler-eye-cancel') - ->sortable(), + ->falseIcon('tabler-eye-cancel'), Tables\Columns\TextColumn::make('servers_count') ->counts('servers') ->label('Servers') + ->sortable() ->icon('tabler-brand-docker'), - Tables\Columns\TextColumn::make('created_at') - ->dateTime() - ->sortable() - ->toggleable(isToggledHiddenByDefault: true), - Tables\Columns\TextColumn::make('updated_at') - ->dateTime() - ->sortable() - ->toggleable(isToggledHiddenByDefault: true), ]) ->filters([ // From 6020b8d6a8f7648c07940118b2539d36912ecfc2 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Tue, 9 Apr 2024 18:45:43 -0400 Subject: [PATCH 072/173] Small adjustments --- app/Filament/Resources/NodeResource/Pages/CreateNode.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/Filament/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Resources/NodeResource/Pages/CreateNode.php index c00a8b963..1c3ddcb31 100644 --- a/app/Filament/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Resources/NodeResource/Pages/CreateNode.php @@ -80,7 +80,7 @@ class CreateNode extends CreateRecord Forms\Components\ToggleButtons::make('dns') ->label('DNS Record Check') - ->helperText('This lets you know if your DNS record points to an IP Address.') + ->helperText('This lets you know if your DNS record correctly points to an IP Address.') ->disabled() ->inline() ->default(null) @@ -107,10 +107,11 @@ class CreateNode extends CreateRecord Forms\Components\TextInput::make('name') + ->label('Display Name') ->columnSpan(2) ->required() ->regex('/[a-zA-Z0-9_\.\- ]+/') - ->helperText('This is the display name and can be changed later. Character limits: a-Z, 0-9, and [.-_ ]') + ->helperText('This name is for display only and can be changed later.') ->maxLength(100), Forms\Components\ToggleButtons::make('scheme') @@ -120,7 +121,7 @@ class CreateNode extends CreateRecord ->inline() ->helperText(function (Forms\Get $get) { if (request()->isSecure()) { - return 'Your Panel is using a secure (SSL/TLS) connection. Therefore your Daemon must too.'; + return new HtmlString('Your Panel is using a secure SSL connection,
    so your Daemon must too.'); } if (is_ip($get('fqdn'))) { From e7055242e167344e45ae59961351f3e7c80f7129 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Tue, 9 Apr 2024 18:45:51 -0400 Subject: [PATCH 073/173] More small adjustments --- .../ServerResource/Pages/EditServer.php | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/app/Filament/Resources/ServerResource/Pages/EditServer.php b/app/Filament/Resources/ServerResource/Pages/EditServer.php index af4d8e671..fca1df519 100644 --- a/app/Filament/Resources/ServerResource/Pages/EditServer.php +++ b/app/Filament/Resources/ServerResource/Pages/EditServer.php @@ -25,11 +25,13 @@ class EditServer extends EditRecord ->columns(6) ->schema([ Forms\Components\TextInput::make('name') + ->label('Display Name') ->columnSpan(4) ->required() ->maxLength(191), Forms\Components\Select::make('owner_id') + ->label('Owner') ->columnSpan(2) ->relationship('user', 'username') ->searchable() @@ -53,8 +55,6 @@ class EditServer extends EditRecord ->required() ->columnSpanFull(), - Forms\Components\Toggle::make('skip_scripts') - ->required(), Forms\Components\TextInput::make('memory') ->label('Allocated Memory') ->suffix('MB') @@ -85,6 +85,7 @@ class EditServer extends EditRecord ->numeric(), Forms\Components\TextInput::make('cpu') + ->columnSpan(1) ->label('CPU Limit') ->suffix('%') ->required() @@ -100,6 +101,20 @@ class EditServer extends EditRecord ->suffixIcon('tabler-cpu') ->maxLength(191), + Forms\Components\ToggleButtons::make('skip_scripts') + ->label('Run Egg Install Script?') + ->columnSpan(1) + ->options([ + false => 'Yes', + true => 'Skip', + ]) + ->colors([ + false => 'primary', + true => 'danger', + ]) + ->inline() + ->required(), + Forms\Components\ToggleButtons::make('oom_disabled') ->columnSpan(2) ->label('OOM Killer') @@ -116,16 +131,25 @@ class EditServer extends EditRecord Forms\Components\Textarea::make('startup') ->required() + ->rows(4) ->columnSpanFull(), + Forms\Components\TextInput::make('image') + ->label('Docker Image') + ->columnSpan(2) ->required(), + Forms\Components\TextInput::make('allocation_limit') + ->label('Allocation Limit') ->numeric(), + Forms\Components\TextInput::make('database_limit') + ->label('Database Limit') ->numeric() ->default(0), Forms\Components\TextInput::make('backup_limit') + ->label('Backup Limit') ->required() ->numeric() ->default(0), From 195557373c1a99a2e22267d579ae112b4b92c4d2 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Tue, 9 Apr 2024 21:01:30 -0400 Subject: [PATCH 074/173] Clarify the resource name --- .../DatabaseHostResource/Pages/CreateDatabaseHost.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/Filament/Resources/DatabaseHostResource/Pages/CreateDatabaseHost.php b/app/Filament/Resources/DatabaseHostResource/Pages/CreateDatabaseHost.php index f4acc05bf..023245a62 100644 --- a/app/Filament/Resources/DatabaseHostResource/Pages/CreateDatabaseHost.php +++ b/app/Filament/Resources/DatabaseHostResource/Pages/CreateDatabaseHost.php @@ -9,4 +9,8 @@ use Filament\Resources\Pages\CreateRecord; class CreateDatabaseHost extends CreateRecord { protected static string $resource = DatabaseHostResource::class; + + protected ?string $heading = 'Database Hosts'; + + protected ?string $subheading = '(database servers that can have individual databases)'; } From 8311669e6cfb690f4c16320fa5278d9bc2450055 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Tue, 9 Apr 2024 21:01:46 -0400 Subject: [PATCH 075/173] Show valid ip address --- .../Resources/NodeResource/Pages/CreateNode.php | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/app/Filament/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Resources/NodeResource/Pages/CreateNode.php index 1c3ddcb31..8772942e4 100644 --- a/app/Filament/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Resources/NodeResource/Pages/CreateNode.php @@ -16,6 +16,8 @@ class CreateNode extends CreateRecord protected static bool $canCreateAnother = false; + protected ?string $subheading = '(a machine that runs Wings to connect back to this Panel)'; + public function form(Forms\Form $form): Forms\Form { return $form @@ -56,6 +58,8 @@ class CreateNode extends CreateRecord }) ->afterStateUpdated(function (Forms\Set $set, ?string $state) { $set('dns', null); + $set('ip', null); + [$subdomain] = str($state)->explode('.', 2); if (!is_numeric($subdomain)) { $set('name', $subdomain); @@ -67,10 +71,12 @@ class CreateNode extends CreateRecord return; } - $validRecord = checkdnsrr("$state.", 'A'); - if ($validRecord) { + $validRecords = gethostbynamel($state); + if ($validRecords) { $set('dns', true); + $set('ip', collect($validRecords)->first()); + return; } @@ -78,13 +84,18 @@ class CreateNode extends CreateRecord }) ->maxLength(191), + Forms\Components\TextInput::make('ip') + ->disabled() + ->hidden(), + Forms\Components\ToggleButtons::make('dns') ->label('DNS Record Check') ->helperText('This lets you know if your DNS record correctly points to an IP Address.') ->disabled() ->inline() ->default(null) - // ->hidden() + ->hint(fn (Forms\Get $get) => $get('ip')) + ->hintColor('success') ->options([ true => 'Valid', false => 'Invalid' From cf44e464909220a9b33130feee13b7b28dc3d326 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Tue, 9 Apr 2024 21:01:51 -0400 Subject: [PATCH 076/173] Rename to owner --- app/Filament/Resources/ServerResource.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index ee0ae0399..6646ca6f1 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -120,6 +120,7 @@ class ServerResource extends Resource ->sortable(), Tables\Columns\TextColumn::make('user.username') ->icon('tabler-user') + ->label('Owner') ->url(fn (Server $server): string => route('filament.admin.resources.users.edit', ['record' => $server->user])) ->sortable(), Tables\Columns\SelectColumn::make('allocation.id') From bc72d6103cf425f5ec6359bc8950246f955c35ee Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Tue, 9 Apr 2024 21:01:57 -0400 Subject: [PATCH 077/173] We are stars --- app/Filament/Resources/UserResource.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Filament/Resources/UserResource.php b/app/Filament/Resources/UserResource.php index 9629836bc..de65d24c6 100644 --- a/app/Filament/Resources/UserResource.php +++ b/app/Filament/Resources/UserResource.php @@ -107,8 +107,8 @@ class UserResource extends Resource Tables\Columns\IconColumn::make('root_admin') ->label('Admin') ->boolean() - ->trueIcon('tabler-adjustments-check') - ->falseIcon('tabler-adjustments-cancel') + ->trueIcon('tabler-star') + ->falseIcon('tabler-star-off') ->sortable(), Tables\Columns\IconColumn::make('use_totp')->label('2FA') ->icon(fn (User $user) => $user->use_totp ? 'tabler-lock' : 'tabler-lock-open-off') From c51687246e83057cfcda2e0f60a2096d02c89eeb Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Tue, 9 Apr 2024 21:02:02 -0400 Subject: [PATCH 078/173] Better icon --- app/Filament/Resources/UserResource/Pages/EditProfile.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Filament/Resources/UserResource/Pages/EditProfile.php b/app/Filament/Resources/UserResource/Pages/EditProfile.php index 8480952ba..d13714484 100644 --- a/app/Filament/Resources/UserResource/Pages/EditProfile.php +++ b/app/Filament/Resources/UserResource/Pages/EditProfile.php @@ -76,7 +76,7 @@ class EditProfile extends \Filament\Pages\Auth\EditProfile ]), Tab::make('Activity') - ->icon('tabler-activity') + ->icon('tabler-history') ->schema([ Repeater::make('activity') ->deletable(false) From 1660af94a52553b2c7d73037c78a8542177cf47a Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Tue, 9 Apr 2024 21:07:14 -0400 Subject: [PATCH 079/173] New revolution --- app/Models/ApiKey.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/ApiKey.php b/app/Models/ApiKey.php index 42d9fe4d7..b4d48a075 100644 --- a/app/Models/ApiKey.php +++ b/app/Models/ApiKey.php @@ -198,7 +198,7 @@ class ApiKey extends Model { Assert::oneOf($type, [self::TYPE_ACCOUNT, self::TYPE_APPLICATION]); - return $type === self::TYPE_ACCOUNT ? 'ptlc_' : 'ptla_'; + return $type === self::TYPE_ACCOUNT ? 'plcn_' : 'peli_'; } /** From 3cc29ba7b6b6c3c8aca53b17db77c4027511a61a Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Wed, 10 Apr 2024 16:11:27 -0400 Subject: [PATCH 080/173] Small adjustments --- app/Filament/Resources/ApiKeyResource.php | 2 +- app/Filament/Resources/EggResource.php | 13 +++---------- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/app/Filament/Resources/ApiKeyResource.php b/app/Filament/Resources/ApiKeyResource.php index 8e3dbe7ba..c87b48f5c 100644 --- a/app/Filament/Resources/ApiKeyResource.php +++ b/app/Filament/Resources/ApiKeyResource.php @@ -87,7 +87,7 @@ class ApiKeyResource extends Resource 3 => 'tabler-writing', ]) ->colors([ - 0 => 'primary', + 0 => 'success', 1 => 'warning', 2 => 'danger', 3 => 'danger', diff --git a/app/Filament/Resources/EggResource.php b/app/Filament/Resources/EggResource.php index 13879b548..6041cbaaf 100644 --- a/app/Filament/Resources/EggResource.php +++ b/app/Filament/Resources/EggResource.php @@ -128,16 +128,17 @@ class EggResource extends Resource public static function table(Table $table): Table { return $table + ->searchable(false) ->columns([ Tables\Columns\TextColumn::make('id') ->label('Id') - ->toggleable(isToggledHiddenByDefault: true) + ->hidden() ->searchable(), Tables\Columns\TextColumn::make('name') ->icon('tabler-egg') ->searchable(), Tables\Columns\TextColumn::make('author') - ->toggleable(isToggledHiddenByDefault: true) + ->hidden() ->searchable(), Tables\Columns\TextColumn::make('description') ->words(50) @@ -155,14 +156,6 @@ class EggResource extends Resource Tables\Columns\TextColumn::make('script_entry') ->hidden() ->searchable(), - Tables\Columns\TextColumn::make('created_at') - ->dateTime() - ->sortable() - ->toggleable(isToggledHiddenByDefault: true), - Tables\Columns\TextColumn::make('updated_at') - ->dateTime() - ->sortable() - ->toggleable(isToggledHiddenByDefault: true), ]) ->filters([ // From 89a507de695492605659913cd53345b24eb104f5 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Wed, 10 Apr 2024 17:10:13 -0400 Subject: [PATCH 081/173] Better email --- config/panel.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/panel.php b/config/panel.php index 32f68ccb6..b605675bb 100644 --- a/config/panel.php +++ b/config/panel.php @@ -24,7 +24,7 @@ return [ */ 'service' => [ - 'author' => env('APP_SERVICE_AUTHOR', 'unknown@unknown.com'), + 'author' => env('APP_SERVICE_AUTHOR', 'unknown@example.com'), ], /* From f660611ed3bcec816f42c3240e164a45495662b9 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Wed, 10 Apr 2024 17:10:25 -0400 Subject: [PATCH 082/173] Add skeleton new page --- app/Filament/Pages/Introduction.php | 12 ++++++++++++ .../views/filament/pages/introduction.blade.php | 3 +++ 2 files changed, 15 insertions(+) create mode 100644 app/Filament/Pages/Introduction.php create mode 100644 resources/views/filament/pages/introduction.blade.php diff --git a/app/Filament/Pages/Introduction.php b/app/Filament/Pages/Introduction.php new file mode 100644 index 000000000..d32e4ef35 --- /dev/null +++ b/app/Filament/Pages/Introduction.php @@ -0,0 +1,12 @@ + + + From 546dc5c449a2fb6c97580073c107f827867a8b70 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 11 Apr 2024 00:45:12 -0400 Subject: [PATCH 083/173] Fix from demo --- app/Filament/Resources/NodeResource.php | 1 - 1 file changed, 1 deletion(-) diff --git a/app/Filament/Resources/NodeResource.php b/app/Filament/Resources/NodeResource.php index 330d44143..e09989123 100644 --- a/app/Filament/Resources/NodeResource.php +++ b/app/Filament/Resources/NodeResource.php @@ -98,7 +98,6 @@ class NodeResource extends Resource Tables\Columns\TextColumn::make('fqdn') ->label('Address') ->icon('tabler-network') - ->formatStateUsing(fn ($state) => 'node.'.fake()->word.'.com') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('memory') From b2e5b4862d1f8419b51bb947880c776871345578 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 11 Apr 2024 00:45:20 -0400 Subject: [PATCH 084/173] Add nice new intro page --- app/Filament/Pages/Introduction.php | 21 +++ .../filament/pages/introduction.blade.php | 163 ++++++++++++++++++ 2 files changed, 184 insertions(+) diff --git a/app/Filament/Pages/Introduction.php b/app/Filament/Pages/Introduction.php index d32e4ef35..b60a4530f 100644 --- a/app/Filament/Pages/Introduction.php +++ b/app/Filament/Pages/Introduction.php @@ -2,6 +2,11 @@ namespace App\Filament\Pages; +use App\Filament\Resources\NodeResource\Pages\ListNodes; +use App\Models\Egg; +use App\Models\Node; +use App\Models\Server; +use App\Models\User; use Filament\Pages\Page; class Introduction extends Page @@ -9,4 +14,20 @@ class Introduction extends Page protected static ?string $navigationIcon = 'heroicon-o-document-text'; protected static string $view = 'filament.pages.introduction'; + + protected ?string $heading = ''; + + public string $activeTab = 'nodes'; + + public function getViewData(): array + { + return [ + 'inDevelopment' => config('app.version') === 'canary', + 'eggsCount' => Egg::query()->count(), + 'nodesList' => ListNodes::getUrl(), + 'nodesCount' => Node::query()->count(), + 'serversCount' => Server::query()->count(), + 'usersCount' => User::query()->count(), + ]; + } } diff --git a/resources/views/filament/pages/introduction.blade.php b/resources/views/filament/pages/introduction.blade.php index cc6147795..eb68925ff 100644 --- a/resources/views/filament/pages/introduction.blade.php +++ b/resources/views/filament/pages/introduction.blade.php @@ -1,3 +1,166 @@ + + Panel's Resources: + + + Nodes + {{ $nodesCount }} + + + + Servers + {{ $serversCount }} + + + + Eggs + {{ $eggsCount }} + + + + Users + {{ $usersCount }} + + + + + +

    You can expand the following sections:

    + + @if ($inDevelopment) + + Information for Developers + +

    Thank you for trying out the development version!

    + +

    +
    + If you run into any issues, please report them on GitHub. +
    +
    +

    + +

    + + Report Issue on GitHub + +

    + +
    + @endif + + {{-- No Nodes Created --}} + @if ($nodesCount > 0) + + Create First New Node + +

    It looks like you don't have any Nodes set up yet, but don't worry because you can follow along below:

    + +

    +
    + If you run into any issues, please report them on GitHub. +
    +
    +

    + +

    + + Create Node in Pelican + +

    + +
    + @endif + + {{-- No Nodes Active --}} + + + + Support Pelican + +

    Thank you for using Pelican, this could only be achieved through the support of you, our contributors, and the rest of our supporters!

    + +


    + +

    We appreciate any and all support from anybody.

    + +


    + + + Donate Directly + + +
    + + + + + Need Help? + +

    Check out the documentation first! If you still need assistance then, fly onto our Discord server!

    + +


    + + + Read Documentation + + + + Get Help in Discord + + +
    + +
    +
    From 6689e796a7d4931871efae2c7ed1005334d16590 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 11 Apr 2024 00:45:26 -0400 Subject: [PATCH 085/173] Better description --- app/Filament/Resources/NodeResource/Pages/CreateNode.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Filament/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Resources/NodeResource/Pages/CreateNode.php index 8772942e4..181d69895 100644 --- a/app/Filament/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Resources/NodeResource/Pages/CreateNode.php @@ -16,7 +16,7 @@ class CreateNode extends CreateRecord protected static bool $canCreateAnother = false; - protected ?string $subheading = '(a machine that runs Wings to connect back to this Panel)'; + protected ?string $subheading = 'which is a machine that runs your Servers'; public function form(Forms\Form $form): Forms\Form { From f201a5eaf6d28d16b2a23d66195c92fc1b00443f Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 11 Apr 2024 00:45:33 -0400 Subject: [PATCH 086/173] Easier to understand --- app/Filament/Resources/NodeResource/Pages/EditNode.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/Filament/Resources/NodeResource/Pages/EditNode.php b/app/Filament/Resources/NodeResource/Pages/EditNode.php index be5d75cac..1a1dba35c 100644 --- a/app/Filament/Resources/NodeResource/Pages/EditNode.php +++ b/app/Filament/Resources/NodeResource/Pages/EditNode.php @@ -34,11 +34,10 @@ class EditNode extends EditRecord Forms\Components\Placeholder::make('instructions') ->columnSpanFull() ->content(new HtmlString(' - This file should be placed in your daemon\'s root directory - (usually /etc/pelican) in a file called config.yml. + Save this file to your daemon\'s root directory, named config.yml ')), Forms\Components\Textarea::make('config') - ->label('Configuration File') + ->label('/etc/pelican/config.yml') ->disabled() ->rows(19) ->hintAction(CopyAction::make()) From a4fb9eea40c6d5ce3e3484e6cbcc590ca8ca27a7 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 11 Apr 2024 00:45:58 -0400 Subject: [PATCH 087/173] Get docker images working --- app/Filament/Resources/ServerResource.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 6646ca6f1..31503c3f6 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -4,6 +4,7 @@ namespace App\Filament\Resources; use App\Filament\Resources\ServerResource\Pages; use App\Filament\Resources\ServerResource\RelationManagers; +use App\Models\Egg; use App\Models\Node; use App\Models\Server; use Filament\Forms; @@ -41,6 +42,7 @@ class ServerResource extends Resource ->relationship('egg', 'name') ->searchable() ->preload() + ->live() ->required(), Forms\Components\Select::make('owner_id') ->relationship('user', 'username') @@ -81,11 +83,16 @@ class ServerResource extends Resource ->required() ->numeric() ->default(0), - Forms\Components\Textarea::make('startup') + + Forms\Components\Select::make('startup') ->required() ->columnSpanFull(), - Forms\Components\TextInput::make('image') + + Forms\Components\Select::make('image') + ->options(fn (Forms\Get $get) => array_flip(Egg::find($get('egg_id'))->docker_images ?? [])) + ->selectablePlaceholder(false) ->required(), + Forms\Components\TextInput::make('allocation_limit') ->numeric(), Forms\Components\TextInput::make('database_limit') From 93ec3bdfc4fe237bf2c9a773bb864f7e72e0a2e0 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 11 Apr 2024 00:51:36 -0400 Subject: [PATCH 088/173] Rename --- app/Filament/Pages/{Introduction.php => Dashboard.php} | 10 +++++++--- .../{introduction.blade.php => dashboard.blade.php} | 0 2 files changed, 7 insertions(+), 3 deletions(-) rename app/Filament/Pages/{Introduction.php => Dashboard.php} (72%) rename resources/views/filament/pages/{introduction.blade.php => dashboard.blade.php} (100%) diff --git a/app/Filament/Pages/Introduction.php b/app/Filament/Pages/Dashboard.php similarity index 72% rename from app/Filament/Pages/Introduction.php rename to app/Filament/Pages/Dashboard.php index b60a4530f..87c741908 100644 --- a/app/Filament/Pages/Introduction.php +++ b/app/Filament/Pages/Dashboard.php @@ -9,14 +9,18 @@ use App\Models\Server; use App\Models\User; use Filament\Pages\Page; -class Introduction extends Page +class Dashboard extends Page { - protected static ?string $navigationIcon = 'heroicon-o-document-text'; + protected static ?string $navigationIcon = 'tabler-layout-dashboard'; - protected static string $view = 'filament.pages.introduction'; + protected static string $view = 'filament.pages.dashboard'; protected ?string $heading = ''; + protected static ?string $title = 'Dashboard'; + + protected static ?string $slug = '/'; + public string $activeTab = 'nodes'; public function getViewData(): array diff --git a/resources/views/filament/pages/introduction.blade.php b/resources/views/filament/pages/dashboard.blade.php similarity index 100% rename from resources/views/filament/pages/introduction.blade.php rename to resources/views/filament/pages/dashboard.blade.php From d4f325e6c5cd373b453006a8d407a268e1228169 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 11 Apr 2024 00:55:30 -0400 Subject: [PATCH 089/173] Force usage of global search --- app/Filament/Resources/ApiKeyResource.php | 7 +++---- .../Resources/DatabaseHostResource.php | 7 +++---- app/Filament/Resources/MountResource.php | 1 + app/Filament/Resources/ServerResource.php | 16 ++-------------- app/Filament/Resources/UserResource.php | 18 +----------------- 5 files changed, 10 insertions(+), 39 deletions(-) diff --git a/app/Filament/Resources/ApiKeyResource.php b/app/Filament/Resources/ApiKeyResource.php index c87b48f5c..f7cd7caf7 100644 --- a/app/Filament/Resources/ApiKeyResource.php +++ b/app/Filament/Resources/ApiKeyResource.php @@ -121,6 +121,7 @@ class ApiKeyResource extends Resource public static function table(Table $table): Table { return $table + ->searchable(false) ->columns([ Tables\Columns\TextColumn::make('user.username') ->searchable() @@ -144,14 +145,12 @@ class ApiKeyResource extends Resource Tables\Columns\TextColumn::make('last_used_at') ->label('Last Used') ->dateTime() - ->sortable() - ->toggleable(), + ->sortable(), Tables\Columns\TextColumn::make('created_at') ->label('Created') ->dateTime() - ->sortable() - ->toggleable(), + ->sortable(), ]) ->filters([ // diff --git a/app/Filament/Resources/DatabaseHostResource.php b/app/Filament/Resources/DatabaseHostResource.php index 5ab9c4bbc..0d31be223 100644 --- a/app/Filament/Resources/DatabaseHostResource.php +++ b/app/Filament/Resources/DatabaseHostResource.php @@ -65,6 +65,7 @@ class DatabaseHostResource extends Resource public static function table(Table $table): Table { return $table + ->searchable(false) ->columns([ Tables\Columns\TextColumn::make('name') ->searchable(), @@ -83,12 +84,10 @@ class DatabaseHostResource extends Resource ->sortable(), Tables\Columns\TextColumn::make('created_at') ->dateTime() - ->sortable() - ->toggleable(isToggledHiddenByDefault: true), + ->sortable(), Tables\Columns\TextColumn::make('updated_at') ->dateTime() - ->sortable() - ->toggleable(isToggledHiddenByDefault: true), + ->sortable(), ]) ->filters([ // diff --git a/app/Filament/Resources/MountResource.php b/app/Filament/Resources/MountResource.php index 79e6a5cd9..8f56e413b 100644 --- a/app/Filament/Resources/MountResource.php +++ b/app/Filament/Resources/MountResource.php @@ -80,6 +80,7 @@ class MountResource extends Resource public static function table(Table $table): Table { return $table + ->searchable(false) ->columns([ Tables\Columns\TextColumn::make('uuid') ->label('UUID') diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 31503c3f6..1bc68bfda 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -108,6 +108,7 @@ class ServerResource extends Resource public static function table(Table $table): Table { return $table + ->searchable(false) ->columns([ Tables\Columns\TextColumn::make('uuid') ->hidden() @@ -141,20 +142,7 @@ class ServerResource extends Resource ->label('Backups') ->icon('tabler-file-download') ->numeric() - ->sortable() - ->toggleable(isToggledHiddenByDefault: true), - Tables\Columns\TextColumn::make('created_at') - ->dateTime() - ->sortable() - ->toggleable(isToggledHiddenByDefault: true), - Tables\Columns\TextColumn::make('updated_at') - ->dateTime() - ->sortable() - ->toggleable(isToggledHiddenByDefault: true), - Tables\Columns\TextColumn::make('installed_at') - ->dateTime() - ->sortable() - ->toggleable(isToggledHiddenByDefault: true), + ->sortable(), ]) ->filters([ // diff --git a/app/Filament/Resources/UserResource.php b/app/Filament/Resources/UserResource.php index de65d24c6..6736f71e6 100644 --- a/app/Filament/Resources/UserResource.php +++ b/app/Filament/Resources/UserResource.php @@ -80,6 +80,7 @@ class UserResource extends Resource public static function table(Table $table): Table { return $table + ->searchable(false) ->columns([ Tables\Columns\ImageColumn::make('picture') ->label('') @@ -96,14 +97,6 @@ class UserResource extends Resource Tables\Columns\TextColumn::make('email') ->searchable() ->icon('tabler-mail'), - Tables\Columns\TextColumn::make('name_first') - ->toggleable(isToggledHiddenByDefault: true) - ->label('First Name') - ->searchable(), - Tables\Columns\TextColumn::make('name_last') - ->toggleable(isToggledHiddenByDefault: true) - ->label('Last Name') - ->searchable(), Tables\Columns\IconColumn::make('root_admin') ->label('Admin') ->boolean() @@ -118,19 +111,10 @@ class UserResource extends Resource ->icon('tabler-server') ->label('Servers'), Tables\Columns\TextColumn::make('subusers_count') - ->toggleable(isToggledHiddenByDefault: true) ->counts('subusers') ->icon('tabler-users') // ->formatStateUsing(fn (string $state, $record): string => (string) ($record->servers_count + $record->subusers_count)) ->label('Subuser Accounts'), - Tables\Columns\TextColumn::make('created_at') - ->dateTime() - ->sortable() - ->toggleable(isToggledHiddenByDefault: true), - Tables\Columns\TextColumn::make('updated_at') - ->dateTime() - ->sortable() - ->toggleable(isToggledHiddenByDefault: true), ]) ->filters([ // From 6c8816c289eafceab3c01db281838ef35787f668 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 11 Apr 2024 03:08:56 -0400 Subject: [PATCH 090/173] Liven this up --- app/Filament/Resources/EggResource.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Filament/Resources/EggResource.php b/app/Filament/Resources/EggResource.php index 6041cbaaf..0ae13fe94 100644 --- a/app/Filament/Resources/EggResource.php +++ b/app/Filament/Resources/EggResource.php @@ -89,7 +89,7 @@ class EggResource extends Resource ->columnSpan(1) ->itemLabel(fn (array $state) => $state['name']) ->schema([ - Forms\Components\TextInput::make('name')->maxLength(191)->columnSpanFull(), + Forms\Components\TextInput::make('name')->live()->maxLength(191)->columnSpanFull(), Forms\Components\Textarea::make('description')->columnSpanFull(), Forms\Components\TextInput::make('env_variable')->maxLength(191), Forms\Components\TextInput::make('default_value')->maxLength(191), From a16ef9743bf9ffdcb51ea5461d3dc9412de33c08 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 11 Apr 2024 03:09:19 -0400 Subject: [PATCH 091/173] Add missing relationship --- app/Models/Server.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/Models/Server.php b/app/Models/Server.php index 0c43ea25b..8c30fb423 100644 --- a/app/Models/Server.php +++ b/app/Models/Server.php @@ -267,6 +267,11 @@ class Server extends Model }); } + public function serverVariables(): HasMany + { + return $this->hasMany(ServerVariable::class); + } + /** * Gets information for the node associated with this server. */ From c6eb6dc05498ed9eb1e1fffdaa5f52ba35a7e8d2 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 11 Apr 2024 03:11:19 -0400 Subject: [PATCH 092/173] Return all allocation ids back --- app/Services/Allocations/AssignmentService.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/Services/Allocations/AssignmentService.php b/app/Services/Allocations/AssignmentService.php index 0b6b4c01a..22db2e33f 100644 --- a/app/Services/Allocations/AssignmentService.php +++ b/app/Services/Allocations/AssignmentService.php @@ -37,7 +37,7 @@ class AssignmentService * @throws \App\Exceptions\Service\Allocation\PortOutOfRangeException * @throws \App\Exceptions\Service\Allocation\TooManyPortsInRangeException */ - public function handle(Node $node, array $data): void + public function handle(Node $node, array $data): array { $explode = explode('/', $data['allocation_ip']); if (count($explode) !== 1) { @@ -58,6 +58,8 @@ class AssignmentService } $this->connection->beginTransaction(); + + $ids = []; foreach ($parsed as $ip) { foreach ($data['allocation_ports'] as $port) { if (!is_digit($port) && !preg_match(self::PORT_RANGE_REGEX, $port)) { @@ -99,10 +101,12 @@ class AssignmentService ]; } - Allocation::query()->insertOrIgnore($insertData); + $ids = Allocation::query()->insertOrIgnore($insertData); } } $this->connection->commit(); + + return $ids; } } From 24f9a8aeb101c98ab9b5644a2aae5716707afb1f Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 11 Apr 2024 03:11:27 -0400 Subject: [PATCH 093/173] Use default --- .../ServerResource/Pages/EditServer.php | 142 ------------------ 1 file changed, 142 deletions(-) diff --git a/app/Filament/Resources/ServerResource/Pages/EditServer.php b/app/Filament/Resources/ServerResource/Pages/EditServer.php index fca1df519..af104ef17 100644 --- a/app/Filament/Resources/ServerResource/Pages/EditServer.php +++ b/app/Filament/Resources/ServerResource/Pages/EditServer.php @@ -18,146 +18,4 @@ class EditServer extends EditRecord Actions\DeleteAction::make(), ]; } - - public function form(Forms\Form $form): Forms\Form - { - return $form - ->columns(6) - ->schema([ - Forms\Components\TextInput::make('name') - ->label('Display Name') - ->columnSpan(4) - ->required() - ->maxLength(191), - - Forms\Components\Select::make('owner_id') - ->label('Owner') - ->columnSpan(2) - ->relationship('user', 'username') - ->searchable() - ->preload() - ->required(), - - Forms\Components\Select::make('allocation_id') - ->columnSpan(2) - ->label('Primary Allocation') - ->relationship('allocation', 'port') - ->getOptionLabelFromRecordUsing(fn (Allocation $allocation) => - "$allocation->ip:$allocation->port" . - ($allocation->ip_alias ? " ($allocation->ip_alias)" : '') - ) - ->searchable(['ip', 'port', 'ip_alias']) - ->required(), - - Forms\Components\Textarea::make('description') - ->hidden() - ->default('') - ->required() - ->columnSpanFull(), - - Forms\Components\TextInput::make('memory') - ->label('Allocated Memory') - ->suffix('MB') - ->required() - ->numeric(), - Forms\Components\TextInput::make('swap') - ->label('Allocated Swap') - ->suffix('MB') - ->required() - ->numeric(), - - Forms\Components\TextInput::make('disk') - ->label('Disk Space Limit') - ->suffix('MB') - ->required() - ->numeric(), - - Forms\Components\TextInput::make('io') - ->columnSpan(2) - ->label('Block IO Proportion') - ->hint('Advanced') - ->hintColor('danger') - ->required() - ->minValue(10) - ->maxValue(1000) - ->step(10) - ->default(500) - ->numeric(), - - Forms\Components\TextInput::make('cpu') - ->columnSpan(1) - ->label('CPU Limit') - ->suffix('%') - ->required() - ->numeric(), - - Forms\Components\TextInput::make('threads') - ->hidden() - ->columnSpan(2) - ->hint('Advanced') - ->hintColor('danger') - ->helperText('Examples: 0, 0-1,3, or 0,1,3,4') - ->label('CPU Pinning') - ->suffixIcon('tabler-cpu') - ->maxLength(191), - - Forms\Components\ToggleButtons::make('skip_scripts') - ->label('Run Egg Install Script?') - ->columnSpan(1) - ->options([ - false => 'Yes', - true => 'Skip', - ]) - ->colors([ - false => 'primary', - true => 'danger', - ]) - ->inline() - ->required(), - - Forms\Components\ToggleButtons::make('oom_disabled') - ->columnSpan(2) - ->label('OOM Killer') - ->inline() - ->options([ - false => 'Disabled', - true => 'Enabled', - ]) - ->colors([ - false => 'success', - true => 'danger', - ]) - ->required(), - - Forms\Components\Textarea::make('startup') - ->required() - ->rows(4) - ->columnSpanFull(), - - Forms\Components\TextInput::make('image') - ->label('Docker Image') - ->columnSpan(2) - ->required(), - - Forms\Components\TextInput::make('allocation_limit') - ->label('Allocation Limit') - ->numeric(), - - Forms\Components\TextInput::make('database_limit') - ->label('Database Limit') - ->numeric() - ->default(0), - - Forms\Components\TextInput::make('backup_limit') - ->label('Backup Limit') - ->required() - ->numeric() - ->default(0), - - Forms\Components\TextInput::make('external_id') - ->maxLength(191) - ->hidden(), - - ]); - } } From f9b93f284c11009aea24fcf7a3fb5a80dad63411 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 11 Apr 2024 03:11:51 -0400 Subject: [PATCH 094/173] Servers --- app/Filament/Resources/ServerResource.php | 272 +++++++++++++++++----- 1 file changed, 220 insertions(+), 52 deletions(-) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 1bc68bfda..cecc729bc 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -4,9 +4,11 @@ namespace App\Filament\Resources; use App\Filament\Resources\ServerResource\Pages; use App\Filament\Resources\ServerResource\RelationManagers; +use App\Models\Allocation; use App\Models\Egg; use App\Models\Node; use App\Models\Server; +use App\Services\Allocations\AssignmentService; use Filament\Forms; use Filament\Forms\Form; use Filament\Resources\Resource; @@ -14,6 +16,7 @@ use Filament\Tables; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\SoftDeletingScope; +use Illuminate\Support\HtmlString; class ServerResource extends Resource { @@ -26,82 +29,247 @@ class ServerResource extends Resource public static function form(Form $form): Form { return $form - ->columns(4) + ->columns(6) ->schema([ - Forms\Components\TextInput::make('external_id')->maxLength(191)->hidden(), + Forms\Components\TextInput::make('external_id') + ->maxLength(191) + ->hidden(), + Forms\Components\TextInput::make('name') - ->columnSpanFull() + ->label('Display Name') + ->columnSpan(4) ->required() ->maxLength(191), + + Forms\Components\Select::make('owner_id') + ->default(auth()->user()->id) + ->label('Owner') + ->columnSpan(2) + ->relationship('user', 'username') + ->searchable() + ->preload() + ->required(), + Forms\Components\Select::make('node_id') + ->columnSpan(2) + ->live() ->relationship('node', 'name') ->searchable() ->preload() ->required(), - Forms\Components\Select::make('egg_id') - ->relationship('egg', 'name') - ->searchable() - ->preload() - ->live() - ->required(), - Forms\Components\Select::make('owner_id') - ->relationship('user', 'username') - ->searchable() - ->preload() - ->default(auth()->user()->id) - ->required(), + Forms\Components\Select::make('allocation_id') - ->relationship('allocation', 'address') - ->searchable() + ->label('Primary Allocation') + ->columnSpan(3) + ->disabled(fn (Forms\Get $get) => $get('node_id') === null) + ->searchable(['ip', 'port', 'ip_alias']) + ->getOptionLabelFromRecordUsing(fn (Allocation $allocation) => + "$allocation->ip:$allocation->port" . + ($allocation->ip_alias ? " ($allocation->ip_alias)" : '') + ) + ->placeholder(function (Forms\Get $get) { + $node = Node::find($get('node_id')); + + if ($node?->allocations) { + return 'Select an Allocation'; + } + + return 'Create a New Allocation'; + }) + ->relationship( + 'allocation', + 'ip', + fn (Builder $query, Forms\Get $get) => $query->where('node_id', $get('node_id')), + ) + ->createOptionForm([ + Forms\Components\TextInput::make('allocation_ip') + ->label('IP Address') + ->required(), + Forms\Components\TextInput::make('allocation_alias') + ->label('Alias') + ->required(false), + Forms\Components\TagsInput::make('allocation_ports') + ->placeholder('Examples: 27015, 27017-27019') + ->label('Ports') + ->required(), + ]) + ->createOptionUsing(function (array $data, Forms\Get $get): int { + return collect( + resolve(AssignmentService::class)->handle(Node::find($get('node_id')), $data) + )->first(); + }) ->required(), + Forms\Components\Textarea::make('description') ->hidden() ->default('') ->required() ->columnSpanFull(), - Forms\Components\Toggle::make('skip_scripts') - ->required(), - Forms\Components\TextInput::make('memory') - ->required() - ->numeric(), - Forms\Components\TextInput::make('swap') - ->required() - ->numeric(), - Forms\Components\TextInput::make('disk') - ->required() - ->numeric(), - Forms\Components\TextInput::make('io') - ->default(500) - ->required() - ->numeric(), - Forms\Components\TextInput::make('cpu') - ->required() - ->numeric(), - Forms\Components\TextInput::make('threads') - ->maxLength(191), - Forms\Components\TextInput::make('oom_disabled') - ->required() - ->numeric() - ->default(0), - Forms\Components\Select::make('startup') - ->required() - ->columnSpanFull(), + Forms\Components\Select::make('egg_id') + ->columnSpan(2) + ->relationship('egg', 'name') + ->searchable() + ->preload() + ->live() + ->afterStateUpdated(fn ($state, Forms\Set $set) => $set('startup', Egg::find($state)->startup)) + ->required(), + + Forms\Components\ToggleButtons::make('skip_scripts') + ->label('Run Egg Install Script?') + ->default(false) + ->options([ + false => 'Yes', + true => 'Skip', + ]) + ->colors([ + false => 'primary', + true => 'danger', + ]) + ->inline() + ->required(), Forms\Components\Select::make('image') ->options(fn (Forms\Get $get) => array_flip(Egg::find($get('egg_id'))->docker_images ?? [])) ->selectablePlaceholder(false) ->required(), - Forms\Components\TextInput::make('allocation_limit') - ->numeric(), - Forms\Components\TextInput::make('database_limit') - ->numeric() - ->default(0), - Forms\Components\TextInput::make('backup_limit') + Forms\Components\TextInput::make('image') + ->label('Docker Image') + ->placeholder('Or enter a custom Image...') + ->columnSpan(2) + ->required(), + + Forms\Components\Fieldset::make('Application Feature Limits') + ->inlineLabel() + ->hiddenOn('create') + ->columns(3) + ->schema([ + Forms\Components\TextInput::make('allocation_limit') + ->required() + ->numeric() + ->default(0), + Forms\Components\TextInput::make('database_limit') + ->required() + ->numeric() + ->default(0), + Forms\Components\TextInput::make('backup_limit') + ->required() + ->numeric() + ->default(0), + ]), + + Forms\Components\Fieldset::make('Resource Management') + // ->inlineLabel() + ->hiddenOn('create') + ->columns(3) + ->schema([ + Forms\Components\TextInput::make('memory') + ->default(0) + ->label('Allocated Memory') + ->suffix('MB') + ->required() + ->numeric(), + + Forms\Components\TextInput::make('swap') + ->default(0) + ->label('Swap Memory') + ->suffix('MB') + ->helperText('0 disables swap and -1 allows unlimited swap') + ->minValue(-1) + ->required() + ->numeric(), + + Forms\Components\TextInput::make('disk') + ->default(0) + ->label('Disk Space Limit') + ->suffix('MB') + ->required() + ->numeric(), + + + Forms\Components\TextInput::make('cpu') + ->default(0) + ->label('CPU Limit') + ->suffix('%') + ->required() + ->numeric(), + + Forms\Components\TextInput::make('threads') + ->hint('Advanced') + ->hintColor('danger') + ->helperText('Examples: 0, 0-1,3, or 0,1,3,4') + ->label('CPU Pinning') + ->suffixIcon('tabler-cpu') + ->maxLength(191), + + Forms\Components\TextInput::make('io') + ->helperText('The IO performance relative to other running containers') + ->label('Block IO Proportion') + ->required() + ->minValue(10) + ->maxValue(1000) + ->step(10) + ->default(500) + ->numeric(), + + Forms\Components\ToggleButtons::make('oom_disabled') + ->label('OOM Killer') + ->inline() + ->default(false) + ->options([ + false => 'Disabled', + true => 'Enabled', + ]) + ->colors([ + false => 'success', + true => 'danger', + ]) + ->required(), + ]), + + Forms\Components\Textarea::make('startup') + ->label('Startup Command') ->required() - ->numeric() - ->default(0), + ->rows(1) + ->columnSpanFull(), + + + Forms\Components\Repeater::make('s') + ->reorderable(false) + ->addable(false) + ->deletable(false) + ->label('Egg Variables') + ->columnSpanFull() + ->grid(2) + ->default(function (Forms\Get $get) { + $variables = Egg::find($get('egg_id'))->variables ?? []; + $serverVariables = collect(); + foreach ($variables as $variable) { + $serverVariables->add($variable->toArray()); + } + + return $serverVariables->all(); + }) + // ->relationship('serverVariables') + // ->default([1, 2, 3]) + ->name('name') + // ->itemLabel(fn (array $state) => 'asdf') + ->schema([ + Forms\Components\TextInput::make('value') + ->label(fn (Forms\Get $get) => $get('name')) + ->helperText(fn (Forms\Get $get) => new HtmlString(" + {$get('description')}
    + Access in Startup: {{{$get('env_variable')}}}
    + Validation Rules: {$get('rules')} + ")) + // ->inlineLabel() + ->maxLength(191), +// Forms\Components\Textarea::make('description')->columnSpanFull(), +// Forms\Components\TextInput::make('env_variable')->maxLength(191), +// Forms\Components\TextInput::make('default_value')->maxLength(191), +// Forms\Components\Textarea::make('rules')->rows(3)->columnSpanFull()->required(), + ]) ]); } From 203289fd38f82c31d72dbddc19c8002ea4531a17 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 11 Apr 2024 11:31:25 -0400 Subject: [PATCH 095/173] =?UTF-8?q?This=20isn=E2=80=99t=20required?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Filament/Resources/ServerResource.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index cecc729bc..3e972e2ad 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -137,8 +137,7 @@ class ServerResource extends Resource Forms\Components\TextInput::make('image') ->label('Docker Image') ->placeholder('Or enter a custom Image...') - ->columnSpan(2) - ->required(), + ->columnSpan(2), Forms\Components\Fieldset::make('Application Feature Limits') ->inlineLabel() From 27f05b5f955029d5f56a81d3df921c71c6fd013e Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 11 Apr 2024 11:31:38 -0400 Subject: [PATCH 096/173] Expand text area to make it look nicer --- app/Filament/Resources/ServerResource.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 3e972e2ad..1a75be7e6 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -230,10 +230,14 @@ class ServerResource extends Resource Forms\Components\Textarea::make('startup') ->label('Startup Command') ->required() - ->rows(1) + ->live() + ->rows(function ($state) { + return str($state)->explode("\n")->reduce(fn (int $carry, $line) + => $carry + floor(strlen($line) / 125), + 0); + }) ->columnSpanFull(), - Forms\Components\Repeater::make('s') ->reorderable(false) ->addable(false) From da1bf320dd0dcfe8e773859060f75802fff8cd27 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 11 Apr 2024 11:31:51 -0400 Subject: [PATCH 097/173] Auto select latest node --- app/Filament/Resources/ServerResource.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 1a75be7e6..ec903c135 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -51,6 +51,7 @@ class ServerResource extends Resource ->required(), Forms\Components\Select::make('node_id') + ->default(fn () => Node::query()->latest()->first()->id) ->columnSpan(2) ->live() ->relationship('node', 'name') From f8550334dd009d09953da4ceea8ae2f714fe1045 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 11 Apr 2024 11:41:03 -0400 Subject: [PATCH 098/173] Helper text for creating new allocations --- app/Filament/Resources/ServerResource.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index ec903c135..739a9122a 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -85,12 +85,18 @@ class ServerResource extends Resource ->createOptionForm([ Forms\Components\TextInput::make('allocation_ip') ->label('IP Address') + ->helperText('Usually your machine\'s public IP unless you are port forwarding.') ->required(), Forms\Components\TextInput::make('allocation_alias') ->label('Alias') + ->helperText('This is just a display only name to help you recognize what this Allocation is used for.') ->required(false), Forms\Components\TagsInput::make('allocation_ports') ->placeholder('Examples: 27015, 27017-27019') + ->helperText(' + These are the ports that users can connect to this Server through. + They usually consist of the port forwarded ones. + ') ->label('Ports') ->required(), ]) From f32aa8609d4593adf9eb7d1d64480a51a78dd359 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 11 Apr 2024 11:41:29 -0400 Subject: [PATCH 099/173] Add toggle for custom image --- app/Filament/Resources/ServerResource.php | 25 +++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 739a9122a..22821e7a4 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -137,14 +137,35 @@ class ServerResource extends Resource ->required(), Forms\Components\Select::make('image') + ->hidden(fn (Forms\Get $get) => $get('custom_image')) + ->disabled(fn (Forms\Get $get) => $get('custom_image')) + ->label('Docker Image') ->options(fn (Forms\Get $get) => array_flip(Egg::find($get('egg_id'))->docker_images ?? [])) ->selectablePlaceholder(false) + ->columnSpan(2) ->required(), Forms\Components\TextInput::make('image') + ->hidden(fn (Forms\Get $get) => !$get('custom_image')) + ->disabled(fn (Forms\Get $get) => !$get('custom_image')) ->label('Docker Image') - ->placeholder('Or enter a custom Image...') - ->columnSpan(2), + ->placeholder('Enter a custom Image') + ->columnSpan(2) + ->required(), + + Forms\Components\ToggleButtons::make('custom_image') + ->live() + ->label('Custom Image?') + ->default(false) + ->options([ + false => 'No', + true => 'Yes', + ]) + ->colors([ + false => 'primary', + true => 'danger', + ]) + ->inline(), Forms\Components\Fieldset::make('Application Feature Limits') ->inlineLabel() From 297e292e069e096af46992f0db8034e763d2977e Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 11 Apr 2024 20:59:00 -0400 Subject: [PATCH 100/173] Switch favicon --- app/Providers/Filament/AdminPanelProvider.php | 2 +- public/favicon.ico | Bin 267326 -> 0 bytes 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 public/favicon.ico diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php index b13685be2..054ad3345 100644 --- a/app/Providers/Filament/AdminPanelProvider.php +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -37,7 +37,7 @@ class AdminPanelProvider extends PanelProvider ->login() ->brandName('Pelican') ->homeUrl('/') - ->favicon('/favicon.ico') + ->favicon('/pelican.ico') ->profile(EditProfile::class, false) ->colors([ 'danger' => Color::Red, diff --git a/public/favicon.ico b/public/favicon.ico deleted file mode 100644 index dbf198f25864b1c03c78676aca061fd0de03c056..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 267326 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 Date: Thu, 11 Apr 2024 20:59:35 -0400 Subject: [PATCH 101/173] logo and favicon changes --- public/pelican.ico | Bin 0 -> 267326 bytes public/pelican.svg | 181 ++++++++++++++++++ .../components/auth/LoginFormContainer.tsx | 8 +- .../components/elements/PageContentBlock.tsx | 2 +- resources/views/layouts/admin.blade.php | 2 +- resources/views/templates/wrapper.blade.php | 7 +- 6 files changed, 189 insertions(+), 11 deletions(-) create mode 100644 public/pelican.ico create mode 100644 public/pelican.svg diff --git a/public/pelican.ico b/public/pelican.ico new file mode 100644 index 0000000000000000000000000000000000000000..dbf198f25864b1c03c78676aca061fd0de03c056 GIT binary patch literal 267326 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/scripts/components/auth/LoginFormContainer.tsx b/resources/scripts/components/auth/LoginFormContainer.tsx index 096070a09..23fa6ad9a 100644 --- a/resources/scripts/components/auth/LoginFormContainer.tsx +++ b/resources/scripts/components/auth/LoginFormContainer.tsx @@ -34,12 +34,14 @@ export default forwardRef(({ title, ...props }, ref) =>
    -
    - +
    +
    {props.children}
    -

    © 2024 - {new Date().getFullYear()} 

    +

    + Pelican © 2024 - {new Date().getFullYear()}  +

    )); diff --git a/resources/scripts/components/elements/PageContentBlock.tsx b/resources/scripts/components/elements/PageContentBlock.tsx index 83e7da702..ffea8819c 100644 --- a/resources/scripts/components/elements/PageContentBlock.tsx +++ b/resources/scripts/components/elements/PageContentBlock.tsx @@ -34,7 +34,7 @@ const PageContentBlock: React.FC = ({ title, showFlashKey > Panel
    -  © 2024 - {new Date().getFullYear()} +  Pelican© 2024 - {new Date().getFullYear()}

    diff --git a/resources/views/layouts/admin.blade.php b/resources/views/layouts/admin.blade.php index c37155bae..d48fad64b 100644 --- a/resources/views/layouts/admin.blade.php +++ b/resources/views/layouts/admin.blade.php @@ -7,7 +7,7 @@ - + @include('layouts.scripts') diff --git a/resources/views/templates/wrapper.blade.php b/resources/views/templates/wrapper.blade.php index 4c2705517..8e52dc80c 100644 --- a/resources/views/templates/wrapper.blade.php +++ b/resources/views/templates/wrapper.blade.php @@ -9,12 +9,7 @@ - - - - - - + @show From d30471ae6ab78ffcc60c1616ee1987e980bd62e2 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 11 Apr 2024 21:03:06 -0400 Subject: [PATCH 102/173] Fix this around --- resources/views/filament/pages/dashboard.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/filament/pages/dashboard.blade.php b/resources/views/filament/pages/dashboard.blade.php index eb68925ff..b6d8586fd 100644 --- a/resources/views/filament/pages/dashboard.blade.php +++ b/resources/views/filament/pages/dashboard.blade.php @@ -78,7 +78,7 @@ @endif {{-- No Nodes Created --}} - @if ($nodesCount > 0) + @if ($nodesCount <= 0) Create First New Node From 21247e91c701beab433682722a6a39c5f56d4211 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Fri, 12 Apr 2024 02:03:20 -0400 Subject: [PATCH 103/173] Do the icons --- app/Filament/Resources/ServerResource.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 22821e7a4..6af5c6d62 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -36,12 +36,14 @@ class ServerResource extends Resource ->hidden(), Forms\Components\TextInput::make('name') + ->prefixIcon('tabler-server') ->label('Display Name') ->columnSpan(4) ->required() ->maxLength(191), Forms\Components\Select::make('owner_id') + ->prefixIcon('tabler-user') ->default(auth()->user()->id) ->label('Owner') ->columnSpan(2) @@ -51,6 +53,7 @@ class ServerResource extends Resource ->required(), Forms\Components\Select::make('node_id') + ->prefixIcon('tabler-server-2') ->default(fn () => Node::query()->latest()->first()->id) ->columnSpan(2) ->live() @@ -60,12 +63,12 @@ class ServerResource extends Resource ->required(), Forms\Components\Select::make('allocation_id') + ->prefixIcon('tabler-network') ->label('Primary Allocation') ->columnSpan(3) ->disabled(fn (Forms\Get $get) => $get('node_id') === null) ->searchable(['ip', 'port', 'ip_alias']) - ->getOptionLabelFromRecordUsing(fn (Allocation $allocation) => - "$allocation->ip:$allocation->port" . + ->getOptionLabelFromRecordUsing(fn (Allocation $allocation) => "$allocation->ip:$allocation->port" . ($allocation->ip_alias ? " ($allocation->ip_alias)" : '') ) ->placeholder(function (Forms\Get $get) { @@ -114,6 +117,7 @@ class ServerResource extends Resource ->columnSpanFull(), Forms\Components\Select::make('egg_id') + ->prefixIcon('tabler-egg') ->columnSpan(2) ->relationship('egg', 'name') ->searchable() @@ -140,6 +144,7 @@ class ServerResource extends Resource ->hidden(fn (Forms\Get $get) => $get('custom_image')) ->disabled(fn (Forms\Get $get) => $get('custom_image')) ->label('Docker Image') + ->prefixIcon('tabler-brand-docker') ->options(fn (Forms\Get $get) => array_flip(Egg::find($get('egg_id'))->docker_images ?? [])) ->selectablePlaceholder(false) ->columnSpan(2) @@ -214,7 +219,6 @@ class ServerResource extends Resource ->required() ->numeric(), - Forms\Components\TextInput::make('cpu') ->default(0) ->label('CPU Limit') @@ -256,6 +260,7 @@ class ServerResource extends Resource ]), Forms\Components\Textarea::make('startup') + ->hintIcon('tabler-code') ->label('Startup Command') ->required() ->live() From 695ebd35a47932af45fb4905f1ea46b4450c4a0e Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Fri, 12 Apr 2024 02:03:36 -0400 Subject: [PATCH 104/173] No another create --- app/Filament/Resources/ServerResource/Pages/CreateServer.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Filament/Resources/ServerResource/Pages/CreateServer.php b/app/Filament/Resources/ServerResource/Pages/CreateServer.php index 223cdf97b..f5cfd3bbc 100644 --- a/app/Filament/Resources/ServerResource/Pages/CreateServer.php +++ b/app/Filament/Resources/ServerResource/Pages/CreateServer.php @@ -9,4 +9,5 @@ use Filament\Resources\Pages\CreateRecord; class CreateServer extends CreateRecord { protected static string $resource = ServerResource::class; + protected static bool $canCreateAnother = false; } From 15971aaa94de619c02070068ff2b13752c0aa505 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Fri, 12 Apr 2024 02:04:03 -0400 Subject: [PATCH 105/173] Auto expand the startup command --- app/Filament/Resources/ServerResource.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 6af5c6d62..4f7ab8dc6 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -265,9 +265,8 @@ class ServerResource extends Resource ->required() ->live() ->rows(function ($state) { - return str($state)->explode("\n")->reduce(fn (int $carry, $line) - => $carry + floor(strlen($line) / 125), - 0); + return str($state)->explode("\n")->reduce(fn (int $carry, $line) => $carry + floor(strlen($line) / 125), + 0); }) ->columnSpanFull(), From cbc255ddf8fb233248b218fb9382bce63f8104b2 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Fri, 12 Apr 2024 02:04:22 -0400 Subject: [PATCH 106/173] Add server variables --- app/Filament/Resources/ServerResource.php | 104 ++++++++++++++-------- app/Models/Server.php | 5 ++ 2 files changed, 72 insertions(+), 37 deletions(-) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 4f7ab8dc6..1c58887f0 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -3,19 +3,19 @@ namespace App\Filament\Resources; use App\Filament\Resources\ServerResource\Pages; -use App\Filament\Resources\ServerResource\RelationManagers; use App\Models\Allocation; use App\Models\Egg; use App\Models\Node; use App\Models\Server; use App\Services\Allocations\AssignmentService; +use Closure; use Filament\Forms; use Filament\Forms\Form; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; -use Illuminate\Database\Eloquent\SoftDeletingScope; +use Illuminate\Support\Facades\Validator; use Illuminate\Support\HtmlString; class ServerResource extends Resource @@ -123,7 +123,22 @@ class ServerResource extends Resource ->searchable() ->preload() ->live() - ->afterStateUpdated(fn ($state, Forms\Set $set) => $set('startup', Egg::find($state)->startup)) + ->afterStateUpdated(function ($state, Forms\Set $set) { + $egg = Egg::find($state); + $set('startup', $egg->startup); + + $variables = $egg->variables ?? []; + $serverVariables = collect(); + foreach ($variables as $variable) { + $serverVariables->add($variable->toArray()); + } + + $set($path = 'server_variables', $serverVariables->all()); + for ($i = 0; $i < $serverVariables->count(); $i++) { + $set("$path.$i.variable_value", $serverVariables[$i]['default_value']); + $set("$path.$i.variable_id", $serverVariables[$i]['id']); + } + }) ->required(), Forms\Components\ToggleButtons::make('skip_scripts') @@ -270,41 +285,56 @@ class ServerResource extends Resource }) ->columnSpanFull(), - Forms\Components\Repeater::make('s') - ->reorderable(false) - ->addable(false) - ->deletable(false) - ->label('Egg Variables') - ->columnSpanFull() - ->grid(2) - ->default(function (Forms\Get $get) { - $variables = Egg::find($get('egg_id'))->variables ?? []; - $serverVariables = collect(); - foreach ($variables as $variable) { - $serverVariables->add($variable->toArray()); - } - - return $serverVariables->all(); - }) - // ->relationship('serverVariables') - // ->default([1, 2, 3]) - ->name('name') - // ->itemLabel(fn (array $state) => 'asdf') + Forms\Components\Section::make('Egg Variables') + ->icon('tabler-eggs') + ->iconColor('primary') + ->collapsible() + ->collapsed() ->schema([ - Forms\Components\TextInput::make('value') - ->label(fn (Forms\Get $get) => $get('name')) - ->helperText(fn (Forms\Get $get) => new HtmlString(" - {$get('description')}
    - Access in Startup: {{{$get('env_variable')}}}
    - Validation Rules: {$get('rules')} - ")) - // ->inlineLabel() - ->maxLength(191), -// Forms\Components\Textarea::make('description')->columnSpanFull(), -// Forms\Components\TextInput::make('env_variable')->maxLength(191), -// Forms\Components\TextInput::make('default_value')->maxLength(191), -// Forms\Components\Textarea::make('rules')->rows(3)->columnSpanFull()->required(), - ]) + Forms\Components\Placeholder::make('Select an egg first to show its variables!') + ->hidden(fn (Forms\Get $get) => !empty($get('server_variables'))), + + Forms\Components\Repeater::make('server_variables') + ->relationship('serverVariables') + ->grid(2) + ->reorderable(false) + ->addable(false) + ->deletable(false) + ->default([]) + ->hidden(fn ($state) => empty($state)) + ->afterStateUpdated(function () { + + }) + + ->schema([ + Forms\Components\TextInput::make('variable_value') + //->rule(0, fn (Forms\Get $get) => str($get('rules'))) // TODO + + ->rules([ + fn (Forms\Get $get): Closure => function (string $attribute, $value, Closure $fail) use ($get) { + $validator = Validator::make(['validatorkey' => $value], [ + 'validatorkey' => $get('rules'), + ]); + + if ($validator->fails()) { + $message = str($validator->errors()->first())->replace('validatorkey', $get('name')); + + $fail($message); + } + }, + ]) + + ->label(fn (Forms\Get $get) => $get('name')) + ->hint(fn (Forms\Get $get) => $get('rules')) + ->prefix(fn (Forms\Get $get) => '{{' . $get('env_variable') . '}}') + + ->helperText(fn (Forms\Get $get) => empty($get('description')) ? '—' : $get('description')) + ->maxLength(191), + + Forms\Components\Hidden::make('variable_id')->default(0) + ]) + ->columnSpanFull(), + ]), ]); } diff --git a/app/Models/Server.php b/app/Models/Server.php index 8c30fb423..b96198d69 100644 --- a/app/Models/Server.php +++ b/app/Models/Server.php @@ -251,6 +251,11 @@ class Server extends Model return $this->hasOne(Egg::class, 'id', 'egg_id'); } + public function eggVariables(): HasMany + { + return $this->hasMany(EggVariable::class, 'egg_id', 'egg_id'); + } + /** * Gets information for the egg variables associated with this server. */ From 180bfc30a80316f747967dcebbb2c6f5387d1276 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Fri, 12 Apr 2024 02:29:39 -0400 Subject: [PATCH 107/173] Add server name generator --- app/Filament/Resources/ServerResource.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 1c58887f0..d45d05917 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -38,6 +38,15 @@ class ServerResource extends Resource Forms\Components\TextInput::make('name') ->prefixIcon('tabler-server') ->label('Display Name') + ->suffixAction(Forms\Components\Actions\Action::make('random') + ->icon('tabler-dice-' . random_int(1, 6)) + ->color('primary') + ->action(function (Forms\Set $set, Forms\Get $get) { + $egg = Egg::find($get('egg_id')); + $prefix = $egg ? str($egg->name)->lower()->snake() . '-' : ''; + + $set('name', $prefix . fake()->domainWord); + })) ->columnSpan(4) ->required() ->maxLength(191), From ecf54a30258f15483f736dfb19af0dc0fad1c6b2 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Fri, 12 Apr 2024 02:31:25 -0400 Subject: [PATCH 108/173] Double down on this to fix validation --- app/Filament/Resources/ServerResource.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index d45d05917..982374f89 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -136,6 +136,8 @@ class ServerResource extends Resource $egg = Egg::find($state); $set('startup', $egg->startup); + $set('image', array_flip($egg->docker_images ?? [])); + $variables = $egg->variables ?? []; $serverVariables = collect(); foreach ($variables as $variable) { From 65acb3fd94fbfe6d59879e53870f2e0f2d909e91 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Fri, 12 Apr 2024 02:31:31 -0400 Subject: [PATCH 109/173] Add more icons --- app/Filament/Resources/ServerResource.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 982374f89..212d40c3b 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -163,6 +163,10 @@ class ServerResource extends Resource false => 'primary', true => 'danger', ]) + ->icons([ + false => 'tabler-code', + true => 'tabler-code-off', + ]) ->inline() ->required(), @@ -196,6 +200,10 @@ class ServerResource extends Resource false => 'primary', true => 'danger', ]) + ->icons([ + false => 'tabler-settings-cancel', + true => 'tabler-settings-check', + ]) ->inline(), Forms\Components\Fieldset::make('Application Feature Limits') From d52cb4c7d7ba99718c48d84ea79ebdf67706e012 Mon Sep 17 00:00:00 2001 From: Scai <59282365+alexevladgabriel@users.noreply.github.com> Date: Fri, 12 Apr 2024 18:01:24 +0300 Subject: [PATCH 110/173] round the avatar --- app/Filament/Resources/UserResource.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Filament/Resources/UserResource.php b/app/Filament/Resources/UserResource.php index 6736f71e6..824928a88 100644 --- a/app/Filament/Resources/UserResource.php +++ b/app/Filament/Resources/UserResource.php @@ -84,6 +84,7 @@ class UserResource extends Resource ->columns([ Tables\Columns\ImageColumn::make('picture') ->label('') + ->extraImgAttributes(['class' => 'rounded-full']) ->defaultImageUrl(fn (User $user) => 'https://gravatar.com/avatar/' . md5(strtolower($user->email))), Tables\Columns\TextColumn::make('external_id') ->searchable() From af4d1d1fee2df3ca0e5ac991f069b5146d3d6345 Mon Sep 17 00:00:00 2001 From: Scai <59282365+alexevladgabriel@users.noreply.github.com> Date: Fri, 12 Apr 2024 18:19:39 +0300 Subject: [PATCH 111/173] lower the size of logo on login --- resources/scripts/components/auth/LoginFormContainer.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/scripts/components/auth/LoginFormContainer.tsx b/resources/scripts/components/auth/LoginFormContainer.tsx index 23fa6ad9a..4e4db201e 100644 --- a/resources/scripts/components/auth/LoginFormContainer.tsx +++ b/resources/scripts/components/auth/LoginFormContainer.tsx @@ -35,7 +35,7 @@ export default forwardRef(({ title, ...props }, ref) =>
    - +
    {props.children}
    From 4c2278a7f2b23a1410e83f90758b6436907f2045 Mon Sep 17 00:00:00 2001 From: Scai <59282365+alexevladgabriel@users.noreply.github.com> Date: Fri, 12 Apr 2024 19:09:01 +0300 Subject: [PATCH 112/173] fix route missing on database hosts --- app/Filament/Resources/DatabaseHostResource.php | 1 - app/Models/DatabaseHost.php | 5 +++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/Filament/Resources/DatabaseHostResource.php b/app/Filament/Resources/DatabaseHostResource.php index 0d31be223..3693f161f 100644 --- a/app/Filament/Resources/DatabaseHostResource.php +++ b/app/Filament/Resources/DatabaseHostResource.php @@ -72,7 +72,6 @@ class DatabaseHostResource extends Resource Tables\Columns\TextColumn::make('host') ->searchable(), Tables\Columns\TextColumn::make('port') - ->numeric() ->sortable(), Tables\Columns\TextColumn::make('username') ->searchable(), diff --git a/app/Models/DatabaseHost.php b/app/Models/DatabaseHost.php index 06c13e1ed..e06c3b957 100644 --- a/app/Models/DatabaseHost.php +++ b/app/Models/DatabaseHost.php @@ -65,6 +65,11 @@ class DatabaseHost extends Model ]; } + public function getRouteKeyName(): string + { + return 'id'; + } + /** * Gets the node associated with a database host. */ From 8575f1b036125ad3105fcb42f3eea8940f6f12c6 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Fri, 12 Apr 2024 12:18:41 -0400 Subject: [PATCH 113/173] More icons and a couple tweaks --- app/Filament/Resources/ServerResource.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 212d40c3b..6f8cc05c3 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -62,6 +62,7 @@ class ServerResource extends Resource ->required(), Forms\Components\Select::make('node_id') + ->disabledOn('edit') ->prefixIcon('tabler-server-2') ->default(fn () => Node::query()->latest()->first()->id) ->columnSpan(2) @@ -212,14 +213,17 @@ class ServerResource extends Resource ->columns(3) ->schema([ Forms\Components\TextInput::make('allocation_limit') + ->suffixIcon('tabler-network') ->required() ->numeric() ->default(0), Forms\Components\TextInput::make('database_limit') + ->suffixIcon('tabler-database') ->required() ->numeric() ->default(0), Forms\Components\TextInput::make('backup_limit') + ->suffixIcon('tabler-copy-check') ->required() ->numeric() ->default(0), @@ -290,6 +294,10 @@ class ServerResource extends Resource false => 'success', true => 'danger', ]) + ->icons([ + false => 'tabler-sword-off', + true => 'tabler-sword', + ]) ->required(), ]), @@ -327,8 +335,6 @@ class ServerResource extends Resource ->schema([ Forms\Components\TextInput::make('variable_value') - //->rule(0, fn (Forms\Get $get) => str($get('rules'))) // TODO - ->rules([ fn (Forms\Get $get): Closure => function (string $attribute, $value, Closure $fail) use ($get) { $validator = Validator::make(['validatorkey' => $value], [ From 05e9f12dc482396941a9a3e3f732a7800d30c783 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Fri, 12 Apr 2024 12:52:00 -0400 Subject: [PATCH 114/173] Switch default path --- app/Console/Commands/Node/MakeNodeCommand.php | 2 +- app/Models/Mount.php | 4 ++-- database/Factories/NodeFactory.php | 2 +- resources/views/admin/nodes/new.blade.php | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/Console/Commands/Node/MakeNodeCommand.php b/app/Console/Commands/Node/MakeNodeCommand.php index 6c370fa28..4cf36452c 100644 --- a/app/Console/Commands/Node/MakeNodeCommand.php +++ b/app/Console/Commands/Node/MakeNodeCommand.php @@ -60,7 +60,7 @@ class MakeNodeCommand extends Command $data['upload_size'] = $this->option('uploadSize') ?? $this->ask('Enter the maximum filesize upload', '100'); $data['daemonListen'] = $this->option('daemonListeningPort') ?? $this->ask('Enter the daemon listening port', '8080'); $data['daemonSFTP'] = $this->option('daemonSFTPPort') ?? $this->ask('Enter the daemon SFTP listening port', '2022'); - $data['daemonBase'] = $this->option('daemonBase') ?? $this->ask('Enter the base folder', '/var/lib/panel/volumes'); + $data['daemonBase'] = $this->option('daemonBase') ?? $this->ask('Enter the base folder', '/var/lib/pelican/volumes'); $node = $this->creationService->handle($data); $this->line('Successfully created a new node with the name ' . $data['name'] . ' and has an id of ' . $node->id . '.'); diff --git a/app/Models/Mount.php b/app/Models/Mount.php index f372a4989..0e0367293 100644 --- a/app/Models/Mount.php +++ b/app/Models/Mount.php @@ -71,8 +71,8 @@ class Mount extends Model * Blacklisted source paths. */ public static $invalidSourcePaths = [ - '/etc/panel', - '/var/lib/panel/volumes', + '/etc/pelican', + '/var/lib/pelican/volumes', '/srv/daemon-data', ]; diff --git a/database/Factories/NodeFactory.php b/database/Factories/NodeFactory.php index d8a7fff22..c879683bb 100644 --- a/database/Factories/NodeFactory.php +++ b/database/Factories/NodeFactory.php @@ -38,7 +38,7 @@ class NodeFactory extends Factory 'daemon_token' => Crypt::encrypt(Str::random(Node::DAEMON_TOKEN_LENGTH)), 'daemonListen' => 8080, 'daemonSFTP' => 2022, - 'daemonBase' => '/var/lib/panel/volumes', + 'daemonBase' => '/var/lib/pelican/volumes', ]; } } diff --git a/resources/views/admin/nodes/new.blade.php b/resources/views/admin/nodes/new.blade.php index a51bdc189..2bdcaddff 100644 --- a/resources/views/admin/nodes/new.blade.php +++ b/resources/views/admin/nodes/new.blade.php @@ -95,7 +95,7 @@
    - +

    Enter the directory where server files should be stored. If you use OVH you should check your partition scheme. You may need to use /home/daemon-data to have enough space.

    From 99693367d3ae76c5899b254ff1c82111d95993b5 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Fri, 12 Apr 2024 13:05:04 -0400 Subject: [PATCH 115/173] Simplify and restrict api keys --- app/Filament/Resources/ApiKeyResource.php | 2 ++ app/Filament/Resources/ApiKeyResource/Pages/CreateApiKey.php | 2 ++ 2 files changed, 4 insertions(+) diff --git a/app/Filament/Resources/ApiKeyResource.php b/app/Filament/Resources/ApiKeyResource.php index f7cd7caf7..8ca749614 100644 --- a/app/Filament/Resources/ApiKeyResource.php +++ b/app/Filament/Resources/ApiKeyResource.php @@ -46,6 +46,7 @@ class ApiKeyResource extends Resource Forms\Components\Hidden::make('token')->default(encrypt(str_random(ApiKey::KEY_LENGTH))), Forms\Components\Select::make('user_id') + ->hidden() ->searchable() ->preload() ->relationship('user', 'username') @@ -66,6 +67,7 @@ class ApiKeyResource extends Resource ->filter(fn ($value, $key) => $key <= ApiKey::TYPE_APPLICATION || $apiKey->key_type === $key) ->all(); }) + ->hidden() ->selectablePlaceholder(false) ->required() ->default(ApiKey::TYPE_APPLICATION), diff --git a/app/Filament/Resources/ApiKeyResource/Pages/CreateApiKey.php b/app/Filament/Resources/ApiKeyResource/Pages/CreateApiKey.php index 2aca41e5c..04712736e 100644 --- a/app/Filament/Resources/ApiKeyResource/Pages/CreateApiKey.php +++ b/app/Filament/Resources/ApiKeyResource/Pages/CreateApiKey.php @@ -9,4 +9,6 @@ use Filament\Resources\Pages\CreateRecord; class CreateApiKey extends CreateRecord { protected static string $resource = ApiKeyResource::class; + + protected ?string $heading = 'Create Application API Key'; } From a9a39ae50251484eb6f1f6ba657a67e812627964 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Fri, 12 Apr 2024 13:05:12 -0400 Subject: [PATCH 116/173] Set defaults --- app/Filament/Resources/EggResource.php | 1 + app/Filament/Resources/ServerResource.php | 1 + 2 files changed, 2 insertions(+) diff --git a/app/Filament/Resources/EggResource.php b/app/Filament/Resources/EggResource.php index 0ae13fe94..61d5f95d4 100644 --- a/app/Filament/Resources/EggResource.php +++ b/app/Filament/Resources/EggResource.php @@ -129,6 +129,7 @@ class EggResource extends Resource { return $table ->searchable(false) + ->defaultPaginationPageOption(25) ->columns([ Tables\Columns\TextColumn::make('id') ->label('Id') diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 6f8cc05c3..66c46556b 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -127,6 +127,7 @@ class ServerResource extends Resource ->columnSpanFull(), Forms\Components\Select::make('egg_id') + ->disabledOn('edit') ->prefixIcon('tabler-egg') ->columnSpan(2) ->relationship('egg', 'name') From 4c099055034f5481cc4d16534e36a1d99e0a6173 Mon Sep 17 00:00:00 2001 From: Scai <59282365+alexevladgabriel@users.noreply.github.com> Date: Fri, 12 Apr 2024 20:15:57 +0300 Subject: [PATCH 117/173] fix error on no node created --- app/Filament/Resources/ServerResource.php | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 66c46556b..044610891 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -64,7 +64,7 @@ class ServerResource extends Resource Forms\Components\Select::make('node_id') ->disabledOn('edit') ->prefixIcon('tabler-server-2') - ->default(fn () => Node::query()->latest()->first()->id) + ->default(fn () => Node::query()->latest()->first()?->id) ->columnSpan(2) ->live() ->relationship('node', 'name') @@ -78,8 +78,9 @@ class ServerResource extends Resource ->columnSpan(3) ->disabled(fn (Forms\Get $get) => $get('node_id') === null) ->searchable(['ip', 'port', 'ip_alias']) - ->getOptionLabelFromRecordUsing(fn (Allocation $allocation) => "$allocation->ip:$allocation->port" . - ($allocation->ip_alias ? " ($allocation->ip_alias)" : '') + ->getOptionLabelFromRecordUsing( + fn (Allocation $allocation) => "$allocation->ip:$allocation->port" . + ($allocation->ip_alias ? " ($allocation->ip_alias)" : '') ) ->placeholder(function (Forms\Get $get) { $node = Node::find($get('node_id')); @@ -308,8 +309,10 @@ class ServerResource extends Resource ->required() ->live() ->rows(function ($state) { - return str($state)->explode("\n")->reduce(fn (int $carry, $line) => $carry + floor(strlen($line) / 125), - 0); + return str($state)->explode("\n")->reduce( + fn (int $carry, $line) => $carry + floor(strlen($line) / 125), + 0 + ); }) ->columnSpanFull(), @@ -331,7 +334,6 @@ class ServerResource extends Resource ->default([]) ->hidden(fn ($state) => empty($state)) ->afterStateUpdated(function () { - }) ->schema([ From de02e8853d33e96ac1c3d710ad57a83d410a83f2 Mon Sep 17 00:00:00 2001 From: Scai <59282365+alexevladgabriel@users.noreply.github.com> Date: Fri, 12 Apr 2024 20:36:30 +0300 Subject: [PATCH 118/173] add mounts icons columns --- app/Filament/Resources/MountResource.php | 15 +++++++++------ app/Models/Mount.php | 5 +++++ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/app/Filament/Resources/MountResource.php b/app/Filament/Resources/MountResource.php index 8f56e413b..8056f4574 100644 --- a/app/Filament/Resources/MountResource.php +++ b/app/Filament/Resources/MountResource.php @@ -82,8 +82,8 @@ class MountResource extends Resource return $table ->searchable(false) ->columns([ - Tables\Columns\TextColumn::make('uuid') - ->label('UUID') + Tables\Columns\TextColumn::make('id') + ->label('') ->searchable(), Tables\Columns\TextColumn::make('name') ->searchable(), @@ -91,11 +91,14 @@ class MountResource extends Resource ->searchable(), Tables\Columns\TextColumn::make('target') ->searchable(), - Tables\Columns\TextColumn::make('read_only') - ->numeric() + Tables\Columns\IconColumn::make('read_only') + ->icon(fn (bool $state) => $state ? 'tabler-circle-check-filled' : 'tabler-circle-x-filled') + ->color(fn (bool $state) => $state ? 'success' : 'danger') ->sortable(), - Tables\Columns\TextColumn::make('user_mountable') - ->numeric() + Tables\Columns\IconColumn::make('user_mountable') + ->hidden() + ->icon(fn (bool $state) => $state ? 'tabler-circle-check-filled' : 'tabler-circle-x-filled') + ->color(fn (bool $state) => $state ? 'success' : 'danger') ->sortable(), ]) ->filters([ diff --git a/app/Models/Mount.php b/app/Models/Mount.php index 0e0367293..2b10b1b94 100644 --- a/app/Models/Mount.php +++ b/app/Models/Mount.php @@ -115,4 +115,9 @@ class Mount extends Model { return $this->belongsToMany(Server::class); } + + public function getRouteKeyName(): string + { + return 'id'; + } } From f25bd33f067a0b6825a9a299b018359c44c3e5f4 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Fri, 12 Apr 2024 14:59:54 -0400 Subject: [PATCH 119/173] Add data lists --- app/Filament/Resources/ServerResource.php | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 66c46556b..440dbf57c 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -95,13 +95,32 @@ class ServerResource extends Resource 'ip', fn (Builder $query, Forms\Get $get) => $query->where('node_id', $get('node_id')), ) - ->createOptionForm([ + ->createOptionForm(fn (Forms\Get $get) => [ Forms\Components\TextInput::make('allocation_ip') + ->ipv4() + ->datalist(function () use ($get) { + $node = Node::find($get('node_id')); + if (is_ip($node->fqdn)) { + return [$node->fqdn]; + } + + $validRecords = gethostbynamel($node->fqdn); + if (!$validRecords) { + return []; + } + + return $validRecords ?: []; + }) ->label('IP Address') - ->helperText('Usually your machine\'s public IP unless you are port forwarding.') + ->helperText("Usually your machine's public IP unless you are port forwarding.") ->required(), Forms\Components\TextInput::make('allocation_alias') ->label('Alias') + ->default(null) + ->datalist([ + $get('name'), + Egg::find($get('egg_id'))?->name, + ]) ->helperText('This is just a display only name to help you recognize what this Allocation is used for.') ->required(false), Forms\Components\TagsInput::make('allocation_ports') From 9fafe2f42ced7bac42c582e9d8eabe46fabd5c45 Mon Sep 17 00:00:00 2001 From: Scai <59282365+alexevladgabriel@users.noreply.github.com> Date: Sat, 13 Apr 2024 14:52:22 +0300 Subject: [PATCH 120/173] remove timestamp columns --- app/Filament/Resources/DatabaseHostResource.php | 6 ------ 1 file changed, 6 deletions(-) diff --git a/app/Filament/Resources/DatabaseHostResource.php b/app/Filament/Resources/DatabaseHostResource.php index 3693f161f..85e349eb8 100644 --- a/app/Filament/Resources/DatabaseHostResource.php +++ b/app/Filament/Resources/DatabaseHostResource.php @@ -81,12 +81,6 @@ class DatabaseHostResource extends Resource Tables\Columns\TextColumn::make('node.name') ->numeric() ->sortable(), - Tables\Columns\TextColumn::make('created_at') - ->dateTime() - ->sortable(), - Tables\Columns\TextColumn::make('updated_at') - ->dateTime() - ->sortable(), ]) ->filters([ // From 25c1b251a34e29f00a957255ca81b7d685877bd2 Mon Sep 17 00:00:00 2001 From: Scai <59282365+alexevladgabriel@users.noreply.github.com> Date: Sat, 13 Apr 2024 16:23:05 +0300 Subject: [PATCH 121/173] added eggs, nodes relationship, structured the layout --- app/Filament/Resources/MountResource.php | 127 +++++++++++++---------- 1 file changed, 74 insertions(+), 53 deletions(-) diff --git a/app/Filament/Resources/MountResource.php b/app/Filament/Resources/MountResource.php index 8056f4574..dcf1be8ca 100644 --- a/app/Filament/Resources/MountResource.php +++ b/app/Filament/Resources/MountResource.php @@ -3,15 +3,15 @@ namespace App\Filament\Resources; use App\Filament\Resources\MountResource\Pages; -use App\Filament\Resources\MountResource\RelationManagers; use App\Models\Mount; use Filament\Forms; +use Filament\Forms\Components\Group; +use Filament\Forms\Components\Section; +use Filament\Forms\Components\Select; use Filament\Forms\Form; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; -use Illuminate\Database\Eloquent\Builder; -use Illuminate\Database\Eloquent\SoftDeletingScope; class MountResource extends Resource { @@ -23,57 +23,78 @@ class MountResource extends Resource { return $form ->schema([ - Forms\Components\TextInput::make('name') - ->required() - ->helperText('Unique name used to separate this mount from another.') - ->maxLength(191), - Forms\Components\ToggleButtons::make('read_only') - ->label('Read only?') - ->helperText('Is the mount read only inside the container?') - ->options([ - false => 'Writeable', - true => 'Read only', + Section::make()->schema([ + Forms\Components\TextInput::make('name') + ->required() + ->helperText('Unique name used to separate this mount from another.') + ->maxLength(64), + Forms\Components\ToggleButtons::make('read_only') + ->label('Read only?') + ->helperText('Is the mount read only inside the container?') + ->options([ + false => 'Writeable', + true => 'Read only', + ]) + ->icons([ + false => 'tabler-writing', + true => 'tabler-writing-off', + ]) + ->colors([ + false => 'warning', + true => 'success', + ]) + ->inline() + ->default(false) + ->required(), + Forms\Components\TextInput::make('source') + ->required() + ->helperText('File path on the host system to mount to a container.') + ->maxLength(191), + Forms\Components\TextInput::make('target') + ->required() + ->helperText('Where the mount will be accessible inside a container.') + ->maxLength(191), + Forms\Components\ToggleButtons::make('user_mountable') + ->hidden() + ->label('User mountable?') + ->options([ + false => 'No', + true => 'Yes', + ]) + ->icons([ + false => 'tabler-user-cancel', + true => 'tabler-user-bolt', + ]) + ->colors([ + false => 'success', + true => 'warning', + ]) + ->default(false) + ->inline() + ->required(), + Forms\Components\Textarea::make('description') + ->helperText('A longer description for this mount.') + ->columnSpanFull(), + ])->columnSpan(2)->columns([ + 'default' => 1, + 'lg' => 2, + ]), + Group::make()->schema([ + Section::make()->schema([ + Select::make('eggs')->multiple() + ->relationship('eggs', 'name') + ->preload(), + Select::make('nodes')->multiple() + ->relationship('nodes', 'name') + ->searchable(['name', 'fqdn']) + ->preload(), ]) - ->icons([ - false => 'tabler-writing', - true => 'tabler-writing-off', - ]) - ->colors([ - false => 'warning', - true => 'success', - ]) - ->inline() - ->default(false) - ->required(), - Forms\Components\TextInput::make('source') - ->required() - ->helperText('File path on the host system to mount to a container.') - ->maxLength(191), - Forms\Components\TextInput::make('target') - ->required() - ->helperText('Where the mount will be accessible inside a container.') - ->maxLength(191), - Forms\Components\ToggleButtons::make('user_mountable') - ->hidden() - ->label('User mountable?') - ->options([ - false => 'No', - true => 'Yes', - ]) - ->icons([ - false => 'tabler-user-cancel', - true => 'tabler-user-bolt', - ]) - ->colors([ - false => 'success', - true => 'warning', - ]) - ->default(false) - ->inline() - ->required(), - Forms\Components\Textarea::make('description') - ->helperText('A longer description for this mount.') - ->columnSpanFull(), + ])->columns([ + 'default' => 1, + ]), + ])->columns([ + 'default' => 1, + 'lg' => 3, ]); } From f26373dfd5b91c52c1ff896337bdf3efcf57f3b1 Mon Sep 17 00:00:00 2001 From: Scai <59282365+alexevladgabriel@users.noreply.github.com> Date: Sat, 13 Apr 2024 16:30:20 +0300 Subject: [PATCH 122/173] linting --- app/Filament/Resources/ApiKeyResource.php | 53 +++++++++---------- .../ApiKeyResource/Pages/CreateApiKey.php | 1 - .../ApiKeyResource/Pages/ListApiKeys.php | 8 ++- .../Resources/DatabaseHostResource.php | 3 -- .../Pages/CreateDatabaseHost.php | 1 - app/Filament/Resources/DatabaseResource.php | 3 -- .../DatabaseResource/Pages/CreateDatabase.php | 1 - app/Filament/Resources/EggResource.php | 3 +- .../Resources/EggResource/Pages/CreateEgg.php | 1 - .../Resources/EggResource/Pages/ListEggs.php | 2 +- app/Filament/Resources/MountResource.php | 2 +- .../MountResource/Pages/CreateMount.php | 1 - .../NodeResource/Pages/CreateNode.php | 9 +--- .../Resources/NodeResource/Pages/EditNode.php | 4 +- app/Filament/Resources/ServerResource.php | 3 +- .../ServerResource/Pages/CreateServer.php | 1 - .../ServerResource/Pages/EditServer.php | 2 - app/Filament/Resources/UserResource.php | 3 -- .../UserResource/Pages/CreateUser.php | 1 - .../UserResource/Pages/EditProfile.php | 5 +- app/Models/Node.php | 1 - app/Models/User.php | 4 +- app/Services/Eggs/EggParserService.php | 1 + 23 files changed, 42 insertions(+), 71 deletions(-) diff --git a/app/Filament/Resources/ApiKeyResource.php b/app/Filament/Resources/ApiKeyResource.php index 8ca749614..307799221 100644 --- a/app/Filament/Resources/ApiKeyResource.php +++ b/app/Filament/Resources/ApiKeyResource.php @@ -33,7 +33,7 @@ class ApiKeyResource extends Resource ]; } - public function getDefaultActiveTab(): string | int | null + public function getDefaultActiveTab(): string|int|null { return 'application'; } @@ -73,32 +73,31 @@ class ApiKeyResource extends Resource ->default(ApiKey::TYPE_APPLICATION), Forms\Components\Fieldset::make('Permissions')->schema( - collect(ApiKey::RESOURCES)->map(fn ($resource) => - Forms\Components\ToggleButtons::make("r_$resource") - ->label(str($resource)->replace('_', ' ')->title()) - ->options([ - 0 => 'None', - 1 => 'Read', - // 2 => 'Write', - 3 => 'Read & Write', - ]) - ->icons([ - 0 => 'tabler-book-off', - 1 => 'tabler-book', - 2 => 'tabler-writing', - 3 => 'tabler-writing', - ]) - ->colors([ - 0 => 'success', - 1 => 'warning', - 2 => 'danger', - 3 => 'danger', - ]) - ->inline() - ->required() - ->disabledOn('edit') - ->default(0), - )->all(), + collect(ApiKey::RESOURCES)->map(fn ($resource) => Forms\Components\ToggleButtons::make("r_$resource") + ->label(str($resource)->replace('_', ' ')->title()) + ->options([ + 0 => 'None', + 1 => 'Read', + // 2 => 'Write', + 3 => 'Read & Write', + ]) + ->icons([ + 0 => 'tabler-book-off', + 1 => 'tabler-book', + 2 => 'tabler-writing', + 3 => 'tabler-writing', + ]) + ->colors([ + 0 => 'success', + 1 => 'warning', + 2 => 'danger', + 3 => 'danger', + ]) + ->inline() + ->required() + ->disabledOn('edit') + ->default(0), + )->all(), ), Forms\Components\TagsInput::make('allowed_ips') diff --git a/app/Filament/Resources/ApiKeyResource/Pages/CreateApiKey.php b/app/Filament/Resources/ApiKeyResource/Pages/CreateApiKey.php index 04712736e..6dfaf6335 100644 --- a/app/Filament/Resources/ApiKeyResource/Pages/CreateApiKey.php +++ b/app/Filament/Resources/ApiKeyResource/Pages/CreateApiKey.php @@ -3,7 +3,6 @@ namespace App\Filament\Resources\ApiKeyResource\Pages; use App\Filament\Resources\ApiKeyResource; -use Filament\Actions; use Filament\Resources\Pages\CreateRecord; class CreateApiKey extends CreateRecord diff --git a/app/Filament/Resources/ApiKeyResource/Pages/ListApiKeys.php b/app/Filament/Resources/ApiKeyResource/Pages/ListApiKeys.php index 441f74c04..61ba51100 100644 --- a/app/Filament/Resources/ApiKeyResource/Pages/ListApiKeys.php +++ b/app/Filament/Resources/ApiKeyResource/Pages/ListApiKeys.php @@ -25,17 +25,15 @@ class ListApiKeys extends ListRecords return [ 'all' => Tab::make('All Keys'), 'application' => Tab::make('Application Keys') - ->modifyQueryUsing(fn (Builder $query) => - $query->where('key_type', ApiKey::TYPE_APPLICATION) + ->modifyQueryUsing(fn (Builder $query) => $query->where('key_type', ApiKey::TYPE_APPLICATION) ), 'account' => Tab::make('Account Keys') - ->modifyQueryUsing(fn (Builder $query) => - $query->where('key_type', ApiKey::TYPE_ACCOUNT) + ->modifyQueryUsing(fn (Builder $query) => $query->where('key_type', ApiKey::TYPE_ACCOUNT) ), ]; } - public function getDefaultActiveTab(): string | int | null + public function getDefaultActiveTab(): string|int|null { return 'application'; } diff --git a/app/Filament/Resources/DatabaseHostResource.php b/app/Filament/Resources/DatabaseHostResource.php index 85e349eb8..abfcc2ce9 100644 --- a/app/Filament/Resources/DatabaseHostResource.php +++ b/app/Filament/Resources/DatabaseHostResource.php @@ -3,15 +3,12 @@ namespace App\Filament\Resources; use App\Filament\Resources\DatabaseHostResource\Pages; -use App\Filament\Resources\DatabaseHostResource\RelationManagers; use App\Models\DatabaseHost; use Filament\Forms; use Filament\Forms\Form; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; -use Illuminate\Database\Eloquent\Builder; -use Illuminate\Database\Eloquent\SoftDeletingScope; class DatabaseHostResource extends Resource { diff --git a/app/Filament/Resources/DatabaseHostResource/Pages/CreateDatabaseHost.php b/app/Filament/Resources/DatabaseHostResource/Pages/CreateDatabaseHost.php index 023245a62..b5dbf3e5b 100644 --- a/app/Filament/Resources/DatabaseHostResource/Pages/CreateDatabaseHost.php +++ b/app/Filament/Resources/DatabaseHostResource/Pages/CreateDatabaseHost.php @@ -3,7 +3,6 @@ namespace App\Filament\Resources\DatabaseHostResource\Pages; use App\Filament\Resources\DatabaseHostResource; -use Filament\Actions; use Filament\Resources\Pages\CreateRecord; class CreateDatabaseHost extends CreateRecord diff --git a/app/Filament/Resources/DatabaseResource.php b/app/Filament/Resources/DatabaseResource.php index 39bffa486..b80901d7f 100644 --- a/app/Filament/Resources/DatabaseResource.php +++ b/app/Filament/Resources/DatabaseResource.php @@ -3,15 +3,12 @@ namespace App\Filament\Resources; use App\Filament\Resources\DatabaseResource\Pages; -use App\Filament\Resources\DatabaseResource\RelationManagers; use App\Models\Database; use Filament\Forms; use Filament\Forms\Form; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; -use Illuminate\Database\Eloquent\Builder; -use Illuminate\Database\Eloquent\SoftDeletingScope; class DatabaseResource extends Resource { diff --git a/app/Filament/Resources/DatabaseResource/Pages/CreateDatabase.php b/app/Filament/Resources/DatabaseResource/Pages/CreateDatabase.php index 3608e2a6e..4f7dd312a 100644 --- a/app/Filament/Resources/DatabaseResource/Pages/CreateDatabase.php +++ b/app/Filament/Resources/DatabaseResource/Pages/CreateDatabase.php @@ -3,7 +3,6 @@ namespace App\Filament\Resources\DatabaseResource\Pages; use App\Filament\Resources\DatabaseResource; -use Filament\Actions; use Filament\Resources\Pages\CreateRecord; class CreateDatabase extends CreateRecord diff --git a/app/Filament/Resources/EggResource.php b/app/Filament/Resources/EggResource.php index 61d5f95d4..ceea46121 100644 --- a/app/Filament/Resources/EggResource.php +++ b/app/Filament/Resources/EggResource.php @@ -20,7 +20,6 @@ class EggResource extends Resource protected static ?string $recordRouteKeyName = 'id'; - public static function form(Form $form): Form { return $form @@ -94,7 +93,7 @@ class EggResource extends Resource Forms\Components\TextInput::make('env_variable')->maxLength(191), Forms\Components\TextInput::make('default_value')->maxLength(191), Forms\Components\Textarea::make('rules')->rows(3)->columnSpanFull()->required(), - ]) + ]), ]), Forms\Components\Tabs\Tab::make('Install Script') ->columns(3) diff --git a/app/Filament/Resources/EggResource/Pages/CreateEgg.php b/app/Filament/Resources/EggResource/Pages/CreateEgg.php index 4ad3fa691..1cdd576b8 100644 --- a/app/Filament/Resources/EggResource/Pages/CreateEgg.php +++ b/app/Filament/Resources/EggResource/Pages/CreateEgg.php @@ -3,7 +3,6 @@ namespace App\Filament\Resources\EggResource\Pages; use App\Filament\Resources\EggResource; -use Filament\Actions; use Filament\Resources\Pages\CreateRecord; class CreateEgg extends CreateRecord diff --git a/app/Filament/Resources/EggResource/Pages/ListEggs.php b/app/Filament/Resources/EggResource/Pages/ListEggs.php index 8f87d9fe6..534b48389 100644 --- a/app/Filament/Resources/EggResource/Pages/ListEggs.php +++ b/app/Filament/Resources/EggResource/Pages/ListEggs.php @@ -53,7 +53,7 @@ class ListEggs extends ListRecords ->send(); redirect()->route('filament.admin.resources.eggs.edit', [$newEgg]); - }) + }), ]; } } diff --git a/app/Filament/Resources/MountResource.php b/app/Filament/Resources/MountResource.php index dcf1be8ca..c415e753a 100644 --- a/app/Filament/Resources/MountResource.php +++ b/app/Filament/Resources/MountResource.php @@ -88,7 +88,7 @@ class MountResource extends Resource ->relationship('nodes', 'name') ->searchable(['name', 'fqdn']) ->preload(), - ]) + ]), ])->columns([ 'default' => 1, ]), diff --git a/app/Filament/Resources/MountResource/Pages/CreateMount.php b/app/Filament/Resources/MountResource/Pages/CreateMount.php index c0cc78371..54ac86c4d 100644 --- a/app/Filament/Resources/MountResource/Pages/CreateMount.php +++ b/app/Filament/Resources/MountResource/Pages/CreateMount.php @@ -3,7 +3,6 @@ namespace App\Filament\Resources\MountResource\Pages; use App\Filament\Resources\MountResource; -use Filament\Actions; use Filament\Resources\Pages\CreateRecord; class CreateMount extends CreateRecord diff --git a/app/Filament/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Resources/NodeResource/Pages/CreateNode.php index 181d69895..4f83ea126 100644 --- a/app/Filament/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Resources/NodeResource/Pages/CreateNode.php @@ -3,10 +3,7 @@ namespace App\Filament\Resources\NodeResource\Pages; use App\Filament\Resources\NodeResource; -use App\Models\Node; -use Filament\Actions\Action; use Filament\Forms; -use Filament\Notifications\Notification; use Filament\Resources\Pages\CreateRecord; use Illuminate\Support\HtmlString; @@ -98,11 +95,11 @@ class CreateNode extends CreateRecord ->hintColor('success') ->options([ true => 'Valid', - false => 'Invalid' + false => 'Invalid', ]) ->colors([ true => 'success', - false => 'danger' + false => 'danger', ]), Forms\Components\TextInput::make('daemonListen') @@ -115,8 +112,6 @@ class CreateNode extends CreateRecord ->required() ->integer(), - - Forms\Components\TextInput::make('name') ->label('Display Name') ->columnSpan(2) diff --git a/app/Filament/Resources/NodeResource/Pages/EditNode.php b/app/Filament/Resources/NodeResource/Pages/EditNode.php index 1a1dba35c..8a6cdacf6 100644 --- a/app/Filament/Resources/NodeResource/Pages/EditNode.php +++ b/app/Filament/Resources/NodeResource/Pages/EditNode.php @@ -64,9 +64,9 @@ class EditNode extends EditRecord ->maxValue(65535) ->numeric(), Forms\Components\Select::make('server_id')->relationship('server', 'name'), - ]) + ]), ]), - ]) + ]), ]); } diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 044610891..3b41b1b05 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -16,7 +16,6 @@ use Filament\Tables; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Facades\Validator; -use Illuminate\Support\HtmlString; class ServerResource extends Resource { @@ -359,7 +358,7 @@ class ServerResource extends Resource ->helperText(fn (Forms\Get $get) => empty($get('description')) ? '—' : $get('description')) ->maxLength(191), - Forms\Components\Hidden::make('variable_id')->default(0) + Forms\Components\Hidden::make('variable_id')->default(0), ]) ->columnSpanFull(), ]), diff --git a/app/Filament/Resources/ServerResource/Pages/CreateServer.php b/app/Filament/Resources/ServerResource/Pages/CreateServer.php index f5cfd3bbc..9fcfccbb3 100644 --- a/app/Filament/Resources/ServerResource/Pages/CreateServer.php +++ b/app/Filament/Resources/ServerResource/Pages/CreateServer.php @@ -3,7 +3,6 @@ namespace App\Filament\Resources\ServerResource\Pages; use App\Filament\Resources\ServerResource; -use Filament\Actions; use Filament\Resources\Pages\CreateRecord; class CreateServer extends CreateRecord diff --git a/app/Filament/Resources/ServerResource/Pages/EditServer.php b/app/Filament/Resources/ServerResource/Pages/EditServer.php index af104ef17..856aa1026 100644 --- a/app/Filament/Resources/ServerResource/Pages/EditServer.php +++ b/app/Filament/Resources/ServerResource/Pages/EditServer.php @@ -3,9 +3,7 @@ namespace App\Filament\Resources\ServerResource\Pages; use App\Filament\Resources\ServerResource; -use App\Models\Allocation; use Filament\Actions; -use Filament\Forms; use Filament\Resources\Pages\EditRecord; class EditServer extends EditRecord diff --git a/app/Filament/Resources/UserResource.php b/app/Filament/Resources/UserResource.php index 824928a88..f6655ae98 100644 --- a/app/Filament/Resources/UserResource.php +++ b/app/Filament/Resources/UserResource.php @@ -3,15 +3,12 @@ namespace App\Filament\Resources; use App\Filament\Resources\UserResource\Pages; -use App\Filament\Resources\UserResource\RelationManagers; use App\Models\User; use Filament\Forms; use Filament\Forms\Form; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; -use Illuminate\Database\Eloquent\Builder; -use Illuminate\Database\Eloquent\SoftDeletingScope; use Illuminate\Support\Facades\Hash; class UserResource extends Resource diff --git a/app/Filament/Resources/UserResource/Pages/CreateUser.php b/app/Filament/Resources/UserResource/Pages/CreateUser.php index 73aa46d00..78a389490 100644 --- a/app/Filament/Resources/UserResource/Pages/CreateUser.php +++ b/app/Filament/Resources/UserResource/Pages/CreateUser.php @@ -3,7 +3,6 @@ namespace App\Filament\Resources\UserResource\Pages; use App\Filament\Resources\UserResource; -use Filament\Actions; use Filament\Resources\Pages\CreateRecord; class CreateUser extends CreateRecord diff --git a/app/Filament/Resources/UserResource/Pages/EditProfile.php b/app/Filament/Resources/UserResource/Pages/EditProfile.php index d13714484..3fd4c8388 100644 --- a/app/Filament/Resources/UserResource/Pages/EditProfile.php +++ b/app/Filament/Resources/UserResource/Pages/EditProfile.php @@ -8,7 +8,6 @@ use Filament\Forms\Components\Repeater; use Filament\Forms\Components\Tabs; use Filament\Forms\Components\Tabs\Tab; use Filament\Forms\Components\TextInput; -use Filament\Forms\Form; use Filament\Forms\Get; use Illuminate\Support\Facades\Hash; use Illuminate\Support\HtmlString; @@ -85,14 +84,14 @@ class EditProfile extends \Filament\Pages\Auth\EditProfile ->schema([ Placeholder::make('activity!')->label('')->content(fn (ActivityLog $log) => new HtmlString($log->htmlable())), - ]) + ]), ]), ]), ]) ->operation('edit') ->model($this->getUser()) ->statePath('data') - ->inlineLabel(! static::isSimple()), + ->inlineLabel(!static::isSimple()), ), ]; } diff --git a/app/Models/Node.php b/app/Models/Node.php index a83fd6170..cb3362be0 100644 --- a/app/Models/Node.php +++ b/app/Models/Node.php @@ -126,7 +126,6 @@ class Node extends Model return 'id'; } - protected static function booted(): void { static::creating(function (self $node) { diff --git a/app/Models/User.php b/app/Models/User.php index 2b52676a9..33905ae55 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -83,7 +83,7 @@ use App\Notifications\SendPasswordReset as ResetPasswordNotification; * * @mixin \Eloquent */ -class User extends Model implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, FilamentUser, HasName, HasAvatar +class User extends Model implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract, FilamentUser, HasAvatar, HasName { use Authenticatable; use Authorizable {can as protected canned; } @@ -340,7 +340,7 @@ class User extends Model implements AuthenticatableContract, AuthorizableContrac { $rootAdmins = User::query()->where('root_admin', true)->limit(2)->get(); - return once(fn() => $rootAdmins->count() === 1 && $rootAdmins->first()->is($this)); + return once(fn () => $rootAdmins->count() === 1 && $rootAdmins->first()->is($this)); } public function canAccessPanel(Panel $panel): bool diff --git a/app/Services/Eggs/EggParserService.php b/app/Services/Eggs/EggParserService.php index 60054ef15..dfb2e2631 100644 --- a/app/Services/Eggs/EggParserService.php +++ b/app/Services/Eggs/EggParserService.php @@ -25,6 +25,7 @@ class EggParserService $parsed = json_decode($file->getContent(), true, 512, JSON_THROW_ON_ERROR); $version = $parsed['meta']['version'] ?? ''; + return match ($version) { 'PTDL_v1' => $this->convertToV2($parsed), 'PTDL_v2' => $parsed, From f69d0823f4afd022406df9d76f6c8dd33b72e87f Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sat, 13 Apr 2024 15:52:54 -0400 Subject: [PATCH 123/173] Small updates --- app/Filament/Resources/ServerResource.php | 32 ++++++++++++------- .../ServerResource/Pages/CreateServer.php | 17 ++++++++++ .../Allocations/AssignmentService.php | 2 +- 3 files changed, 39 insertions(+), 12 deletions(-) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 440dbf57c..8dac7edd9 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -70,9 +70,11 @@ class ServerResource extends Resource ->relationship('node', 'name') ->searchable() ->preload() + ->afterStateUpdated(fn (Forms\Set $set) => $set('allocation_id', null)) ->required(), Forms\Components\Select::make('allocation_id') + ->preload() ->prefixIcon('tabler-network') ->label('Primary Allocation') ->columnSpan(3) @@ -93,7 +95,9 @@ class ServerResource extends Resource ->relationship( 'allocation', 'ip', - fn (Builder $query, Forms\Get $get) => $query->where('node_id', $get('node_id')), + fn (Builder $query, Forms\Get $get) => $query + ->where('node_id', $get('node_id')) + ->whereNull('server_id'), ) ->createOptionForm(fn (Forms\Get $get) => [ Forms\Components\TextInput::make('allocation_ip') @@ -153,23 +157,25 @@ class ServerResource extends Resource ->searchable() ->preload() ->live() - ->afterStateUpdated(function ($state, Forms\Set $set) { + ->afterStateUpdated(function ($state, Forms\Set $set, Forms\Get $get) { $egg = Egg::find($state); $set('startup', $egg->startup); - $set('image', array_flip($egg->docker_images ?? [])); - $variables = $egg->variables ?? []; $serverVariables = collect(); foreach ($variables as $variable) { $serverVariables->add($variable->toArray()); } + $variables = []; $set($path = 'server_variables', $serverVariables->all()); for ($i = 0; $i < $serverVariables->count(); $i++) { $set("$path.$i.variable_value", $serverVariables[$i]['default_value']); $set("$path.$i.variable_id", $serverVariables[$i]['id']); + $variables[$serverVariables[$i]['env_variable']] = $serverVariables[$i]['default_value']; } + + $set('environment', $variables); }) ->required(), @@ -196,7 +202,14 @@ class ServerResource extends Resource ->disabled(fn (Forms\Get $get) => $get('custom_image')) ->label('Docker Image') ->prefixIcon('tabler-brand-docker') - ->options(fn (Forms\Get $get) => array_flip(Egg::find($get('egg_id'))->docker_images ?? [])) + ->options(function (Forms\Get $get, Forms\Set $set) { + $images = Egg::find($get('egg_id'))->docker_images ?? []; + + $set('image', collect($images)->first()); + + return $images; + }) + ->disabled(fn (Forms\Components\Select $component) => empty($component->getOptions())) ->selectablePlaceholder(false) ->columnSpan(2) ->required(), @@ -332,6 +345,9 @@ class ServerResource extends Resource }) ->columnSpanFull(), + Forms\Components\KeyValue::make('environment') + ->default([]), + Forms\Components\Section::make('Egg Variables') ->icon('tabler-eggs') ->iconColor('primary') @@ -349,10 +365,6 @@ class ServerResource extends Resource ->deletable(false) ->default([]) ->hidden(fn ($state) => empty($state)) - ->afterStateUpdated(function () { - - }) - ->schema([ Forms\Components\TextInput::make('variable_value') ->rules([ @@ -368,11 +380,9 @@ class ServerResource extends Resource } }, ]) - ->label(fn (Forms\Get $get) => $get('name')) ->hint(fn (Forms\Get $get) => $get('rules')) ->prefix(fn (Forms\Get $get) => '{{' . $get('env_variable') . '}}') - ->helperText(fn (Forms\Get $get) => empty($get('description')) ? '—' : $get('description')) ->maxLength(191), diff --git a/app/Filament/Resources/ServerResource/Pages/CreateServer.php b/app/Filament/Resources/ServerResource/Pages/CreateServer.php index f5cfd3bbc..57778ac6b 100644 --- a/app/Filament/Resources/ServerResource/Pages/CreateServer.php +++ b/app/Filament/Resources/ServerResource/Pages/CreateServer.php @@ -3,11 +3,28 @@ namespace App\Filament\Resources\ServerResource\Pages; use App\Filament\Resources\ServerResource; +use App\Services\Servers\ServerCreationService; use Filament\Actions; use Filament\Resources\Pages\CreateRecord; +use Illuminate\Database\Eloquent\Model; class CreateServer extends CreateRecord { protected static string $resource = ServerResource::class; protected static bool $canCreateAnother = false; + + protected function handleRecordCreation(array $data): Model + { + /** @var ServerCreationService $service */ + $service = resolve(ServerCreationService::class); + + $server = $service->handle($data); + + return $server; + } + +// protected function getRedirectUrl(): string +// { +// return $this->getResource()::getUrl('edit'); +// } } diff --git a/app/Services/Allocations/AssignmentService.php b/app/Services/Allocations/AssignmentService.php index 22db2e33f..81c29c0e6 100644 --- a/app/Services/Allocations/AssignmentService.php +++ b/app/Services/Allocations/AssignmentService.php @@ -101,7 +101,7 @@ class AssignmentService ]; } - $ids = Allocation::query()->insertOrIgnore($insertData); + $ids[] = Allocation::query()->insertOrIgnore($insertData); } } From 18e5c17ebe66735a39b8397111fcd960da0fa9cd Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sat, 13 Apr 2024 16:21:44 -0400 Subject: [PATCH 124/173] Add languages to profile edit --- app/Filament/Resources/UserResource/Pages/EditProfile.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/Filament/Resources/UserResource/Pages/EditProfile.php b/app/Filament/Resources/UserResource/Pages/EditProfile.php index 3fd4c8388..90c4a67c3 100644 --- a/app/Filament/Resources/UserResource/Pages/EditProfile.php +++ b/app/Filament/Resources/UserResource/Pages/EditProfile.php @@ -3,8 +3,10 @@ namespace App\Filament\Resources\UserResource\Pages; use App\Models\ActivityLog; +use App\Models\User; use Filament\Forms\Components\Placeholder; use Filament\Forms\Components\Repeater; +use Filament\Forms\Components\Select; use Filament\Forms\Components\Tabs; use Filament\Forms\Components\Tabs\Tab; use Filament\Forms\Components\TextInput; @@ -54,6 +56,11 @@ class EditProfile extends \Filament\Pages\Auth\EditProfile ->required() ->visible(fn (Get $get): bool => filled($get('password'))) ->dehydrated(false), + + Select::make('language') + ->required() + ->default('en') + ->options(fn (User $user) => $user->getAvailableLanguages()), ]), Tab::make('2FA') From 06c773c3b1da601dd92e8fe5d48d53c944cb5b37 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sat, 13 Apr 2024 16:49:53 -0400 Subject: [PATCH 125/173] Prevent deleting nodes if there are active servers --- app/Models/Node.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/Models/Node.php b/app/Models/Node.php index cb3362be0..e3dc97b41 100644 --- a/app/Models/Node.php +++ b/app/Models/Node.php @@ -2,6 +2,7 @@ namespace App\Models; +use App\Exceptions\Service\HasActiveServersException; use App\Repositories\Daemon\DaemonConfigurationRepository; use Exception; use Illuminate\Support\Str; @@ -135,6 +136,10 @@ class Node extends Model return true; }); + + static::deleting(function (self $node) { + throw_if($node->servers()->count(), new HasActiveServersException(trans('exceptions.egg.delete_has_servers'))); + }); } /** From b39e1c6f78b59360e71e1b973e1bf294b544b6c6 Mon Sep 17 00:00:00 2001 From: iamkubi Date: Sat, 13 Apr 2024 14:31:16 -0700 Subject: [PATCH 126/173] Add CLA and workflow for CLA bot --- .github/workflows/cla.yaml | 27 +++++++++ contributor_license_agreement.md | 96 ++++++++++++++++++++++++++++++++ 2 files changed, 123 insertions(+) create mode 100644 .github/workflows/cla.yaml create mode 100644 contributor_license_agreement.md diff --git a/.github/workflows/cla.yaml b/.github/workflows/cla.yaml new file mode 100644 index 000000000..27650fd54 --- /dev/null +++ b/.github/workflows/cla.yaml @@ -0,0 +1,27 @@ +name: "CLA Assistant" +on: + issue_comment: + types: [created] + pull_request_target: + types: [opened,closed,synchronize] + +permissions: + actions: write + contents: write + pull-requests: write + statuses: write + +jobs: + CLAAssistant: + runs-on: ubuntu-latest + steps: + - name: "CLA Assistant" + if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target' + uses: contributor-assistant/github-action@v2.3.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + path-to-signatures: '.cla-signatures/version1/cla.json' + path-to-document: 'https://github.com/pelican-dev/panel/blob/3.x/contributor_license_agreement.md' + branch: '3.x' + allowlist: dependabot[bot] diff --git a/contributor_license_agreement.md b/contributor_license_agreement.md new file mode 100644 index 000000000..8594ea679 --- /dev/null +++ b/contributor_license_agreement.md @@ -0,0 +1,96 @@ +Thank you for your interest in Pelican ("Pelican Developers"). To clarify the intellectual property license +granted with Contributions from any person or entity, the Pelican Developers +must have on file a signed Contributor License Agreement ("CLA") +from each Contributor, indicating agreement with the license +terms below. This agreement is for your protection as a Contributor +as well as the protection of the Pelican Developers and its users. It does not +change your rights to use your own Contributions for any other purpose. + +You accept and agree to the following terms and conditions for Your +Contributions (present and future) that you submit to the Pelican Developers. In +return, the Pelican Developers shall not use Your Contributions in a way that +is contrary to the public benefit or inconsistent with its nonprofit +status and bylaws in effect at the time of the Contribution. Except +for the license granted herein to the Pelican Developers and recipients of +software distributed by the Pelican Developers, You reserve all right, title, +and interest in and to Your Contributions. +1. Definitions. + "You" (or "Your") shall mean the copyright owner or legal entity + authorized by the copyright owner that is making this Agreement + with the Pelican Developers. For legal entities, the entity making a + Contribution and all other entities that control, are controlled + by, or are under common control with that entity are considered to + be a single Contributor. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + "Contribution" shall mean any original work of authorship, + including any modifications or additions to an existing work, that + is intentionally submitted by You to the Pelican Developers for inclusion + in, or documentation of, any of the products owned or managed by + the Pelican Developers (the "Work"). For the purposes of this definition, + "submitted" means any form of electronic, verbal, or written + communication sent to the Pelican Developers or its representatives, + including but not limited to communication on electronic mailing + lists, source code control systems, and issue tracking systems that + are managed by, or on behalf of, the Pelican Developers for the purpose of + discussing and improving the Work, but excluding communication that + is conspicuously marked or otherwise designated in writing by You + as "Not a Contribution." +2. Grant of Copyright License. Subject to the terms and conditions of + this Agreement, You hereby grant to the Pelican Developers and to + recipients of software distributed by the Pelican Developers a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare derivative works of, + publicly display, publicly perform, sublicense, and distribute Your + Contributions and such derivative works. +3. Grant of Patent License. Subject to the terms and conditions of + this Agreement, You hereby grant to the Pelican Developers and to + recipients of software distributed by the Pelican Developers a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have + made, use, offer to sell, sell, import, and otherwise transfer the + Work, where such license applies only to those patent claims + licensable by You that are necessarily infringed by Your + Contribution(s) alone or by combination of Your Contribution(s) + with the Work to which such Contribution(s) was submitted. If any + entity institutes patent litigation against You or any other entity + (including a cross-claim or counterclaim in a lawsuit) alleging + that your Contribution, or the Work to which you have contributed, + constitutes direct or contributory patent infringement, then any + patent licenses granted to that entity under this Agreement for + that Contribution or Work shall terminate as of the date such + litigation is filed. +4. You represent that you are legally entitled to grant the above + license. If your employer(s) has rights to intellectual property + that you create that includes your Contributions, you represent + that you have received permission to make Contributions on behalf + of that employer, that your employer has waived such rights for + your Contributions to the Pelican Developers, or that your employer has + executed a separate Corporate CLA with the Pelican Developers. +5. You represent that each of Your Contributions is Your original + creation (see section 7 for submissions on behalf of others). You + represent that Your Contribution submissions include complete + details of any third-party license or other restriction (including, + but not limited to, related patents and trademarks) of which you + are personally aware and which are associated with any part of Your + Contributions. +6. You are not expected to provide support for Your Contributions, + except to the extent You desire to provide support. You may provide + support for free, for a fee, or not at all. Unless required by + applicable law or agreed to in writing, You provide Your + Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + OF ANY KIND, either express or implied, including, without + limitation, any warranties or conditions of TITLE, NON- + INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. +7. Should You wish to submit work that is not Your original creation, + You may submit it to the Pelican Developers separately from any + Contribution, identifying the complete details of its source and of + any license or other restriction (including, but not limited to, + related patents, trademarks, and license agreements) of which you + are personally aware, and conspicuously marking the work as + "Submitted on behalf of a third-party: [named here]". +8. You agree to notify the Pelican Developers of any facts or circumstances of + which you become aware that would make these representations + inaccurate in any respect. From 3e940e8c487b6829d43f9e83143b4b289702f809 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 13 Apr 2024 21:39:29 +0000 Subject: [PATCH 127/173] Creating file for storing CLA Signatures --- .cla-signatures/version1/cla.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .cla-signatures/version1/cla.json diff --git a/.cla-signatures/version1/cla.json b/.cla-signatures/version1/cla.json new file mode 100644 index 000000000..18d5487f3 --- /dev/null +++ b/.cla-signatures/version1/cla.json @@ -0,0 +1,3 @@ +{ + "signedContributors": [] +} \ No newline at end of file From 3b0c5540a7b36bf9a18245dd53f7c5e9be0d599f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 13 Apr 2024 21:40:08 +0000 Subject: [PATCH 128/173] @iamkubi has signed the CLA in pelican-dev/panel#64 --- .cla-signatures/version1/cla.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.cla-signatures/version1/cla.json b/.cla-signatures/version1/cla.json index 18d5487f3..20b065ad5 100644 --- a/.cla-signatures/version1/cla.json +++ b/.cla-signatures/version1/cla.json @@ -1,3 +1,12 @@ { - "signedContributors": [] + "signedContributors": [ + { + "name": "iamkubi", + "id": 6176191, + "comment_id": 2053767631, + "created_at": "2024-04-13T21:39:53Z", + "repoId": 774258963, + "pullRequestNo": 64 + } + ] } \ No newline at end of file From 32a3b8dd9b29af9a93e531b625cc8dabda4d3906 Mon Sep 17 00:00:00 2001 From: Scai <59282365+alexevladgabriel@users.noreply.github.com> Date: Sun, 14 Apr 2024 01:50:43 +0300 Subject: [PATCH 129/173] add servers relationship to users --- app/Filament/Resources/ServerResource.php | 3 +- app/Filament/Resources/UserResource.php | 92 ++++++++++--------- .../ServersRelationManager.php | 55 +++++++++++ 3 files changed, 105 insertions(+), 45 deletions(-) create mode 100644 app/Filament/Resources/UserResource/RelationManagers/ServersRelationManager.php diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 3c9c1962f..4cbe35904 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -348,7 +348,8 @@ class ServerResource extends Resource ->columnSpanFull(), Forms\Components\KeyValue::make('environment') - ->default([]), + ->default([]) + ->columnSpanFull(), Forms\Components\Section::make('Egg Variables') ->icon('tabler-eggs') diff --git a/app/Filament/Resources/UserResource.php b/app/Filament/Resources/UserResource.php index f6655ae98..86072742d 100644 --- a/app/Filament/Resources/UserResource.php +++ b/app/Filament/Resources/UserResource.php @@ -3,8 +3,10 @@ namespace App\Filament\Resources; use App\Filament\Resources\UserResource\Pages; +use App\Filament\Resources\UserResource\RelationManagers; use App\Models\User; use Filament\Forms; +use Filament\Forms\Components\Section; use Filament\Forms\Form; use Filament\Resources\Resource; use Filament\Tables; @@ -23,54 +25,56 @@ class UserResource extends Resource { return $form ->schema([ - Forms\Components\TextInput::make('username')->required()->maxLength(191), - Forms\Components\TextInput::make('email')->email()->required()->maxLength(191), + Section::make()->schema([ + Forms\Components\TextInput::make('username')->required()->maxLength(191), + Forms\Components\TextInput::make('email')->email()->required()->maxLength(191), - Forms\Components\TextInput::make('name_first') - ->maxLength(191) - ->hidden(fn (string $operation): bool => $operation === 'create') - ->label('First Name'), - Forms\Components\TextInput::make('name_last') - ->maxLength(191) - ->hidden(fn (string $operation): bool => $operation === 'create') - ->label('Last Name'), + Forms\Components\TextInput::make('name_first') + ->maxLength(191) + ->hidden(fn (string $operation): bool => $operation === 'create') + ->label('First Name'), + Forms\Components\TextInput::make('name_last') + ->maxLength(191) + ->hidden(fn (string $operation): bool => $operation === 'create') + ->label('Last Name'), - Forms\Components\TextInput::make('password') - ->dehydrateStateUsing(fn (string $state): string => Hash::make($state)) - ->dehydrated(fn (?string $state): bool => filled($state)) - ->required(fn (string $operation): bool => $operation === 'create') - ->password(), + Forms\Components\TextInput::make('password') + ->dehydrateStateUsing(fn (string $state): string => Hash::make($state)) + ->dehydrated(fn (?string $state): bool => filled($state)) + ->required(fn (string $operation): bool => $operation === 'create') + ->password(), - Forms\Components\ToggleButtons::make('root_admin') - ->label('Administrator (Root)') - ->options([ - false => 'No', - true => 'Admin', - ]) - ->colors([ - false => 'primary', - true => 'danger', - ]) - ->disableOptionWhen(function (string $operation, $value, User $user) { - if ($operation !== 'edit' || $value) { - return false; - } + Forms\Components\ToggleButtons::make('root_admin') + ->label('Administrator (Root)') + ->options([ + false => 'No', + true => 'Admin', + ]) + ->colors([ + false => 'primary', + true => 'danger', + ]) + ->disableOptionWhen(function (string $operation, $value, User $user) { + if ($operation !== 'edit' || $value) { + return false; + } - return $user->isLastRootAdmin(); - }) - ->hint(fn (User $user) => $user->isLastRootAdmin() ? 'This is the last root administrator!' : '') - ->helperText(fn (User $user) => $user->isLastRootAdmin() ? 'You must have at least one root administrator in your system.' : '') - ->hintColor('warning') - ->inline() - ->required() - ->default(false), + return $user->isLastRootAdmin(); + }) + ->hint(fn (User $user) => $user->isLastRootAdmin() ? 'This is the last root administrator!' : '') + ->helperText(fn (User $user) => $user->isLastRootAdmin() ? 'You must have at least one root administrator in your system.' : '') + ->hintColor('warning') + ->inline() + ->required() + ->default(false), - Forms\Components\Hidden::make('skipValidation')->default(true), - Forms\Components\Select::make('language') - ->required() - ->hidden() - ->default('en') - ->options(fn (User $user) => $user->getAvailableLanguages()), + Forms\Components\Hidden::make('skipValidation')->default(true), + Forms\Components\Select::make('language') + ->required() + ->hidden() + ->default('en') + ->options(fn (User $user) => $user->getAvailableLanguages()), + ])->columns(2), ]); } @@ -130,7 +134,7 @@ class UserResource extends Resource public static function getRelations(): array { return [ - // + RelationManagers\ServersRelationManager::class, ]; } diff --git a/app/Filament/Resources/UserResource/RelationManagers/ServersRelationManager.php b/app/Filament/Resources/UserResource/RelationManagers/ServersRelationManager.php new file mode 100644 index 000000000..f79878065 --- /dev/null +++ b/app/Filament/Resources/UserResource/RelationManagers/ServersRelationManager.php @@ -0,0 +1,55 @@ +searchable(false) + ->columns([ + Tables\Columns\TextColumn::make('uuid') + ->hidden() + ->label('UUID') + ->searchable(), + Tables\Columns\TextColumn::make('name') + ->icon('tabler-brand-docker') + ->searchable() + ->sortable(), + Tables\Columns\TextColumn::make('node.name') + ->icon('tabler-server-2') + ->url(fn (Server $server): string => route('filament.admin.resources.nodes.edit', ['record' => $server->node])) + ->sortable(), + Tables\Columns\TextColumn::make('egg.name') + ->icon('tabler-egg') + ->url(fn (Server $server): string => route('filament.admin.resources.eggs.edit', ['record' => $server->egg])) + ->sortable(), + Tables\Columns\SelectColumn::make('allocation.id') + ->label('Primary Allocation') + ->options(fn ($state, Server $server) => [$server->allocation->id => $server->allocation->address]) + ->selectablePlaceholder(false) + ->sortable(), + Tables\Columns\TextColumn::make('image')->hidden(), + Tables\Columns\TextColumn::make('databases_count') + ->counts('databases') + ->label('Databases') + ->icon('tabler-database') + ->numeric() + ->sortable(), + Tables\Columns\TextColumn::make('backups_count') + ->counts('backups') + ->label('Backups') + ->icon('tabler-file-download') + ->numeric() + ->sortable(), + ]); + } +} From 67fa753e7bcbc32e81ad512e98281a3182b5cbea Mon Sep 17 00:00:00 2001 From: iamkubi Date: Sat, 13 Apr 2024 16:30:02 -0700 Subject: [PATCH 130/173] Update license --- license | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/license b/license index fe6b9036b..301cbf999 100644 --- a/license +++ b/license @@ -1,3 +1,7 @@ +Pelican Panel is offered under the AGPL-3 license to the open source community. +Pelican Panel is alternatively available under a commercial license. +Contact team@pelican.dev for information about commercial licensing. + GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 From e96dd13170bebe4eb4f95e32183d5df46eee6850 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 14 Apr 2024 01:59:18 +0000 Subject: [PATCH 131/173] @notAreYouScared has signed the CLA in pelican-dev/panel#66 --- .cla-signatures/version1/cla.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.cla-signatures/version1/cla.json b/.cla-signatures/version1/cla.json index 20b065ad5..99412fcdf 100644 --- a/.cla-signatures/version1/cla.json +++ b/.cla-signatures/version1/cla.json @@ -7,6 +7,14 @@ "created_at": "2024-04-13T21:39:53Z", "repoId": 774258963, "pullRequestNo": 64 + }, + { + "name": "notAreYouScared", + "id": 1757840, + "comment_id": 2053849162, + "created_at": "2024-04-14T01:59:04Z", + "repoId": 774258963, + "pullRequestNo": 66 } ] } \ No newline at end of file From 9add408b6b02d9f07422c7ffa56c61ea637246dc Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 14 Apr 2024 02:30:57 -0400 Subject: [PATCH 132/173] Filter out null entries --- app/Filament/Resources/ServerResource/Pages/CreateServer.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/Filament/Resources/ServerResource/Pages/CreateServer.php b/app/Filament/Resources/ServerResource/Pages/CreateServer.php index 57778ac6b..bcf0a72c6 100644 --- a/app/Filament/Resources/ServerResource/Pages/CreateServer.php +++ b/app/Filament/Resources/ServerResource/Pages/CreateServer.php @@ -15,6 +15,8 @@ class CreateServer extends CreateRecord protected function handleRecordCreation(array $data): Model { + $data['allocation_additional'] = collect($data['allocation_additional'])->filter()->all(); + /** @var ServerCreationService $service */ $service = resolve(ServerCreationService::class); From 18cbaf74581648a3e571616ae35e3bc40beec559 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 14 Apr 2024 02:31:06 -0400 Subject: [PATCH 133/173] Add deletion button --- .../Resources/ServerResource/Pages/EditServer.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/Filament/Resources/ServerResource/Pages/EditServer.php b/app/Filament/Resources/ServerResource/Pages/EditServer.php index 856aa1026..2fd299501 100644 --- a/app/Filament/Resources/ServerResource/Pages/EditServer.php +++ b/app/Filament/Resources/ServerResource/Pages/EditServer.php @@ -3,6 +3,8 @@ namespace App\Filament\Resources\ServerResource\Pages; use App\Filament\Resources\ServerResource; +use App\Models\Server; +use App\Services\Servers\ServerDeletionService; use Filament\Actions; use Filament\Resources\Pages\EditRecord; @@ -13,7 +15,11 @@ class EditServer extends EditRecord protected function getHeaderActions(): array { return [ - Actions\DeleteAction::make(), + Actions\Action::make('Delete') + ->successRedirectUrl($this->getResource()::getUrl('index')) + ->color('danger') + ->action(fn (Server $server) => resolve(ServerDeletionService::class)->handle($server)) + ->requiresConfirmation(), ]; } } From 56f96348f4562c7e351a28ae10780530f028df49 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 14 Apr 2024 02:31:19 -0400 Subject: [PATCH 134/173] Allow disabling block io balancing --- app/Models/Server.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/Server.php b/app/Models/Server.php index b96198d69..b450973b4 100644 --- a/app/Models/Server.php +++ b/app/Models/Server.php @@ -152,7 +152,7 @@ class Server extends Model 'status' => 'nullable|string', 'memory' => 'required|numeric|min:0', 'swap' => 'required|numeric|min:-1', - 'io' => 'required|numeric|between:10,1000', + 'io' => 'required|numeric|between:0,1000', 'cpu' => 'required|numeric|min:0', 'threads' => 'nullable|regex:/^[0-9-,]+$/', 'oom_disabled' => 'sometimes|boolean', From b488253c76b83a02f143a4e50c23e23fb2950ec6 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 14 Apr 2024 02:31:30 -0400 Subject: [PATCH 135/173] Unused --- app/Http/Requests/Admin/MountFormRequest.php | 23 -------------------- 1 file changed, 23 deletions(-) delete mode 100644 app/Http/Requests/Admin/MountFormRequest.php diff --git a/app/Http/Requests/Admin/MountFormRequest.php b/app/Http/Requests/Admin/MountFormRequest.php deleted file mode 100644 index f88b1b396..000000000 --- a/app/Http/Requests/Admin/MountFormRequest.php +++ /dev/null @@ -1,23 +0,0 @@ -method() === 'PATCH') { - /** @var Mount $mount */ - $mount = $this->route()->parameter('mount'); - - return Mount::getRulesForUpdate($mount->id); - } - - return Mount::getRules(); - } -} From dd1b25604a1c6b9d7b33532ffc9b9bf4160808ac Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 14 Apr 2024 02:36:32 -0400 Subject: [PATCH 136/173] Do the additional allocations --- app/Filament/Resources/ServerResource.php | 189 ++++++++++++++-------- 1 file changed, 121 insertions(+), 68 deletions(-) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 3c9c1962f..3cc51a32a 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -7,6 +7,7 @@ use App\Models\Allocation; use App\Models\Egg; use App\Models\Node; use App\Models\Server; +use App\Repositories\Daemon\DaemonServerRepository; use App\Services\Allocations\AssignmentService; use Closure; use Filament\Forms; @@ -15,6 +16,7 @@ use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; +use Illuminate\Support\Arr; use Illuminate\Support\Facades\Validator; class ServerResource extends Resource @@ -42,7 +44,7 @@ class ServerResource extends Resource ->color('primary') ->action(function (Forms\Set $set, Forms\Get $get) { $egg = Egg::find($get('egg_id')); - $prefix = $egg ? str($egg->name)->lower()->snake() . '-' : ''; + $prefix = $egg ? str($egg->name)->lower()->kebab() . '-' : ''; $set('name', $prefix . fake()->domainWord); })) @@ -74,11 +76,16 @@ class ServerResource extends Resource Forms\Components\Select::make('allocation_id') ->preload() + ->live() ->prefixIcon('tabler-network') ->label('Primary Allocation') - ->columnSpan(3) + ->columnSpan(2) ->disabled(fn (Forms\Get $get) => $get('node_id') === null) ->searchable(['ip', 'port', 'ip_alias']) + ->afterStateUpdated(function (Forms\Set $set) { + $set('allocation_additional', null); + $set('allocation_additional.needstobeastringhere.extra_allocations', null); + }) ->getOptionLabelFromRecordUsing( fn (Allocation $allocation) => "$allocation->ip:$allocation->port" . ($allocation->ip_alias ? " ($allocation->ip_alias)" : '') @@ -143,6 +150,51 @@ class ServerResource extends Resource }) ->required(), + Forms\Components\Repeater::make('allocation_additional') + ->label('Additional Allocations') + ->columnSpan(2) + ->disabled(fn (Forms\Get $get) => $get('allocation_id') === null) + ->hintActions([Forms\Components\Actions\Action::make('asdf')->action(function (Forms\Components\Repeater $component) { + $state = $component->getState(); + dd($state); + })]) + // ->addable() TODO disable when all allocations are taken + // ->addable() TODO disable until first additional allocation is selected + ->simple( + Forms\Components\Select::make('extra_allocations') + ->live() + ->preload() + ->disableOptionsWhenSelectedInSiblingRepeaterItems() + ->prefixIcon('tabler-network') + ->label('Additional Allocations') + ->columnSpan(2) + ->disabled(fn (Forms\Get $get) => $get('../../node_id') === null) + ->searchable(['ip', 'port', 'ip_alias']) + ->getOptionLabelFromRecordUsing( + fn (Allocation $allocation) => "$allocation->ip:$allocation->port" . + ($allocation->ip_alias ? " ($allocation->ip_alias)" : '') + ) + ->placeholder('Select additional Allocations') + ->relationship( + 'allocations', + 'ip', + fn (Builder $query, Forms\Get $get, Forms\Components\Select $component, $state) => $query + ->where('node_id', $get('../../node_id')) + ->whereNotIn('id', collect(($repeater = $component->getParentRepeater())->getState()) + ->pluck( + (string) str($component->getStatePath()) + ->after("{$repeater->getStatePath()}.") + ->after('.'), + ) + ->flatten() + ->diff(Arr::wrap($state)) + ->filter(fn (mixed $siblingItemState): bool => filled($siblingItemState)) + ->add($get('../../allocation_id')) + ) + ->whereNull('server_id'), + ), + ), + Forms\Components\Textarea::make('description') ->hidden() ->default('') @@ -157,7 +209,7 @@ class ServerResource extends Resource ->searchable() ->preload() ->live() - ->afterStateUpdated(function ($state, Forms\Set $set, Forms\Get $get) { + ->afterStateUpdated(function ($state, Forms\Set $set) { $egg = Egg::find($state); $set('startup', $egg->startup); @@ -262,9 +314,69 @@ class ServerResource extends Resource ->default(0), ]), - Forms\Components\Fieldset::make('Resource Management') - // ->inlineLabel() - ->hiddenOn('create') + Forms\Components\Textarea::make('startup') + ->hintIcon('tabler-code') + ->label('Startup Command') + ->required() + ->live() + ->rows(function ($state) { + return str($state)->explode("\n")->reduce( + fn (int $carry, $line) => $carry + floor(strlen($line) / 125), + 0 + ); + }) + ->columnSpanFull(), + + Forms\Components\Hidden::make('environment')->default([]), + + Forms\Components\Section::make('Egg Variables') + ->icon('tabler-eggs') + ->iconColor('primary') + ->collapsible() + ->collapsed() + ->schema([ + Forms\Components\Placeholder::make('Select an egg first to show its variables!') + ->hidden(fn (Forms\Get $get) => !empty($get('server_variables'))), + + Forms\Components\Repeater::make('server_variables') + ->relationship('serverVariables') + ->grid(2) + ->reorderable(false) + ->addable(false) + ->deletable(false) + ->default([]) + ->hidden(fn ($state) => empty($state)) + ->schema([ + Forms\Components\TextInput::make('variable_value') + ->rules([ + fn (Forms\Get $get): Closure => function (string $attribute, $value, Closure $fail) use ($get) { + $validator = Validator::make(['validatorkey' => $value], [ + 'validatorkey' => $get('rules'), + ]); + + if ($validator->fails()) { + $message = str($validator->errors()->first())->replace('validatorkey', $get('name')); + + $fail($message); + } + }, + ]) + ->label(fn (Forms\Get $get) => $get('name')) + ->hint(fn (Forms\Get $get) => $get('rules')) + ->prefix(fn (Forms\Get $get) => '{{' . $get('env_variable') . '}}') + ->helperText(fn (Forms\Get $get) => empty($get('description')) ? '—' : $get('description')) + ->maxLength(191), + + Forms\Components\Hidden::make('variable_id')->default(0), + ]) + ->columnSpanFull(), + ]), + + Forms\Components\Section::make('Resource Management') + // ->hiddenOn('create') + ->collapsed() + ->icon('tabler-server-cog') + ->iconColor('primary') ->columns(3) ->schema([ Forms\Components\TextInput::make('memory') @@ -309,10 +421,10 @@ class ServerResource extends Resource ->helperText('The IO performance relative to other running containers') ->label('Block IO Proportion') ->required() - ->minValue(10) + ->minValue(0) ->maxValue(1000) ->step(10) - ->default(500) + ->default(0) ->numeric(), Forms\Components\ToggleButtons::make('oom_disabled') @@ -333,65 +445,6 @@ class ServerResource extends Resource ]) ->required(), ]), - - Forms\Components\Textarea::make('startup') - ->hintIcon('tabler-code') - ->label('Startup Command') - ->required() - ->live() - ->rows(function ($state) { - return str($state)->explode("\n")->reduce( - fn (int $carry, $line) => $carry + floor(strlen($line) / 125), - 0 - ); - }) - ->columnSpanFull(), - - Forms\Components\KeyValue::make('environment') - ->default([]), - - Forms\Components\Section::make('Egg Variables') - ->icon('tabler-eggs') - ->iconColor('primary') - ->collapsible() - ->collapsed() - ->schema([ - Forms\Components\Placeholder::make('Select an egg first to show its variables!') - ->hidden(fn (Forms\Get $get) => !empty($get('server_variables'))), - - Forms\Components\Repeater::make('server_variables') - ->relationship('serverVariables') - ->grid(2) - ->reorderable(false) - ->addable(false) - ->deletable(false) - ->default([]) - ->hidden(fn ($state) => empty($state)) - ->schema([ - Forms\Components\TextInput::make('variable_value') - ->rules([ - fn (Forms\Get $get): Closure => function (string $attribute, $value, Closure $fail) use ($get) { - $validator = Validator::make(['validatorkey' => $value], [ - 'validatorkey' => $get('rules'), - ]); - - if ($validator->fails()) { - $message = str($validator->errors()->first())->replace('validatorkey', $get('name')); - - $fail($message); - } - }, - ]) - ->label(fn (Forms\Get $get) => $get('name')) - ->hint(fn (Forms\Get $get) => $get('rules')) - ->prefix(fn (Forms\Get $get) => '{{' . $get('env_variable') . '}}') - ->helperText(fn (Forms\Get $get) => empty($get('description')) ? '—' : $get('description')) - ->maxLength(191), - - Forms\Components\Hidden::make('variable_id')->default(0), - ]) - ->columnSpanFull(), - ]), ]); } @@ -442,7 +495,7 @@ class ServerResource extends Resource ]) ->bulkActions([ Tables\Actions\BulkActionGroup::make([ - Tables\Actions\DeleteBulkAction::make(), + // Tables\Actions\DeleteBulkAction::make(), ]), ]); } From e2399eb4e232d541151bd95f743e3a36eefcd94f Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 14 Apr 2024 02:41:56 -0400 Subject: [PATCH 137/173] Hide this again --- app/Filament/Resources/ServerResource.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 1d20bfd4f..2fffad04a 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -459,7 +459,7 @@ class ServerResource extends Resource }) ->columnSpanFull(), - Forms\Components\KeyValue::make('environment') + Forms\Components\Hidden::make('environment') ->default([]) ->columnSpanFull(), From 288d3a2cff5d9ad6ebed66dd1700cab51a87030e Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 14 Apr 2024 02:48:21 -0400 Subject: [PATCH 138/173] Nobody look --- app/Filament/Resources/ServerResource.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 2fffad04a..8e7f5ed0b 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -154,12 +154,8 @@ class ServerResource extends Resource ->label('Additional Allocations') ->columnSpan(2) ->disabled(fn (Forms\Get $get) => $get('allocation_id') === null) - ->hintActions([Forms\Components\Actions\Action::make('asdf')->action(function (Forms\Components\Repeater $component) { - $state = $component->getState(); - dd($state); - })]) // ->addable() TODO disable when all allocations are taken - // ->addable() TODO disable until first additional allocation is selected + // ->addable() TODO disable until first additional allocation is selected ->simple( Forms\Components\Select::make('extra_allocations') ->live() From 867777f2e4f5cbe93f67ccf99d525e38c9b87f4d Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 14 Apr 2024 13:18:59 -0400 Subject: [PATCH 139/173] Update Crowdin configuration file --- crowdin.yml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 crowdin.yml diff --git a/crowdin.yml b/crowdin.yml new file mode 100644 index 000000000..bbcc6cbbb --- /dev/null +++ b/crowdin.yml @@ -0,0 +1,3 @@ +files: + - source: /lang/en/*.php + translation: /lang/%two_letters_code%/%original_file_name% From 0195e36ccf4fe89cf39a704e9f500cc4b656dc59 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 14 Apr 2024 13:54:15 -0400 Subject: [PATCH 140/173] Update Crowdin configuration file --- crowdin.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/crowdin.yml b/crowdin.yml index bbcc6cbbb..6f49cab9d 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -1,3 +1,11 @@ files: - source: /lang/en/*.php translation: /lang/%two_letters_code%/%original_file_name% + - source: /lang/en/admin + translation: /lang/%two_letters_code%/admin/%original_file_name% + - source: /lang/en/command + translation: /lang/%two_letters_code%/command/%original_file_name% + - source: /lang/en/dashboard + translation: /lang/%two_letters_code%/dashboard/%original_file_name% + - source: /lang/en/server + translation: /lang/%two_letters_code%/server/%original_file_name% From 5c8097d9b71a7e551665cf33e987351cb6dc0e09 Mon Sep 17 00:00:00 2001 From: Scai <59282365+alexevladgabriel@users.noreply.github.com> Date: Mon, 15 Apr 2024 01:34:55 +0300 Subject: [PATCH 141/173] cleanup server boilerplate --- app/Filament/Resources/ServerResource.php | 75 +++-------------------- 1 file changed, 8 insertions(+), 67 deletions(-) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 2fffad04a..f918a08a8 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -7,7 +7,6 @@ use App\Models\Allocation; use App\Models\Egg; use App\Models\Node; use App\Models\Server; -use App\Repositories\Daemon\DaemonServerRepository; use App\Services\Allocations\AssignmentService; use Closure; use Filament\Forms; @@ -154,12 +153,12 @@ class ServerResource extends Resource ->label('Additional Allocations') ->columnSpan(2) ->disabled(fn (Forms\Get $get) => $get('allocation_id') === null) - ->hintActions([Forms\Components\Actions\Action::make('asdf')->action(function (Forms\Components\Repeater $component) { - $state = $component->getState(); - dd($state); - })]) + // ->hintActions([Forms\Components\Actions\Action::make('asdf')->action(function (Forms\Components\Repeater $component) { + // $state = $component->getState(); + // dd($state); + // })]) // ->addable() TODO disable when all allocations are taken - // ->addable() TODO disable until first additional allocation is selected + // ->addable() TODO disable until first additional allocation is selected ->simple( Forms\Components\Select::make('extra_allocations') ->live() @@ -180,7 +179,9 @@ class ServerResource extends Resource 'ip', fn (Builder $query, Forms\Get $get, Forms\Components\Select $component, $state) => $query ->where('node_id', $get('../../node_id')) - ->whereNotIn('id', collect(($repeater = $component->getParentRepeater())->getState()) + ->whereNotIn( + 'id', + collect(($repeater = $component->getParentRepeater())->getState()) ->pluck( (string) str($component->getStatePath()) ->after("{$repeater->getStatePath()}.") @@ -445,66 +446,6 @@ class ServerResource extends Resource ]) ->required(), ]), - - Forms\Components\Textarea::make('startup') - ->hintIcon('tabler-code') - ->label('Startup Command') - ->required() - ->live() - ->rows(function ($state) { - return str($state)->explode("\n")->reduce( - fn (int $carry, $line) => $carry + floor(strlen($line) / 125), - 0 - ); - }) - ->columnSpanFull(), - - Forms\Components\Hidden::make('environment') - ->default([]) - ->columnSpanFull(), - - Forms\Components\Section::make('Egg Variables') - ->icon('tabler-eggs') - ->iconColor('primary') - ->collapsible() - ->collapsed() - ->schema([ - Forms\Components\Placeholder::make('Select an egg first to show its variables!') - ->hidden(fn (Forms\Get $get) => !empty($get('server_variables'))), - - Forms\Components\Repeater::make('server_variables') - ->relationship('serverVariables') - ->grid(2) - ->reorderable(false) - ->addable(false) - ->deletable(false) - ->default([]) - ->hidden(fn ($state) => empty($state)) - ->schema([ - Forms\Components\TextInput::make('variable_value') - ->rules([ - fn (Forms\Get $get): Closure => function (string $attribute, $value, Closure $fail) use ($get) { - $validator = Validator::make(['validatorkey' => $value], [ - 'validatorkey' => $get('rules'), - ]); - - if ($validator->fails()) { - $message = str($validator->errors()->first())->replace('validatorkey', $get('name')); - - $fail($message); - } - }, - ]) - ->label(fn (Forms\Get $get) => $get('name')) - ->hint(fn (Forms\Get $get) => $get('rules')) - ->prefix(fn (Forms\Get $get) => '{{' . $get('env_variable') . '}}') - ->helperText(fn (Forms\Get $get) => empty($get('description')) ? '—' : $get('description')) - ->maxLength(191), - - Forms\Components\Hidden::make('variable_id')->default(0), - ]) - ->columnSpanFull(), - ]), ]); } From e1c6545507c0d55b1a6642fd3a38cbaca6d3e927 Mon Sep 17 00:00:00 2001 From: Scai <59282365+alexevladgabriel@users.noreply.github.com> Date: Mon, 15 Apr 2024 01:55:44 +0300 Subject: [PATCH 142/173] styled database hosts layout --- .../Resources/DatabaseHostResource.php | 74 ++++++++++--------- 1 file changed, 40 insertions(+), 34 deletions(-) diff --git a/app/Filament/Resources/DatabaseHostResource.php b/app/Filament/Resources/DatabaseHostResource.php index abfcc2ce9..cc53f6b4a 100644 --- a/app/Filament/Resources/DatabaseHostResource.php +++ b/app/Filament/Resources/DatabaseHostResource.php @@ -5,6 +5,7 @@ namespace App\Filament\Resources; use App\Filament\Resources\DatabaseHostResource\Pages; use App\Models\DatabaseHost; use Filament\Forms; +use Filament\Forms\Components\Section; use Filament\Forms\Form; use Filament\Resources\Resource; use Filament\Tables; @@ -22,40 +23,45 @@ class DatabaseHostResource extends Resource { return $form ->schema([ - Forms\Components\TextInput::make('host') - ->helperText('The IP address or Domain name that should be used when attempting to connect to this MySQL host from this Panel to create new databases.') - ->required() - ->live() - ->debounce(500) - ->afterStateUpdated(fn ($state, Forms\Set $set) => $set('name', $state)) - ->maxLength(191), - Forms\Components\TextInput::make('port') - ->helperText('The port that MySQL is running on for this host.') - ->required() - ->numeric() - ->default(3306) - ->minValue(0) - ->maxValue(65535), - Forms\Components\TextInput::make('username') - ->helperText('The username of an account that has enough permissions to create new users and databases on the system.') - ->required() - ->maxLength(191), - Forms\Components\TextInput::make('password') - ->helperText('The password for the database user.') - ->password() - ->revealable() - ->maxLength(191) - ->required(), - Forms\Components\TextInput::make('name') - ->helperText('A short identifier used to distinguish this location from others. Must be between 1 and 60 characters, for example, us.nyc.lvl3.') - ->required() - ->maxLength(60), - Forms\Components\Select::make('node_id') - ->searchable() - ->preload() - ->helperText('This setting only defaults to this database host when adding a database to a server on the selected node.') - ->label('Linked Node') - ->relationship('node', 'name'), + Section::make()->schema([ + Forms\Components\TextInput::make('host') + ->helperText('The IP address or Domain name that should be used when attempting to connect to this MySQL host from this Panel to create new databases.') + ->required() + ->live() + ->debounce(500) + ->afterStateUpdated(fn ($state, Forms\Set $set) => $set('name', $state)) + ->maxLength(191), + Forms\Components\TextInput::make('port') + ->helperText('The port that MySQL is running on for this host.') + ->required() + ->numeric() + ->default(3306) + ->minValue(0) + ->maxValue(65535), + Forms\Components\TextInput::make('username') + ->helperText('The username of an account that has enough permissions to create new users and databases on the system.') + ->required() + ->maxLength(191), + Forms\Components\TextInput::make('password') + ->helperText('The password for the database user.') + ->password() + ->revealable() + ->maxLength(191) + ->required(), + Forms\Components\TextInput::make('name') + ->helperText('A short identifier used to distinguish this location from others. Must be between 1 and 60 characters, for example, us.nyc.lvl3.') + ->required() + ->maxLength(60), + Forms\Components\Select::make('node_id') + ->searchable() + ->preload() + ->helperText('This setting only defaults to this database host when adding a database to a server on the selected node.') + ->label('Linked Node') + ->relationship('node', 'name'), + ])->columns([ + 'default' => 1, + 'lg' => 2, + ]), ]); } From 2743698e2c6c1dc9fcf0e4cfdad51f20525b96ee Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Sun, 14 Apr 2024 21:23:41 -0400 Subject: [PATCH 143/173] Fix these again --- .github/workflows/build.yaml | 3 --- .github/workflows/ci.yaml | 2 +- .github/workflows/lint.yaml | 3 --- 3 files changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 4aed1d674..be1b59369 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -1,9 +1,6 @@ name: Build on: - push: - branches: - - '**' pull_request: branches: - '**' diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 95458fcd2..81f80c4e9 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1,7 +1,7 @@ name: Tests on: - push: + pull_request: branches: - '**' diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index ab4515283..3dd538aad 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -1,9 +1,6 @@ name: Lint on: - push: - branches: - - '**' pull_request: branches: - '**' From 65359f87d0ade2dbef6e25e658eca1d66853b06c Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Mon, 15 Apr 2024 01:15:09 -0400 Subject: [PATCH 144/173] Nobody needs to see my mistakes --- database/Seeders/eggs/minecraft/egg-bungeecord.json | 10 +++++----- .../Seeders/eggs/minecraft/egg-forge-minecraft.json | 8 ++++---- database/Seeders/eggs/minecraft/egg-paper.json | 10 +++++----- .../eggs/minecraft/egg-sponge--sponge-vanilla.json | 8 ++++---- .../Seeders/eggs/minecraft/egg-vanilla-minecraft.json | 10 +++++----- database/Seeders/eggs/rust/egg-rust.json | 4 ++-- .../egg-counter--strike--global-offensive.json | 4 ++-- .../source-engine/egg-custom-source-engine-game.json | 4 ++-- .../Seeders/eggs/source-engine/egg-garrys-mod.json | 4 ++-- .../Seeders/eggs/source-engine/egg-insurgency.json | 4 ++-- .../Seeders/eggs/source-engine/egg-team-fortress2.json | 4 ++-- .../Seeders/eggs/voice-servers/egg-mumble-server.json | 2 +- .../eggs/voice-servers/egg-teamspeak3-server.json | 4 ++-- 13 files changed, 38 insertions(+), 38 deletions(-) diff --git a/database/Seeders/eggs/minecraft/egg-bungeecord.json b/database/Seeders/eggs/minecraft/egg-bungeecord.json index 52e70cada..9865c4562 100644 --- a/database/Seeders/eggs/minecraft/egg-bungeecord.json +++ b/database/Seeders/eggs/minecraft/egg-bungeecord.json @@ -14,10 +14,10 @@ "pid_limit" ], "docker_images": { - "Java 17": "ghcr.io\/App\/yolks:java_17", - "Java 16": "ghcr.io\/App\/yolks:java_16", - "Java 11": "ghcr.io\/App\/yolks:java_11", - "Java 8": "ghcr.io\/App\/yolks:java_8" + "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", + "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", + "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8" }, "file_denylist": [], "startup": "java -Xms128M -XX:MaxRAMPercentage=95.0 -jar {{SERVER_JARFILE}}", @@ -30,7 +30,7 @@ "scripts": { "installation": { "script": "#!\/bin\/ash\r\n# Bungeecord Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\ncd \/mnt\/server\r\n\r\nif [ -z \"${BUNGEE_VERSION}\" ] || [ \"${BUNGEE_VERSION}\" == \"latest\" ]; then\r\n BUNGEE_VERSION=\"lastStableBuild\"\r\nfi\r\n\r\ncurl -o ${SERVER_JARFILE} https:\/\/ci.md-5.net\/job\/BungeeCord\/${BUNGEE_VERSION}\/artifact\/bootstrap\/target\/BungeeCord.jar", - "container": "ghcr.io\/App\/installers:alpine", + "container": "ghcr.io\/pterodactyl\/installers:alpine", "entrypoint": "ash" } }, diff --git a/database/Seeders/eggs/minecraft/egg-forge-minecraft.json b/database/Seeders/eggs/minecraft/egg-forge-minecraft.json index 824ef1708..520b0603a 100644 --- a/database/Seeders/eggs/minecraft/egg-forge-minecraft.json +++ b/database/Seeders/eggs/minecraft/egg-forge-minecraft.json @@ -14,10 +14,10 @@ "pid_limit" ], "docker_images": { - "Java 17": "ghcr.io\/App\/yolks:java_17", - "Java 16": "ghcr.io\/App\/yolks:java_16", - "Java 11": "ghcr.io\/App\/yolks:java_11", - "Java 8": "ghcr.io\/App\/yolks:java_8" + "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", + "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", + "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8" }, "file_denylist": [], "startup": "java -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true $( [[ ! -f unix_args.txt ]] && printf %s \"-jar {{SERVER_JARFILE}}\" || printf %s \"@unix_args.txt\" )", diff --git a/database/Seeders/eggs/minecraft/egg-paper.json b/database/Seeders/eggs/minecraft/egg-paper.json index 5cd95c2e9..7542f3f1b 100644 --- a/database/Seeders/eggs/minecraft/egg-paper.json +++ b/database/Seeders/eggs/minecraft/egg-paper.json @@ -14,10 +14,10 @@ "pid_limit" ], "docker_images": { - "Java 17": "ghcr.io\/App\/yolks:java_17", - "Java 16": "ghcr.io\/App\/yolks:java_16", - "Java 11": "ghcr.io\/App\/yolks:java_11", - "Java 8": "ghcr.io\/App\/yolks:java_8" + "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", + "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", + "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8" }, "file_denylist": [], "startup": "java -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}}", @@ -30,7 +30,7 @@ "scripts": { "installation": { "script": "#!\/bin\/ash\r\n# Paper Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nPROJECT=paper\r\n\r\nif [ -n \"${DL_PATH}\" ]; then\r\n\techo -e \"Using supplied download url: ${DL_PATH}\"\r\n\tDOWNLOAD_URL=`eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g')`\r\nelse\r\n\tVER_EXISTS=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep -m1 true`\r\n\tLATEST_VERSION=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT} | jq -r '.versions' | jq -r '.[-1]'`\r\n\r\n\tif [ \"${VER_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Version is valid. Using version ${MINECRAFT_VERSION}\"\r\n\telse\r\n\t\techo -e \"Specified version not found. Defaulting to the latest ${PROJECT} version\"\r\n\t\tMINECRAFT_VERSION=${LATEST_VERSION}\r\n\tfi\r\n\r\n\tBUILD_EXISTS=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep -m1 true`\r\n\tLATEST_BUILD=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r '.builds' | jq -r '.[-1]'`\r\n\r\n\tif [ \"${BUILD_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Build is valid for version ${MINECRAFT_VERSION}. Using build ${BUILD_NUMBER}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} build for version ${MINECRAFT_VERSION}\"\r\n\t\tBUILD_NUMBER=${LATEST_BUILD}\r\n\tfi\r\n\r\n\tJAR_NAME=${PROJECT}-${MINECRAFT_VERSION}-${BUILD_NUMBER}.jar\r\n\r\n\techo \"Version being downloaded\"\r\n\techo -e \"MC Version: ${MINECRAFT_VERSION}\"\r\n\techo -e \"Build: ${BUILD_NUMBER}\"\r\n\techo -e \"JAR Name of Build: ${JAR_NAME}\"\r\n\tDOWNLOAD_URL=https:\/\/api.papermc.io\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION}\/builds\/${BUILD_NUMBER}\/downloads\/${JAR_NAME}\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\"\r\n\r\nif [ -f ${SERVER_JARFILE} ]; then\r\n\tmv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\n\r\ncurl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\n\r\nif [ ! -f server.properties ]; then\r\n echo -e \"Downloading MC server.properties\"\r\n curl -o server.properties https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/minecraft\/java\/server.properties\r\nfi", - "container": "ghcr.io\/App\/installers:alpine", + "container": "ghcr.io\/pterodactyl\/installers:alpine", "entrypoint": "ash" } }, diff --git a/database/Seeders/eggs/minecraft/egg-sponge--sponge-vanilla.json b/database/Seeders/eggs/minecraft/egg-sponge--sponge-vanilla.json index 58f057a07..64f69ec98 100644 --- a/database/Seeders/eggs/minecraft/egg-sponge--sponge-vanilla.json +++ b/database/Seeders/eggs/minecraft/egg-sponge--sponge-vanilla.json @@ -14,9 +14,9 @@ "pid_limit" ], "docker_images": { - "Java 16": "ghcr.io\/App\/yolks:java_16", - "Java 11": "ghcr.io\/App\/yolks:java_11", - "Java 8": "ghcr.io\/App\/yolks:java_8" + "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", + "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8" }, "file_denylist": [], "startup": "java -Xms128M -XX:MaxRAMPercentage=95.0 -jar {{SERVER_JARFILE}}", @@ -29,7 +29,7 @@ "scripts": { "installation": { "script": "#!\/bin\/ash\r\n# Sponge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\ncd \/mnt\/server\r\n\r\ncurl -sSL \"https:\/\/repo.spongepowered.org\/maven\/org\/spongepowered\/spongevanilla\/${SPONGE_VERSION}\/spongevanilla-${SPONGE_VERSION}.jar\" -o ${SERVER_JARFILE}", - "container": "ghcr.io\/App\/installers:alpine", + "container": "ghcr.io\/pterodactyl\/installers:alpine", "entrypoint": "ash" } }, diff --git a/database/Seeders/eggs/minecraft/egg-vanilla-minecraft.json b/database/Seeders/eggs/minecraft/egg-vanilla-minecraft.json index 7a8e65e67..99e7c9e05 100644 --- a/database/Seeders/eggs/minecraft/egg-vanilla-minecraft.json +++ b/database/Seeders/eggs/minecraft/egg-vanilla-minecraft.json @@ -14,10 +14,10 @@ "pid_limit" ], "docker_images": { - "Java 17": "ghcr.io\/App\/yolks:java_17", - "Java 16": "ghcr.io\/App\/yolks:java_16", - "Java 11": "ghcr.io\/App\/yolks:java_11", - "Java 8": "ghcr.io\/App\/yolks:java_8" + "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", + "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", + "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8" }, "file_denylist": [], "startup": "java -Xms128M -XX:MaxRAMPercentage=95.0 -jar {{SERVER_JARFILE}}", @@ -30,7 +30,7 @@ "scripts": { "installation": { "script": "#!\/bin\/ash\r\n# Vanilla MC Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nLATEST_VERSION=`curl https:\/\/launchermeta.mojang.com\/mc\/game\/version_manifest.json | jq -r '.latest.release'`\r\nLATEST_SNAPSHOT_VERSION=`curl https:\/\/launchermeta.mojang.com\/mc\/game\/version_manifest.json | jq -r '.latest.snapshot'`\r\n\r\necho -e \"latest version is $LATEST_VERSION\"\r\necho -e \"latest snapshot is $LATEST_SNAPSHOT_VERSION\"\r\n\r\nif [ -z \"$VANILLA_VERSION\" ] || [ \"$VANILLA_VERSION\" == \"latest\" ]; then\r\n MANIFEST_URL=$(curl -sSL https:\/\/launchermeta.mojang.com\/mc\/game\/version_manifest.json | jq --arg VERSION $LATEST_VERSION -r '.versions | .[] | select(.id== $VERSION )|.url')\r\nelif [ \"$VANILLA_VERSION\" == \"snapshot\" ]; then\r\n MANIFEST_URL=$(curl -sSL https:\/\/launchermeta.mojang.com\/mc\/game\/version_manifest.json | jq --arg VERSION $LATEST_SNAPSHOT_VERSION -r '.versions | .[] | select(.id== $VERSION )|.url')\r\nelse\r\n MANIFEST_URL=$(curl -sSL https:\/\/launchermeta.mojang.com\/mc\/game\/version_manifest.json | jq --arg VERSION $VANILLA_VERSION -r '.versions | .[] | select(.id== $VERSION )|.url')\r\nfi\r\n\r\nDOWNLOAD_URL=$(curl ${MANIFEST_URL} | jq .downloads.server | jq -r '. | .url')\r\n\r\necho -e \"running: curl -o ${SERVER_JARFILE} $DOWNLOAD_URL\"\r\ncurl -o ${SERVER_JARFILE} $DOWNLOAD_URL\r\n\r\necho -e \"Install Complete\"", - "container": "ghcr.io\/App\/installers:alpine", + "container": "ghcr.io\/pterodactyl\/installers:alpine", "entrypoint": "ash" } }, diff --git a/database/Seeders/eggs/rust/egg-rust.json b/database/Seeders/eggs/rust/egg-rust.json index 2f6141020..2372a3693 100644 --- a/database/Seeders/eggs/rust/egg-rust.json +++ b/database/Seeders/eggs/rust/egg-rust.json @@ -12,7 +12,7 @@ "steam_disk_space" ], "docker_images": { - "ghcr.io\/App\/games:rust": "ghcr.io\/App\/games:rust" + "ghcr.io\/pterodactyl\/games:rust": "ghcr.io\/pterodactyl\/games:rust" }, "file_denylist": [], "startup": ".\/RustDedicated -batchmode +server.port {{SERVER_PORT}} +server.queryport {{QUERY_PORT}} +server.identity \"rust\" +rcon.port {{RCON_PORT}} +rcon.web true +server.hostname \\\"{{HOSTNAME}}\\\" +server.level \\\"{{LEVEL}}\\\" +server.description \\\"{{DESCRIPTION}}\\\" +server.url \\\"{{SERVER_URL}}\\\" +server.headerimage \\\"{{SERVER_IMG}}\\\" +server.logoimage \\\"{{SERVER_LOGO}}\\\" +server.maxplayers {{MAX_PLAYERS}} +rcon.password \\\"{{RCON_PASS}}\\\" +server.saveinterval {{SAVEINTERVAL}} +app.port {{APP_PORT}} $( [ -z ${MAP_URL} ] && printf %s \"+server.worldsize \\\"{{WORLD_SIZE}}\\\" +server.seed \\\"{{WORLD_SEED}}\\\"\" || printf %s \"+server.levelurl {{MAP_URL}}\" ) {{ADDITIONAL_ARGS}}", @@ -25,7 +25,7 @@ "scripts": { "installation": { "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\nSRCDS_APPID=258550\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so", - "container": "ghcr.io\/App\/installers:debian", + "container": "ghcr.io\/pterodactyl\/installers:debian", "entrypoint": "bash" } }, diff --git a/database/Seeders/eggs/source-engine/egg-counter--strike--global-offensive.json b/database/Seeders/eggs/source-engine/egg-counter--strike--global-offensive.json index 7e8d6e085..f5b239342 100644 --- a/database/Seeders/eggs/source-engine/egg-counter--strike--global-offensive.json +++ b/database/Seeders/eggs/source-engine/egg-counter--strike--global-offensive.json @@ -13,7 +13,7 @@ "steam_disk_space" ], "images": [ - "ghcr.io\/App\/games:source" + "ghcr.io\/pterodactyl\/games:source" ], "file_denylist": [], "startup": ".\/srcds_run -game csgo -console -port {{SERVER_PORT}} +ip 0.0.0.0 +map {{SRCDS_MAP}} -strictportbind -norestart +sv_setsteamaccount {{STEAM_ACC}}", @@ -26,7 +26,7 @@ "scripts": { "installation": { "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so", - "container": "ghcr.io\/App\/installers:debian", + "container": "ghcr.io\/pterodactyl\/installers:debian", "entrypoint": "bash" } }, diff --git a/database/Seeders/eggs/source-engine/egg-custom-source-engine-game.json b/database/Seeders/eggs/source-engine/egg-custom-source-engine-game.json index 0d412d6b7..5c9ff6a93 100644 --- a/database/Seeders/eggs/source-engine/egg-custom-source-engine-game.json +++ b/database/Seeders/eggs/source-engine/egg-custom-source-engine-game.json @@ -12,7 +12,7 @@ "steam_disk_space" ], "images": [ - "ghcr.io\/App\/games:source" + "ghcr.io\/pterodactyl\/games:source" ], "file_denylist": [], "startup": ".\/srcds_run -game {{SRCDS_GAME}} -console -port {{SERVER_PORT}} +map {{SRCDS_MAP}} +ip 0.0.0.0 -strictportbind -norestart", @@ -25,7 +25,7 @@ "scripts": { "installation": { "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id ffound here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# EXTRA_FLAGS - when a server has extra glas for things like beta installs or updates.\r\n#\r\n##\r\n\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so", - "container": "ghcr.io\/App\/installers:debian", + "container": "ghcr.io\/pterodactyl\/installers:debian", "entrypoint": "bash" } }, diff --git a/database/Seeders/eggs/source-engine/egg-garrys-mod.json b/database/Seeders/eggs/source-engine/egg-garrys-mod.json index ed59662bc..e21890f1b 100644 --- a/database/Seeders/eggs/source-engine/egg-garrys-mod.json +++ b/database/Seeders/eggs/source-engine/egg-garrys-mod.json @@ -13,7 +13,7 @@ "steam_disk_space" ], "images": [ - "ghcr.io\/App\/games:source" + "ghcr.io\/pterodactyl\/games:source" ], "file_denylist": [], "startup": ".\/srcds_run -game garrysmod -console -port {{SERVER_PORT}} +ip 0.0.0.0 +host_workshop_collection {{WORKSHOP_ID}} +map {{SRCDS_MAP}} +gamemode {{GAMEMODE}} -strictportbind -norestart +sv_setsteamaccount {{STEAM_ACC}} +maxplayers {{MAX_PLAYERS}} -tickrate {{TICKRATE}} $( [ \"$LUA_REFRESH\" == \"1\" ] || printf %s '-disableluarefresh' )", @@ -26,7 +26,7 @@ "scripts": { "installation": { "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n# Creating needed default files for the game\r\ncd \/mnt\/server\/garrysmod\/lua\/autorun\/server\r\necho '\r\n-- Docs: https:\/\/wiki.garrysmod.com\/page\/resource\/AddWorkshop\r\n-- Place the ID of the workshop addon you want to be downloaded to people who join your server, not the collection ID\r\n-- Use https:\/\/beta.configcreator.com\/create\/gmod\/resources.lua to easily create a list based on your collection ID\r\n\r\nresource.AddWorkshop( \"\" )\r\n' > workshop.lua\r\n\r\ncd \/mnt\/server\/garrysmod\/cfg\r\necho '\r\n\/\/ Please do not set RCon in here, use the startup parameters.\r\n\r\nhostname\t\t\"New Gmod Server\"\r\nsv_password\t\t\"\"\r\nsv_loadingurl \"\"\r\nsv_downloadurl \"\"\r\n\r\n\/\/ Steam Server List Settings\r\n\/\/ sv_location \"eu\"\r\nsv_region \"255\"\r\nsv_lan \"0\"\r\nsv_max_queries_sec_global \"30000\"\r\nsv_max_queries_window \"45\"\r\nsv_max_queries_sec \"5\"\r\n\r\n\/\/ Server Limits\r\nsbox_maxprops\t\t100\r\nsbox_maxragdolls\t5\r\nsbox_maxnpcs\t\t10\r\nsbox_maxballoons\t10\r\nsbox_maxeffects\t\t10\r\nsbox_maxdynamite\t10\r\nsbox_maxlamps\t\t10\r\nsbox_maxthrusters\t10\r\nsbox_maxwheels\t\t10\r\nsbox_maxhoverballs\t10\r\nsbox_maxvehicles\t20\r\nsbox_maxbuttons\t\t10\r\nsbox_maxsents\t\t20\r\nsbox_maxemitters\t5\r\nsbox_godmode\t\t0\r\nsbox_noclip\t\t 0\r\n\r\n\/\/ Network Settings - Please keep these set to default.\r\n\r\nsv_minrate\t\t75000\r\nsv_maxrate\t\t0\r\ngmod_physiterations\t2\r\nnet_splitpacket_maxrate\t45000\r\ndecalfrequency\t\t12 \r\n\r\n\/\/ Execute Ban Files - Please do not edit\r\nexec banned_ip.cfg \r\nexec banned_user.cfg \r\n\r\n\/\/ Add custom lines under here\r\n' > server.cfg", - "container": "ghcr.io\/App\/installers:debian", + "container": "ghcr.io\/pterodactyl\/installers:debian", "entrypoint": "bash" } }, diff --git a/database/Seeders/eggs/source-engine/egg-insurgency.json b/database/Seeders/eggs/source-engine/egg-insurgency.json index 5a98d812d..018e45aa6 100644 --- a/database/Seeders/eggs/source-engine/egg-insurgency.json +++ b/database/Seeders/eggs/source-engine/egg-insurgency.json @@ -12,7 +12,7 @@ "steam_disk_space" ], "images": [ - "ghcr.io\/App\/games:source" + "ghcr.io\/pterodactyl\/games:source" ], "file_denylist": [], "startup": ".\/srcds_run -game insurgency -console -port {{SERVER_PORT}} +map {{SRCDS_MAP}} +ip 0.0.0.0 -strictportbind -norestart", @@ -25,7 +25,7 @@ "scripts": { "installation": { "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login anonymous +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so", - "container": "ghcr.io\/App\/installers:debian", + "container": "ghcr.io\/pterodactyl\/installers:debian", "entrypoint": "bash" } }, diff --git a/database/Seeders/eggs/source-engine/egg-team-fortress2.json b/database/Seeders/eggs/source-engine/egg-team-fortress2.json index 72eaefea6..e0a9adcec 100644 --- a/database/Seeders/eggs/source-engine/egg-team-fortress2.json +++ b/database/Seeders/eggs/source-engine/egg-team-fortress2.json @@ -13,7 +13,7 @@ "steam_disk_space" ], "images": [ - "ghcr.io\/App\/games:source" + "ghcr.io\/pterodactyl\/games:source" ], "file_denylist": [], "startup": ".\/srcds_run -game tf -console -port {{SERVER_PORT}} +map {{SRCDS_MAP}} +ip 0.0.0.0 -strictportbind -norestart +sv_setsteamaccount {{STEAM_ACC}}", @@ -26,7 +26,7 @@ "scripts": { "installation": { "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'debian:buster-slim'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id ffound here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# EXTRA_FLAGS - when a server has extra glas for things like beta installs or updates.\r\n#\r\n##\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so", - "container": "ghcr.io\/App\/installers:debian", + "container": "ghcr.io\/pterodactyl\/installers:debian", "entrypoint": "bash" } }, diff --git a/database/Seeders/eggs/voice-servers/egg-mumble-server.json b/database/Seeders/eggs/voice-servers/egg-mumble-server.json index 9360fc679..b796594d1 100644 --- a/database/Seeders/eggs/voice-servers/egg-mumble-server.json +++ b/database/Seeders/eggs/voice-servers/egg-mumble-server.json @@ -23,7 +23,7 @@ "scripts": { "installation": { "script": "#!\/bin\/ash\r\n\r\nif [ ! -d \/mnt\/server\/ ]; then\r\n mkdir \/mnt\/server\/\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\nFILE=\/mnt\/server\/murmur.ini\r\nif [ -f \"$FILE\" ]; then\r\n echo \"Config file already exists.\"\r\nelse \r\n echo \"Downloading the config file.\"\r\n apk add --no-cache murmur\r\n cp \/etc\/murmur.ini \/mnt\/server\/murmur.ini\r\n apk del murmur\r\nfi\r\necho \"done\"", - "container": "ghcr.io\/App\/installers:alpine", + "container": "ghcr.io\/pterodactyl\/installers:alpine", "entrypoint": "ash" } }, diff --git a/database/Seeders/eggs/voice-servers/egg-teamspeak3-server.json b/database/Seeders/eggs/voice-servers/egg-teamspeak3-server.json index ed927da4c..a71c67d20 100644 --- a/database/Seeders/eggs/voice-servers/egg-teamspeak3-server.json +++ b/database/Seeders/eggs/voice-servers/egg-teamspeak3-server.json @@ -10,7 +10,7 @@ "description": "VoIP software designed with security in mind, featuring crystal clear voice quality, endless customization options, and scalabilty up to thousands of simultaneous users.", "features": null, "images": [ - "ghcr.io\/App\/yolks:debian" + "ghcr.io\/pterodactyl\/yolks:debian" ], "file_denylist": [], "startup": ".\/ts3server default_voice_port={{SERVER_PORT}} query_port={{QUERY_PORT}} filetransfer_ip=0.0.0.0 filetransfer_port={{FILE_TRANSFER}} query_http_port={{QUERY_HTTP}} query_ssh_port={{QUERY_SSH}} query_protocols={{QUERY_PROTOCOLS_VAR}} license_accepted=1", @@ -23,7 +23,7 @@ "scripts": { "installation": { "script": "#!\/bin\/ash\r\n# TS3 Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\nif [ -z ${TS_VERSION} ] || [ ${TS_VERSION} == latest ]; then\r\n TS_VERSION=$(curl -sSL https:\/\/teamspeak.com\/versions\/server.json | jq -r '.linux.x86_64.version')\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"getting files from http:\/\/files.teamspeak-services.com\/releases\/server\/${TS_VERSION}\/teamspeak3-server_linux_amd64-${TS_VERSION}.tar.bz2\" \r\ncurl -L http:\/\/files.teamspeak-services.com\/releases\/server\/${TS_VERSION}\/teamspeak3-server_linux_amd64-${TS_VERSION}.tar.bz2 | tar -xvj --strip-components=1\r\ncp .\/redist\/libmariadb.so.2 .\/", - "container": "ghcr.io\/App\/installers:alpine", + "container": "ghcr.io\/pterodactyl\/installers:alpine", "entrypoint": "ash" } }, From 56e2cac85f5b26c0cf8126639acd72892720ebc2 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Mon, 15 Apr 2024 01:34:07 -0400 Subject: [PATCH 145/173] Always just start automatically for now --- app/Filament/Resources/ServerResource.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index b8df26613..22181628b 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -326,6 +326,8 @@ class ServerResource extends Resource Forms\Components\Hidden::make('environment')->default([]), + Forms\Components\Hidden::make('start_on_completion')->default(true), + Forms\Components\Section::make('Egg Variables') ->icon('tabler-eggs') ->iconColor('primary') From 9b9875a31b9fa4ee61320c1673eefb4f03fcedf9 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Mon, 15 Apr 2024 01:34:17 -0400 Subject: [PATCH 146/173] Whoops --- app/Repositories/Daemon/DaemonServerRepository.php | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/app/Repositories/Daemon/DaemonServerRepository.php b/app/Repositories/Daemon/DaemonServerRepository.php index 1c2dc1ab2..19a0d2ec2 100644 --- a/app/Repositories/Daemon/DaemonServerRepository.php +++ b/app/Repositories/Daemon/DaemonServerRepository.php @@ -40,11 +40,9 @@ class DaemonServerRepository extends DaemonRepository Assert::isInstanceOf($this->server, Server::class); try { - $this->getHttpClient()->post('/api/servers', [ - 'json' => [ - 'uuid' => $this->server->uuid, - 'start_on_completion' => $startOnCompletion, - ], + $response = $this->getHttpClient()->post('/api/servers', [ + 'uuid' => $this->server->uuid, + 'start_on_completion' => $startOnCompletion, ]); } catch (GuzzleException $exception) { throw new DaemonConnectionException($exception); From 8ec4dc1b6e70586dae1a4b7a82e99e942c0a3efb Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Mon, 15 Apr 2024 01:34:27 -0400 Subject: [PATCH 147/173] Cool status bars --- app/Filament/Resources/ServerResource.php | 63 +++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 22181628b..d5fc4dfea 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -7,6 +7,7 @@ use App\Models\Allocation; use App\Models\Egg; use App\Models\Node; use App\Models\Server; +use App\Repositories\Daemon\DaemonServerRepository; use App\Services\Allocations\AssignmentService; use Closure; use Filament\Forms; @@ -17,6 +18,7 @@ use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Arr; use Illuminate\Support\Facades\Validator; +use Illuminate\Support\Str; class ServerResource extends Resource { @@ -31,6 +33,67 @@ class ServerResource extends Resource return $form ->columns(6) ->schema([ + Forms\Components\ToggleButtons::make('docker') + ->label('Container Status') + ->hiddenOn('create') + ->disableOptionWhen(fn ($state, $value) => $state !== $value) + ->formatStateUsing(function ($state, Server $server) { + if ($server->node_id === null) { + return 'unknown'; + } + + /** @var DaemonServerRepository $service */ + $service = resolve(DaemonServerRepository::class); + $details = $service->setServer($server)->getDetails(); + + return $details['state'] ?? 'unknown'; + }) + ->options([ + 'running' => 'Running', + 'starting' => 'Starting', + 'stopping' => 'Stopping', + 'offline' => 'Offline', + 'unknown' => 'Unknown', + ]) + + ->colors([ + 'running' => 'success', + 'offline' => 'danger', + 'starting' => 'primary', + 'stopping' => 'warning', + 'unknown' => 'primary', + ]) + ->grouped() + ->columnSpanFull() + ->inline(), + + Forms\Components\ToggleButtons::make('status') + ->label('Server State') + ->helperText('') + ->hiddenOn('create') + ->disableOptionWhen(fn ($state, $value) => $state !== $value) + ->formatStateUsing(fn ($state) => $state ?? 'none') + ->options([ + 'none' => 'None', + Server::STATUS_INSTALLING => str(Server::STATUS_INSTALLING)->title()->replace('_', ' '), + Server::STATUS_INSTALL_FAILED => str(Server::STATUS_INSTALL_FAILED)->title()->replace('_', ' '), + Server::STATUS_REINSTALL_FAILED => str(Server::STATUS_REINSTALL_FAILED)->title()->replace('_', ' '), + Server::STATUS_SUSPENDED => str(Server::STATUS_SUSPENDED)->title()->replace('_', ' '), + Server::STATUS_RESTORING_BACKUP => str(Server::STATUS_RESTORING_BACKUP)->title()->replace('_', ' '), + ]) + + ->colors([ + 'none' => 'primary', + Server::STATUS_INSTALLING => 'primary', + Server::STATUS_INSTALL_FAILED => 'danger', + Server::STATUS_REINSTALL_FAILED => 'danger', + Server::STATUS_SUSPENDED => 'danger', + Server::STATUS_RESTORING_BACKUP => 'primary', + ]) + ->grouped() + ->columnSpanFull() + ->inline(), + Forms\Components\TextInput::make('external_id') ->maxLength(191) ->hidden(), From b70ab0e6ccd876b42529c81bcdab41284f89344c Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Mon, 15 Apr 2024 01:39:59 -0400 Subject: [PATCH 148/173] Adjust these --- .../Daemon/DaemonBackupRepository.php | 16 ++--- .../Daemon/DaemonConfigurationRepository.php | 2 +- .../Daemon/DaemonFileRepository.php | 62 ++++++++----------- .../Daemon/DaemonPowerRepository.php | 2 +- 4 files changed, 34 insertions(+), 48 deletions(-) diff --git a/app/Repositories/Daemon/DaemonBackupRepository.php b/app/Repositories/Daemon/DaemonBackupRepository.php index 355ebc1f0..bbe852e80 100644 --- a/app/Repositories/Daemon/DaemonBackupRepository.php +++ b/app/Repositories/Daemon/DaemonBackupRepository.php @@ -35,11 +35,9 @@ class DaemonBackupRepository extends DaemonRepository return $this->getHttpClient()->post( sprintf('/api/servers/%s/backup', $this->server->uuid), [ - 'json' => [ - 'adapter' => $this->adapter ?? config('backups.default'), - 'uuid' => $backup->uuid, - 'ignore' => implode("\n", $backup->ignored_files), - ], + 'adapter' => $this->adapter ?? config('backups.default'), + 'uuid' => $backup->uuid, + 'ignore' => implode("\n", $backup->ignored_files), ] ); } catch (TransferException $exception) { @@ -60,11 +58,9 @@ class DaemonBackupRepository extends DaemonRepository return $this->getHttpClient()->post( sprintf('/api/servers/%s/backup/%s/restore', $this->server->uuid, $backup->uuid), [ - 'json' => [ - 'adapter' => $backup->disk, - 'truncate_directory' => $truncate, - 'download_url' => $url ?? '', - ], + 'adapter' => $backup->disk, + 'truncate_directory' => $truncate, + 'download_url' => $url ?? '', ] ); } catch (TransferException $exception) { diff --git a/app/Repositories/Daemon/DaemonConfigurationRepository.php b/app/Repositories/Daemon/DaemonConfigurationRepository.php index 2b8de3b71..194119629 100644 --- a/app/Repositories/Daemon/DaemonConfigurationRepository.php +++ b/app/Repositories/Daemon/DaemonConfigurationRepository.php @@ -39,7 +39,7 @@ class DaemonConfigurationRepository extends DaemonRepository try { return $this->getHttpClient()->post( '/api/update', - ['json' => $node->getConfiguration()] + $node->getConfiguration(), ); } catch (TransferException $exception) { throw new DaemonConnectionException($exception); diff --git a/app/Repositories/Daemon/DaemonFileRepository.php b/app/Repositories/Daemon/DaemonFileRepository.php index a7d4f6e9a..ad1903a68 100644 --- a/app/Repositories/Daemon/DaemonFileRepository.php +++ b/app/Repositories/Daemon/DaemonFileRepository.php @@ -103,10 +103,8 @@ class DaemonFileRepository extends DaemonRepository return $this->getHttpClient()->post( sprintf('/api/servers/%s/files/create-directory', $this->server->uuid), [ - 'json' => [ - 'name' => $name, - 'path' => $path, - ], + 'name' => $name, + 'path' => $path, ] ); } catch (TransferException $exception) { @@ -151,9 +149,7 @@ class DaemonFileRepository extends DaemonRepository return $this->getHttpClient()->post( sprintf('/api/servers/%s/files/copy', $this->server->uuid), [ - 'json' => [ - 'location' => $location, - ], + 'location' => $location, ] ); } catch (TransferException $exception) { @@ -174,10 +170,8 @@ class DaemonFileRepository extends DaemonRepository return $this->getHttpClient()->post( sprintf('/api/servers/%s/files/delete', $this->server->uuid), [ - 'json' => [ - 'root' => $root ?? '/', - 'files' => $files, - ], + 'root' => $root ?? '/', + 'files' => $files, ] ); } catch (TransferException $exception) { @@ -195,18 +189,17 @@ class DaemonFileRepository extends DaemonRepository Assert::isInstanceOf($this->server, Server::class); try { - $response = $this->getHttpClient()->post( - sprintf('/api/servers/%s/files/compress', $this->server->uuid), - [ - 'json' => [ + $response = $this->getHttpClient() + // Wait for up to 15 minutes for the archive to be completed when calling this endpoint + // since it will likely take quite awhile for large directories. + ->timeout(60 * 15) + ->post( + sprintf('/api/servers/%s/files/compress', $this->server->uuid), + [ 'root' => $root ?? '/', 'files' => $files, - ], - // Wait for up to 15 minutes for the archive to be completed when calling this endpoint - // since it will likely take quite awhile for large directories. - 'timeout' => 60 * 15, - ] - ); + ] + ); } catch (TransferException $exception) { throw new DaemonConnectionException($exception); } @@ -224,18 +217,17 @@ class DaemonFileRepository extends DaemonRepository Assert::isInstanceOf($this->server, Server::class); try { - return $this->getHttpClient()->post( - sprintf('/api/servers/%s/files/decompress', $this->server->uuid), - [ - 'json' => [ + return $this->getHttpClient() + // Wait for up to 15 minutes for the decompress to be completed when calling this endpoint + // since it will likely take quite awhile for large directories. + ->timeout((int) CarbonInterval::minutes(15)->totalSeconds) + ->post( + sprintf('/api/servers/%s/files/decompress', $this->server->uuid), + [ 'root' => $root ?? '/', 'file' => $file, - ], - // Wait for up to 15 minutes for the decompress to be completed when calling this endpoint - // since it will likely take quite awhile for large directories. - 'timeout' => (int) CarbonInterval::minutes(15)->totalSeconds, - ] - ); + ] + ); } catch (TransferException $exception) { throw new DaemonConnectionException($exception); } @@ -254,10 +246,8 @@ class DaemonFileRepository extends DaemonRepository return $this->getHttpClient()->post( sprintf('/api/servers/%s/files/chmod', $this->server->uuid), [ - 'json' => [ - 'root' => $root ?? '/', - 'files' => $files, - ], + 'root' => $root ?? '/', + 'files' => $files, ] ); } catch (TransferException $exception) { @@ -286,7 +276,7 @@ class DaemonFileRepository extends DaemonRepository return $this->getHttpClient()->post( sprintf('/api/servers/%s/files/pull', $this->server->uuid), [ - 'json' => array_filter($attributes, fn ($value) => !is_null($value)), + array_filter($attributes, fn ($value) => !is_null($value)), ] ); } catch (TransferException $exception) { diff --git a/app/Repositories/Daemon/DaemonPowerRepository.php b/app/Repositories/Daemon/DaemonPowerRepository.php index c2a87a57d..ca3e03c44 100644 --- a/app/Repositories/Daemon/DaemonPowerRepository.php +++ b/app/Repositories/Daemon/DaemonPowerRepository.php @@ -21,7 +21,7 @@ class DaemonPowerRepository extends DaemonRepository try { return $this->getHttpClient()->post( sprintf('/api/servers/%s/power', $this->server->uuid), - ['json' => ['action' => $action]] + ['action' => $action], ); } catch (TransferException $exception) { throw new DaemonConnectionException($exception); From 1f95430507a365aa75e34efaedf5bd26866da71a Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Mon, 15 Apr 2024 02:14:54 -0400 Subject: [PATCH 149/173] Update Laravel to latest version --- composer.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/composer.lock b/composer.lock index eb3d9fa05..d3ade3465 100644 --- a/composer.lock +++ b/composer.lock @@ -2484,16 +2484,16 @@ }, { "name": "laravel/framework", - "version": "v11.0.8", + "version": "v11.3.1", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "0379a7ccb77e2029c43ce508fa76e251a0d68fce" + "reference": "3b87d0767e9cbddec46480d883010ba720e50dea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/0379a7ccb77e2029c43ce508fa76e251a0d68fce", - "reference": "0379a7ccb77e2029c43ce508fa76e251a0d68fce", + "url": "https://api.github.com/repos/laravel/framework/zipball/3b87d0767e9cbddec46480d883010ba720e50dea", + "reference": "3b87d0767e9cbddec46480d883010ba720e50dea", "shasum": "" }, "require": { @@ -2685,7 +2685,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-03-21T14:15:49+00:00" + "time": "2024-04-10T15:13:49+00:00" }, { "name": "laravel/helpers", From e899acbdbe698fabc4305936dc0fb85ba6f4055f Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Mon, 15 Apr 2024 02:15:06 -0400 Subject: [PATCH 150/173] Add docker container status enum --- app/Enums/ContainerStatus.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 app/Enums/ContainerStatus.php diff --git a/app/Enums/ContainerStatus.php b/app/Enums/ContainerStatus.php new file mode 100644 index 000000000..d99284763 --- /dev/null +++ b/app/Enums/ContainerStatus.php @@ -0,0 +1,14 @@ + Date: Mon, 15 Apr 2024 13:42:46 +0000 Subject: [PATCH 151/173] @MikkelHebel has signed the CLA in pelican-dev/panel#86 --- .cla-signatures/version1/cla.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.cla-signatures/version1/cla.json b/.cla-signatures/version1/cla.json index 99412fcdf..15bc4aa70 100644 --- a/.cla-signatures/version1/cla.json +++ b/.cla-signatures/version1/cla.json @@ -15,6 +15,14 @@ "created_at": "2024-04-14T01:59:04Z", "repoId": 774258963, "pullRequestNo": 66 + }, + { + "name": "MikkelHebel", + "id": 88710599, + "comment_id": 2056893499, + "created_at": "2024-04-15T13:42:34Z", + "repoId": 774258963, + "pullRequestNo": 86 } ] } \ No newline at end of file From b7c0829af926ce44ed7baa09cf761dacdddc5d0d Mon Sep 17 00:00:00 2001 From: notCharles Date: Mon, 15 Apr 2024 19:00:49 -0400 Subject: [PATCH 152/173] Add Monaco Known issues... Changing themes does not reload editor, F5 required. Editing a variable/docker images clears code box render, not sure how to fix this? reload on view? --- app/Filament/Resources/EggResource.php | 10 +- composer.json | 1 + composer.lock | 88 +++++- config/filament-monaco-editor.php | 270 ++++++++++++++++++ .../filament/plugins/monaco-editor.blade.php | 114 ++++++++ 5 files changed, 479 insertions(+), 4 deletions(-) create mode 100644 config/filament-monaco-editor.php create mode 100644 resources/views/filament/plugins/monaco-editor.blade.php diff --git a/app/Filament/Resources/EggResource.php b/app/Filament/Resources/EggResource.php index ceea46121..41d7d242b 100644 --- a/app/Filament/Resources/EggResource.php +++ b/app/Filament/Resources/EggResource.php @@ -3,6 +3,7 @@ namespace App\Filament\Resources; use App\Filament\Resources\EggResource\Pages; +use AbdelhamidErrahmouni\FilamentMonacoEditor\MonacoEditor; use App\Models\Egg; use Filament\Forms; use Filament\Forms\Form; @@ -98,7 +99,6 @@ class EggResource extends Resource Forms\Components\Tabs\Tab::make('Install Script') ->columns(3) ->schema([ - Forms\Components\Textarea::make('script_install')->rows(20)->columnSpanFull(), Forms\Components\Select::make('copy_script_from') ->placeholder('None') @@ -113,9 +113,15 @@ class EggResource extends Resource ->required() ->maxLength(191) ->default('ash'), + + MonacoEditor::make('script_install') + ->columnSpanFull() + ->fontSize('16px') + ->language('shell') + ->view('filament.plugins.monaco-editor'), ]), - ])->columnSpanFull(), + ])->columnSpanFull()->persistTabInQueryString(), // Forms\Components\TagsInput::make('features'), // Forms\Components\TagsInput::make('file_denylist')->placeholder('new-file.txt'), diff --git a/composer.json b/composer.json index e5cf3f9e0..e26afd6c8 100644 --- a/composer.json +++ b/composer.json @@ -10,6 +10,7 @@ "ext-pdo_mysql": "*", "ext-posix": "*", "ext-zip": "*", + "abdelhamiderrahmouni/filament-monaco-editor": "^0.2.0", "aws/aws-sdk-php": "~3.288.1", "doctrine/dbal": "~3.6.0", "filament/filament": "^3.2", diff --git a/composer.lock b/composer.lock index eb3d9fa05..d19dc7e2c 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,92 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "bf147fbbb2f57777d6c6b137bc61bcda", + "content-hash": "456a20415d738b53ce5f39676f71cd51", "packages": [ + { + "name": "abdelhamiderrahmouni/filament-monaco-editor", + "version": "v0.2.0", + "source": { + "type": "git", + "url": "https://github.com/abdelhamiderrahmouni/filament-monaco-editor.git", + "reference": "30ff5be60a8a4a3302a2d1dceb373e07f06f4e47" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/abdelhamiderrahmouni/filament-monaco-editor/zipball/30ff5be60a8a4a3302a2d1dceb373e07f06f4e47", + "reference": "30ff5be60a8a4a3302a2d1dceb373e07f06f4e47", + "shasum": "" + }, + "require": { + "filament/forms": "^3.0", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.15.0" + }, + "require-dev": { + "laravel/pint": "^1.0", + "nunomaduro/collision": "^7.9", + "nunomaduro/larastan": "^2.0.1", + "orchestra/testbench": "^8.0", + "pestphp/pest": "^2.1", + "pestphp/pest-plugin-arch": "^2.0", + "pestphp/pest-plugin-laravel": "^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "spatie/laravel-ray": "^1.26" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "AbdelhamidErrahmouni\\FilamentMonacoEditor\\MonacoEditorServiceProvider" + ], + "aliases": { + "MonacoEditor": "AbdelhamidErrahmouni\\FilamentMonacoEditor\\Facades\\MonacoEditor" + } + } + }, + "autoload": { + "psr-4": { + "AbdelhamidErrahmouni\\FilamentMonacoEditor\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Abdelhamid Errahmouni", + "email": "abdelhamid.errahmouni@gmail.com", + "role": "Developer" + } + ], + "description": "A monaco editor form field for filamentphp.", + "homepage": "https://github.com/abdelhamiderrahmouni/filament-monaco-editor", + "keywords": [ + "Abdelhamid Errahmouni", + "Monaco", + "code editor", + "filament monaco code editor", + "filament monaco editor", + "filamentphp", + "laravel", + "monaco editor", + "php" + ], + "support": { + "issues": "https://github.com/abdelhamiderrahmouni/filament-monaco-editor/issues", + "source": "https://github.com/abdelhamiderrahmouni/filament-monaco-editor" + }, + "funding": [ + { + "url": "https://github.com/AbdelhamidErrahmouni", + "type": "github" + } + ], + "time": "2024-04-12T17:46:17+00:00" + }, { "name": "anourvalar/eloquent-serialize", "version": "1.2.22", @@ -12734,5 +12818,5 @@ "ext-zip": "*" }, "platform-dev": [], - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.3.0" } diff --git a/config/filament-monaco-editor.php b/config/filament-monaco-editor.php new file mode 100644 index 000000000..50dab0268 --- /dev/null +++ b/config/filament-monaco-editor.php @@ -0,0 +1,270 @@ + [ + 'enable-preview' => true, + 'show-full-screen-toggle' => true, + 'show-placeholder' => true, + 'placeholder-text' => 'Your code here...', + 'show-loader' => true, + 'font-size' => '15px', + 'line-numbers-min-chars' => true, + 'automatic-layout' => true, + 'default-theme' => 'iPlastic', + ], + 'themes' => [ + 'blackboard' => [ + 'base' => 'vs-dark', + 'inherit' => true, + 'rules' => [ + [ + 'background' => '0C1021', + 'token' => '', + ], + [ + 'foreground' => 'aeaeae', + 'token' => 'comment', + ], + [ + 'foreground' => 'd8fa3c', + 'token' => 'constant', + ], + [ + 'foreground' => 'ff6400', + 'token' => 'entity', + ], + [ + 'foreground' => 'fbde2d', + 'token' => 'keyword', + ], + [ + 'foreground' => 'fbde2d', + 'token' => 'storage', + ], + [ + 'foreground' => '61ce3c', + 'token' => 'string', + ], + [ + 'foreground' => '61ce3c', + 'token' => 'meta.verbatim', + ], + [ + 'foreground' => '8da6ce', + 'token' => 'support', + ], + [ + 'foreground' => 'ab2a1d', + 'fontStyle' => 'italic', + 'token' => 'invalid.deprecated', + ], + [ + 'foreground' => 'f8f8f8', + 'background' => '9d1e15', + 'token' => 'invalid.illegal', + ], + [ + 'foreground' => 'ff6400', + 'fontStyle' => 'italic', + 'token' => 'entity.other.inherited-class', + ], + [ + 'foreground' => 'ff6400', + 'token' => 'string constant.other.placeholder', + ], + [ + 'foreground' => 'becde6', + 'token' => 'meta.function-call.py', + ], + [ + 'foreground' => '7f90aa', + 'token' => 'meta.tag', + ], + [ + 'foreground' => '7f90aa', + 'token' => 'meta.tag entity', + ], + [ + 'foreground' => 'ffffff', + 'token' => 'entity.name.section', + ], + [ + 'foreground' => 'd5e0f3', + 'token' => 'keyword.type.variant', + ], + [ + 'foreground' => 'f8f8f8', + 'token' => 'source.ocaml keyword.operator.symbol', + ], + [ + 'foreground' => '8da6ce', + 'token' => 'source.ocaml keyword.operator.symbol.infix', + ], + [ + 'foreground' => '8da6ce', + 'token' => 'source.ocaml keyword.operator.symbol.prefix', + ], + [ + 'fontStyle' => 'underline', + 'token' => 'source.ocaml keyword.operator.symbol.infix.floating-point', + ], + [ + 'fontStyle' => 'underline', + 'token' => 'source.ocaml keyword.operator.symbol.prefix.floating-point', + ], + [ + 'fontStyle' => 'underline', + 'token' => 'source.ocaml constant.numeric.floating-point', + ], + [ + 'background' => 'ffffff08', + 'token' => 'text.tex.latex meta.function.environment', + ], + [ + 'background' => '7a96fa08', + 'token' => 'text.tex.latex meta.function.environment meta.function.environment', + ], + [ + 'foreground' => 'fbde2d', + 'token' => 'text.tex.latex support.function', + ], + [ + 'foreground' => 'ffffff', + 'token' => 'source.plist string.unquoted', + ], + [ + 'foreground' => 'ffffff', + 'token' => 'source.plist keyword.operator', + ], + ], + 'colors' => [ + 'editor.foreground' => '#F8F8F8', + 'editor.background' => '#0C1021', + 'editor.selectionBackground' => '#253B76', + 'editor.lineHighlightBackground' => '#FFFFFF0F', + 'editorCursor.foreground' => '#FFFFFFA6', + 'editorWhitespace.foreground' => '#FFFFFF40', + ], + ], + 'iPlastic' => [ + 'base' => 'vs', + 'inherit' => true, + 'rules' => [ + [ + 'background' => 'EEEEEEEB', + 'token' => '', + ], + [ + 'foreground' => '009933', + 'token' => 'string', + ], + [ + 'foreground' => '0066ff', + 'token' => 'constant.numeric', + ], + [ + 'foreground' => 'ff0080', + 'token' => 'string.regexp', + ], + [ + 'foreground' => '0000ff', + 'token' => 'keyword', + ], + [ + 'foreground' => '9700cc', + 'token' => 'constant.language', + ], + [ + 'foreground' => '990000', + 'token' => 'support.class.exception', + ], + [ + 'foreground' => 'ff8000', + 'token' => 'entity.name.function', + ], + [ + 'fontStyle' => 'bold underline', + 'token' => 'entity.name.type', + ], + [ + 'fontStyle' => 'italic', + 'token' => 'variable.parameter', + ], + [ + 'foreground' => '0066ff', + 'fontStyle' => 'italic', + 'token' => 'comment', + ], + [ + 'foreground' => 'ff0000', + 'background' => 'e71a114d', + 'token' => 'invalid', + ], + [ + 'background' => 'e71a1100', + 'token' => 'invalid.deprecated.trailing-whitespace', + ], + [ + 'foreground' => '000000', + 'background' => 'fafafafc', + 'token' => 'text source', + ], + [ + 'foreground' => '0033cc', + 'token' => 'meta.tag', + ], + [ + 'foreground' => '0033cc', + 'token' => 'declaration.tag', + ], + [ + 'foreground' => '6782d3', + 'token' => 'constant', + ], + [ + 'foreground' => '6782d3', + 'token' => 'support.constant', + ], + [ + 'foreground' => '3333ff', + 'fontStyle' => 'bold', + 'token' => 'support', + ], + [ + 'fontStyle' => 'bold', + 'token' => 'storage', + ], + [ + 'fontStyle' => 'bold underline', + 'token' => 'entity.name.section', + ], + [ + 'foreground' => '000000', + 'fontStyle' => 'bold', + 'token' => 'entity.name.function.frame', + ], + [ + 'foreground' => '333333', + 'token' => 'meta.tag.preprocessor.xml', + ], + [ + 'foreground' => '3366cc', + 'fontStyle' => 'italic', + 'token' => 'entity.other.attribute-name', + ], + [ + 'fontStyle' => 'bold', + 'token' => 'entity.name.tag', + ], + ], + 'colors' => [ + 'editor.foreground' => '#000000', + 'editor.background' => '#EEEEEEEB', + 'editor.selectionBackground' => '#BAD6FD', + 'editor.lineHighlightBackground' => '#0000001A', + 'editorCursor.foreground' => '#000000', + 'editorWhitespace.foreground' => '#B3B3B3F4', + ], + ], + ], +]; diff --git a/resources/views/filament/plugins/monaco-editor.blade.php b/resources/views/filament/plugins/monaco-editor.blade.php new file mode 100644 index 000000000..4a8355059 --- /dev/null +++ b/resources/views/filament/plugins/monaco-editor.blade.php @@ -0,0 +1,114 @@ + + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    From c83cc073f0c01ab61b909d4f5af57b3e14f0bca9 Mon Sep 17 00:00:00 2001 From: notCharles Date: Tue, 16 Apr 2024 18:47:12 -0400 Subject: [PATCH 153/173] Major Mobile Improvements <3 --- app/Filament/Resources/ApiKeyResource.php | 65 ++++++---- app/Filament/Resources/EggResource.php | 6 +- app/Filament/Resources/MountResource.php | 5 +- app/Filament/Resources/NodeResource.php | 6 + .../NodeResource/Pages/CreateNode.php | 43 ++++++- .../Resources/NodeResource/Pages/EditNode.php | 11 +- app/Filament/Resources/ServerResource.php | 118 ++++++++++++------ app/Filament/Resources/UserResource.php | 4 + .../UserResource/Pages/EditProfile.php | 9 ++ 9 files changed, 190 insertions(+), 77 deletions(-) diff --git a/app/Filament/Resources/ApiKeyResource.php b/app/Filament/Resources/ApiKeyResource.php index 307799221..d50c23cf7 100644 --- a/app/Filament/Resources/ApiKeyResource.php +++ b/app/Filament/Resources/ApiKeyResource.php @@ -72,33 +72,44 @@ class ApiKeyResource extends Resource ->required() ->default(ApiKey::TYPE_APPLICATION), - Forms\Components\Fieldset::make('Permissions')->schema( - collect(ApiKey::RESOURCES)->map(fn ($resource) => Forms\Components\ToggleButtons::make("r_$resource") - ->label(str($resource)->replace('_', ' ')->title()) - ->options([ - 0 => 'None', - 1 => 'Read', - // 2 => 'Write', - 3 => 'Read & Write', - ]) - ->icons([ - 0 => 'tabler-book-off', - 1 => 'tabler-book', - 2 => 'tabler-writing', - 3 => 'tabler-writing', - ]) - ->colors([ - 0 => 'success', - 1 => 'warning', - 2 => 'danger', - 3 => 'danger', - ]) - ->inline() - ->required() - ->disabledOn('edit') - ->default(0), - )->all(), - ), + Forms\Components\Fieldset::make('Permissions') + ->columns([ + 'default' => 1, + 'sm' => 1, + 'md' => 2, + ]) + ->schema( + collect(ApiKey::RESOURCES)->map(fn ($resource) => Forms\Components\ToggleButtons::make("r_$resource") + ->label(str($resource)->replace('_', ' ')->title()) + ->options([ + 0 => 'None', + 1 => 'Read', + // 2 => 'Write', + 3 => 'Read & Write', + ]) + ->icons([ + 0 => 'tabler-book-off', + 1 => 'tabler-book', + 2 => 'tabler-writing', + 3 => 'tabler-writing', + ]) + ->colors([ + 0 => 'success', + 1 => 'warning', + 2 => 'danger', + 3 => 'danger', + ]) + ->inline() + ->required() + ->disabledOn('edit') + ->columnSpan([ + 'default' => 1, + 'sm' => 1, + 'md' => 1, + ]) + ->default(0), + )->all(), + ), Forms\Components\TagsInput::make('allowed_ips') ->placeholder('Example: 127.0.0.1 or 192.168.1.1') diff --git a/app/Filament/Resources/EggResource.php b/app/Filament/Resources/EggResource.php index 41d7d242b..019acd035 100644 --- a/app/Filament/Resources/EggResource.php +++ b/app/Filament/Resources/EggResource.php @@ -133,7 +133,6 @@ class EggResource extends Resource public static function table(Table $table): Table { return $table - ->searchable(false) ->defaultPaginationPageOption(25) ->columns([ Tables\Columns\TextColumn::make('id') @@ -142,13 +141,12 @@ class EggResource extends Resource ->searchable(), Tables\Columns\TextColumn::make('name') ->icon('tabler-egg') + ->description(fn ($record): string => $record->description) + ->wrap() ->searchable(), Tables\Columns\TextColumn::make('author') ->hidden() ->searchable(), - Tables\Columns\TextColumn::make('description') - ->words(50) - ->wrap(), Tables\Columns\TextColumn::make('servers_count') ->counts('servers') ->icon('tabler-server') diff --git a/app/Filament/Resources/MountResource.php b/app/Filament/Resources/MountResource.php index c415e753a..90fc9ca05 100644 --- a/app/Filament/Resources/MountResource.php +++ b/app/Filament/Resources/MountResource.php @@ -75,7 +75,7 @@ class MountResource extends Resource Forms\Components\Textarea::make('description') ->helperText('A longer description for this mount.') ->columnSpanFull(), - ])->columnSpan(2)->columns([ + ])->columnSpan(1)->columns([ 'default' => 1, 'lg' => 2, ]), @@ -91,10 +91,11 @@ class MountResource extends Resource ]), ])->columns([ 'default' => 1, + 'lg' => 2, ]), ])->columns([ 'default' => 1, - 'lg' => 3, + 'lg' => 2, ]); } diff --git a/app/Filament/Resources/NodeResource.php b/app/Filament/Resources/NodeResource.php index e09989123..f07b85fac 100644 --- a/app/Filament/Resources/NodeResource.php +++ b/app/Filament/Resources/NodeResource.php @@ -96,31 +96,37 @@ class NodeResource extends Resource ->sortable() ->searchable(), Tables\Columns\TextColumn::make('fqdn') + ->visibleFrom('md') ->label('Address') ->icon('tabler-network') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('memory') + ->visibleFrom('sm') ->icon('tabler-device-desktop-analytics') ->numeric() ->suffix(' GB') ->formatStateUsing(fn ($state) => number_format($state / 1000, 2)) ->sortable(), Tables\Columns\TextColumn::make('disk') + ->visibleFrom('sm') ->icon('tabler-file') ->numeric() ->suffix(' GB') ->formatStateUsing(fn ($state) => number_format($state / 1000, 2)) ->sortable(), Tables\Columns\IconColumn::make('scheme') + ->visibleFrom('xl') ->label('SSL') ->trueIcon('tabler-lock') ->falseIcon('tabler-lock-open-off') ->state(fn (Node $node) => $node->scheme === 'https'), Tables\Columns\IconColumn::make('public') + ->visibleFrom('lg') ->trueIcon('tabler-eye-check') ->falseIcon('tabler-eye-cancel'), Tables\Columns\TextColumn::make('servers_count') + ->visibleFrom('sm') ->counts('servers') ->label('Servers') ->sortable() diff --git a/app/Filament/Resources/NodeResource/Pages/CreateNode.php b/app/Filament/Resources/NodeResource/Pages/CreateNode.php index 4f83ea126..4427bea4e 100644 --- a/app/Filament/Resources/NodeResource/Pages/CreateNode.php +++ b/app/Filament/Resources/NodeResource/Pages/CreateNode.php @@ -18,13 +18,18 @@ class CreateNode extends CreateRecord public function form(Forms\Form $form): Forms\Form { return $form - ->columns(4) + ->columns([ + 'default' => 2, + 'sm' => 3, + 'md' => 3, + 'lg' => 4, + ]) ->schema([ Forms\Components\TextInput::make('fqdn') ->columnSpan(2) ->required() ->autofocus() - ->live(debounce: 500) + ->live(debounce: 1500) ->rule('prohibited', fn ($state) => is_ip($state) && request()->isSecure()) ->label(fn ($state) => is_ip($state) ? 'IP Address' : 'Domain Name') ->placeholder(fn ($state) => is_ip($state) ? '192.168.1.1' : 'node.example.com') @@ -100,10 +105,21 @@ class CreateNode extends CreateRecord ->colors([ true => 'success', false => 'danger', + ]) + ->columnSpan([ + 'default' => 1, + 'sm' => 1, + 'md' => 1, + 'lg' => 1, ]), Forms\Components\TextInput::make('daemonListen') - ->columnSpan(1) + ->columnSpan([ + 'default' => 1, + 'sm' => 1, + 'md' => 1, + 'lg' => 1, + ]) ->label('Port') ->helperText('If you are running the daemon behind Cloudflare you should set the daemon port to 8443 to allow websocket proxying over SSL.') ->minValue(0) @@ -114,7 +130,12 @@ class CreateNode extends CreateRecord Forms\Components\TextInput::make('name') ->label('Display Name') - ->columnSpan(2) + ->columnSpan([ + 'default' => 1, + 'sm' => 1, + 'md' => 1, + 'lg' => 2, + ]) ->required() ->regex('/[a-zA-Z0-9_\.\- ]+/') ->helperText('This name is for display only and can be changed later.') @@ -122,7 +143,12 @@ class CreateNode extends CreateRecord Forms\Components\ToggleButtons::make('scheme') ->label('Communicate over SSL') - ->columnSpan(2) + ->columnSpan([ + 'default' => 1, + 'sm' => 1, + 'md' => 1, + 'lg' => 1, + ]) ->required() ->inline() ->helperText(function (Forms\Get $get) { @@ -153,7 +179,12 @@ class CreateNode extends CreateRecord Forms\Components\Textarea::make('description') ->hidden() - ->columnSpanFull() + ->columnSpan([ + 'default' => 1, + 'sm' => 1, + 'md' => 2, + 'lg' => 4, + ]) ->rows(5), Forms\Components\Hidden::make('skipValidation')->default(true), diff --git a/app/Filament/Resources/NodeResource/Pages/EditNode.php b/app/Filament/Resources/NodeResource/Pages/EditNode.php index 8a6cdacf6..e506ca9ab 100644 --- a/app/Filament/Resources/NodeResource/Pages/EditNode.php +++ b/app/Filament/Resources/NodeResource/Pages/EditNode.php @@ -19,7 +19,12 @@ class EditNode extends EditRecord { return $form->schema([ Tabs::make('Tabs') - ->columns(4) + ->columns([ + 'default' => 2, + 'sm' => 3, + 'md' => 3, + 'lg' => 4, + ]) ->persistTabInQueryString() ->columnSpanFull() ->tabs([ @@ -45,11 +50,11 @@ class EditNode extends EditRecord ]), Tabs\Tab::make('Allocations') ->icon('tabler-plug-connected') - ->columns(5) + ->columns(4) ->schema([ Forms\Components\Repeater::make('allocations') ->orderColumn('server_id') - ->columnSpan(3) + ->columnSpan(1) ->columns(4) ->relationship() ->addActionLabel('Create New Allocation') diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index d5fc4dfea..2e3ad09af 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -18,7 +18,6 @@ use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Arr; use Illuminate\Support\Facades\Validator; -use Illuminate\Support\Str; class ServerResource extends Resource { @@ -31,7 +30,12 @@ class ServerResource extends Resource public static function form(Form $form): Form { return $form - ->columns(6) + ->columns([ + 'default' => 2, + 'sm' => 2, + 'md' => 4, + 'lg' => 6, + ]) ->schema([ Forms\Components\ToggleButtons::make('docker') ->label('Container Status') @@ -110,7 +114,12 @@ class ServerResource extends Resource $set('name', $prefix . fake()->domainWord); })) - ->columnSpan(4) + ->columnSpan([ + 'default' => 2, + 'sm' => 4, + 'md' => 2, + 'lg' => 3, + ]) ->required() ->maxLength(191), @@ -118,7 +127,12 @@ class ServerResource extends Resource ->prefixIcon('tabler-user') ->default(auth()->user()->id) ->label('Owner') - ->columnSpan(2) + ->columnSpan([ + 'default' => 2, + 'sm' => 4, + 'md' => 2, + 'lg' => 3, + ]) ->relationship('user', 'username') ->searchable() ->preload() @@ -264,7 +278,12 @@ class ServerResource extends Resource Forms\Components\Select::make('egg_id') ->disabledOn('edit') ->prefixIcon('tabler-egg') - ->columnSpan(2) + ->columnSpan([ + 'default' => 2, + 'sm' => 2, + 'md' => 2, + 'lg' => 6, + ]) ->relationship('egg', 'name') ->searchable() ->preload() @@ -309,31 +328,6 @@ class ServerResource extends Resource ->inline() ->required(), - Forms\Components\Select::make('image') - ->hidden(fn (Forms\Get $get) => $get('custom_image')) - ->disabled(fn (Forms\Get $get) => $get('custom_image')) - ->label('Docker Image') - ->prefixIcon('tabler-brand-docker') - ->options(function (Forms\Get $get, Forms\Set $set) { - $images = Egg::find($get('egg_id'))->docker_images ?? []; - - $set('image', collect($images)->first()); - - return $images; - }) - ->disabled(fn (Forms\Components\Select $component) => empty($component->getOptions())) - ->selectablePlaceholder(false) - ->columnSpan(2) - ->required(), - - Forms\Components\TextInput::make('image') - ->hidden(fn (Forms\Get $get) => !$get('custom_image')) - ->disabled(fn (Forms\Get $get) => !$get('custom_image')) - ->label('Docker Image') - ->placeholder('Enter a custom Image') - ->columnSpan(2) - ->required(), - Forms\Components\ToggleButtons::make('custom_image') ->live() ->label('Custom Image?') @@ -352,6 +346,41 @@ class ServerResource extends Resource ]) ->inline(), + Forms\Components\TextInput::make('image') + ->hidden(fn (Forms\Get $get) => !$get('custom_image')) + ->disabled(fn (Forms\Get $get) => !$get('custom_image')) + ->label('Docker Image') + ->placeholder('Enter a custom Image') + ->columnSpan([ + 'default' => 2, + 'sm' => 2, + 'md' => 2, + 'lg' => 4, + ]) + ->required(), + + Forms\Components\Select::make('image') + ->hidden(fn (Forms\Get $get) => $get('custom_image')) + ->disabled(fn (Forms\Get $get) => $get('custom_image')) + ->label('Docker Image') + ->prefixIcon('tabler-brand-docker') + ->options(function (Forms\Get $get, Forms\Set $set) { + $images = Egg::find($get('egg_id'))->docker_images ?? []; + + $set('image', collect($images)->first()); + + return $images; + }) + ->disabled(fn (Forms\Components\Select $component) => empty($component->getOptions())) + ->selectablePlaceholder(false) + ->columnSpan([ + 'default' => 2, + 'sm' => 2, + 'md' => 2, + 'lg' => 4, + ]) + ->required(), + Forms\Components\Fieldset::make('Application Feature Limits') ->inlineLabel() ->hiddenOn('create') @@ -379,13 +408,18 @@ class ServerResource extends Resource ->label('Startup Command') ->required() ->live() + ->columnSpan([ + 'default' => 2, + 'sm' => 4, + 'md' => 4, + 'lg' => 6, + ]) ->rows(function ($state) { return str($state)->explode("\n")->reduce( fn (int $carry, $line) => $carry + floor(strlen($line) / 125), 0 ); - }) - ->columnSpanFull(), + }), Forms\Components\Hidden::make('environment')->default([]), @@ -396,6 +430,12 @@ class ServerResource extends Resource ->iconColor('primary') ->collapsible() ->collapsed() + ->columnSpan(([ + 'default' => 2, + 'sm' => 4, + 'md' => 4, + 'lg' => 6, + ])) ->schema([ Forms\Components\Placeholder::make('Select an egg first to show its variables!') ->hidden(fn (Forms\Get $get) => !empty($get('server_variables'))), @@ -424,14 +464,16 @@ class ServerResource extends Resource }, ]) ->label(fn (Forms\Get $get) => $get('name')) - ->hint(fn (Forms\Get $get) => $get('rules')) + //->hint('Rule') + ->hintIcon('tabler-code') + //->hintIconTooltip(fn (Forms\Get $get) => $get('rules')) ->prefix(fn (Forms\Get $get) => '{{' . $get('env_variable') . '}}') ->helperText(fn (Forms\Get $get) => empty($get('description')) ? '—' : $get('description')) ->maxLength(191), Forms\Components\Hidden::make('variable_id')->default(0), ]) - ->columnSpanFull(), + ->columnSpan(2), ]), Forms\Components\Section::make('Resource Management') @@ -439,7 +481,13 @@ class ServerResource extends Resource ->collapsed() ->icon('tabler-server-cog') ->iconColor('primary') - ->columns(3) + ->columns(2) + ->columnSpan(([ + 'default' => 2, + 'sm' => 4, + 'md' => 4, + 'lg' => 6, + ])) ->schema([ Forms\Components\TextInput::make('memory') ->default(0) diff --git a/app/Filament/Resources/UserResource.php b/app/Filament/Resources/UserResource.php index 86072742d..a2b55cc7b 100644 --- a/app/Filament/Resources/UserResource.php +++ b/app/Filament/Resources/UserResource.php @@ -84,6 +84,7 @@ class UserResource extends Resource ->searchable(false) ->columns([ Tables\Columns\ImageColumn::make('picture') + ->visibleFrom('lg') ->label('') ->extraImgAttributes(['class' => 'rounded-full']) ->defaultImageUrl(fn (User $user) => 'https://gravatar.com/avatar/' . md5(strtolower($user->email))), @@ -100,12 +101,14 @@ class UserResource extends Resource ->searchable() ->icon('tabler-mail'), Tables\Columns\IconColumn::make('root_admin') + ->visibleFrom('md') ->label('Admin') ->boolean() ->trueIcon('tabler-star') ->falseIcon('tabler-star-off') ->sortable(), Tables\Columns\IconColumn::make('use_totp')->label('2FA') + ->visibleFrom('lg') ->icon(fn (User $user) => $user->use_totp ? 'tabler-lock' : 'tabler-lock-open-off') ->boolean()->sortable(), Tables\Columns\TextColumn::make('servers_count') @@ -113,6 +116,7 @@ class UserResource extends Resource ->icon('tabler-server') ->label('Servers'), Tables\Columns\TextColumn::make('subusers_count') + ->visibleFrom('sm') ->counts('subusers') ->icon('tabler-users') // ->formatStateUsing(fn (string $state, $record): string => (string) ($record->servers_count + $record->subusers_count)) diff --git a/app/Filament/Resources/UserResource/Pages/EditProfile.php b/app/Filament/Resources/UserResource/Pages/EditProfile.php index 90c4a67c3..e215de6ca 100644 --- a/app/Filament/Resources/UserResource/Pages/EditProfile.php +++ b/app/Filament/Resources/UserResource/Pages/EditProfile.php @@ -8,6 +8,7 @@ use Filament\Forms\Components\Placeholder; use Filament\Forms\Components\Repeater; use Filament\Forms\Components\Select; use Filament\Forms\Components\Tabs; +use Filament\Forms\Components\TagsInput; use Filament\Forms\Components\Tabs\Tab; use Filament\Forms\Components\TextInput; use Filament\Forms\Get; @@ -73,8 +74,16 @@ class EditProfile extends \Filament\Pages\Auth\EditProfile ->icon('tabler-key') ->schema([ Placeholder::make('Coming soon!'), + TagsInput::make('allowed_ips') + ->placeholder('Example: 127.0.0.1 or 192.168.1.1') + ->label('Whitelisted IPv4 Addresses') + ->helperText('Press enter to add a new IP address or leave blank to allow any IP address') + ->columnSpanFull() + ->hidden() + ->default(null), ]), + Tab::make('SSH Keys') ->icon('tabler-lock-code') ->schema([ From 11494bbad6c2893026cf75a699668ae206318f1d Mon Sep 17 00:00:00 2001 From: notCharles Date: Tue, 16 Apr 2024 20:56:47 -0400 Subject: [PATCH 154/173] Should enable this, so it ya know.. works <3 --- app/Filament/Resources/ServerResource.php | 2 +- app/Filament/Resources/UserResource/Pages/EditProfile.php | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 2e3ad09af..c765b5a08 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -466,7 +466,7 @@ class ServerResource extends Resource ->label(fn (Forms\Get $get) => $get('name')) //->hint('Rule') ->hintIcon('tabler-code') - //->hintIconTooltip(fn (Forms\Get $get) => $get('rules')) + ->hintIconTooltip(fn (Forms\Get $get) => $get('rules')) ->prefix(fn (Forms\Get $get) => '{{' . $get('env_variable') . '}}') ->helperText(fn (Forms\Get $get) => empty($get('description')) ? '—' : $get('description')) ->maxLength(191), diff --git a/app/Filament/Resources/UserResource/Pages/EditProfile.php b/app/Filament/Resources/UserResource/Pages/EditProfile.php index e215de6ca..b896d69b7 100644 --- a/app/Filament/Resources/UserResource/Pages/EditProfile.php +++ b/app/Filament/Resources/UserResource/Pages/EditProfile.php @@ -82,8 +82,7 @@ class EditProfile extends \Filament\Pages\Auth\EditProfile ->hidden() ->default(null), ]), - - + Tab::make('SSH Keys') ->icon('tabler-lock-code') ->schema([ From c492fa285fd53d8c7fb33e7d803bab455936aee6 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Wed, 17 Apr 2024 00:23:35 -0400 Subject: [PATCH 155/173] Update languages --- .../Resources/UserResource/Pages/EditProfile.php | 12 ++++++++++++ app/Traits/Helpers/AvailableLanguages.php | 16 +++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/app/Filament/Resources/UserResource/Pages/EditProfile.php b/app/Filament/Resources/UserResource/Pages/EditProfile.php index 90c4a67c3..08aedbbaf 100644 --- a/app/Filament/Resources/UserResource/Pages/EditProfile.php +++ b/app/Filament/Resources/UserResource/Pages/EditProfile.php @@ -35,6 +35,7 @@ class EditProfile extends \Filament\Pages\Auth\EditProfile ->autofocus(), TextInput::make('email') + ->prefixIcon('tabler-mail') ->email() ->required() ->maxLength(191) @@ -42,6 +43,7 @@ class EditProfile extends \Filament\Pages\Auth\EditProfile TextInput::make('password') ->password() + ->prefixIcon('tabler-password') ->revealable(filament()->arePasswordsRevealable()) ->rule(Password::default()) ->autocomplete('new-password') @@ -52,6 +54,7 @@ class EditProfile extends \Filament\Pages\Auth\EditProfile TextInput::make('passwordConfirmation') ->password() + ->prefixIcon('tabler-password-fingerprint') ->revealable(filament()->arePasswordsRevealable()) ->required() ->visible(fn (Get $get): bool => filled($get('password'))) @@ -59,7 +62,16 @@ class EditProfile extends \Filament\Pages\Auth\EditProfile Select::make('language') ->required() + ->prefixIcon('tabler-flag') + ->live() ->default('en') + ->helperText(fn (User $user, $state) => + new HtmlString($user->isLanguageTranslated($state) ? '' : " + Your language ($state) has not been translated yet! + But never fear, you can help fix that by + contributing directly here. + ") + ) ->options(fn (User $user) => $user->getAvailableLanguages()), ]), diff --git a/app/Traits/Helpers/AvailableLanguages.php b/app/Traits/Helpers/AvailableLanguages.php index cab5a76ba..b28625eb5 100644 --- a/app/Traits/Helpers/AvailableLanguages.php +++ b/app/Traits/Helpers/AvailableLanguages.php @@ -9,6 +9,15 @@ trait AvailableLanguages { private ?Filesystem $filesystem = null; + public const TRANSLATED = [ + 'cz', + 'da', + 'de', + 'en', + 'es', + 'tr', + ]; + /** * Return all the available languages on the Panel based on those * that are present in the language folder. @@ -18,12 +27,17 @@ trait AvailableLanguages return collect($this->getFilesystemInstance()->directories(base_path('lang')))->mapWithKeys(function ($path) { $code = basename($path); - $value = Locale::getDisplayName($code, app()->currentLocale()); + $value = Locale::getDisplayName($code, $code); return [$code => title_case($value)]; })->toArray(); } + public function isLanguageTranslated(string $countryCode = 'en'): bool + { + return in_array($countryCode, self::TRANSLATED, true); + } + /** * Return an instance of the filesystem for getting a folder listing. */ From 7d0fc80a80d49c9ce9e010aa74a94ad2d8d925a7 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Wed, 17 Apr 2024 01:30:05 -0400 Subject: [PATCH 156/173] Switch to components --- app/Filament/Pages/Dashboard.php | 47 ++++++++ .../views/filament/pages/dashboard.blade.php | 111 ++++++------------ 2 files changed, 84 insertions(+), 74 deletions(-) diff --git a/app/Filament/Pages/Dashboard.php b/app/Filament/Pages/Dashboard.php index 87c741908..e6836c6c9 100644 --- a/app/Filament/Pages/Dashboard.php +++ b/app/Filament/Pages/Dashboard.php @@ -7,6 +7,9 @@ use App\Models\Egg; use App\Models\Node; use App\Models\Server; use App\Models\User; +use Filament\Actions\CreateAction; +use Filament\Infolists\Components\Concerns\HasHeaderActions; +use Filament\Infolists\Infolist; use Filament\Pages\Page; class Dashboard extends Page @@ -32,6 +35,50 @@ class Dashboard extends Page 'nodesCount' => Node::query()->count(), 'serversCount' => Server::query()->count(), 'usersCount' => User::query()->count(), + + 'devActions' => [ + CreateAction::make() + ->label('Create Issue') + ->icon('tabler-brand-github') + ->url('https://github.com/pelican-dev/panel/issues/new/choose', true) + ->color('warning'), + CreateAction::make() + ->label('Discuss Features') + ->icon('tabler-brand-github') + ->url('https://github.com/pelican-dev/panel/discussions', true) + ->color('primary'), + ], + 'nodeActions' => [ + CreateAction::make() + ->label('Create first Node in Pelican') + ->icon('tabler-server-2') + ->url(route('filament.admin.resources.nodes.create')) + ->color('primary'), + ], + 'supportActions' => [ + CreateAction::make() + ->label('Help Translate') + ->icon('tabler-language') + ->url('https://crowdin.com/project/pelican-dev', true) + ->color('info'), + CreateAction::make() + ->label('Donate Directly') + ->icon('tabler-cash') + ->url('https://pelican.dev/donate', true) + ->color('success'), + ], + 'helpActions' => [ + CreateAction::make() + ->label('Read Documentation') + ->icon('tabler-speedboat') + ->url('https://pelican.dev/docs', true) + ->color('info'), + CreateAction::make() + ->label('Get Help in Discord') + ->icon('tabler-brand-discord') + ->url('https://discord.gg/pelican-panel', true) + ->color('primary'), + ], ]; } } diff --git a/resources/views/filament/pages/dashboard.blade.php b/resources/views/filament/pages/dashboard.blade.php index b6d8586fd..c927f20d0 100644 --- a/resources/views/filament/pages/dashboard.blade.php +++ b/resources/views/filament/pages/dashboard.blade.php @@ -50,58 +50,39 @@

    You can expand the following sections:

    @if ($inDevelopment) - + Information for Developers

    Thank you for trying out the development version!

    -

    -
    - If you run into any issues, please report them on GitHub. -
    -
    -

    +


    -

    - - Report Issue on GitHub - -

    +

    If you run into any issues, please report them on GitHub.

    @endif {{-- No Nodes Created --}} @if ($nodesCount <= 0) - - Create First New Node + + No Nodes Detected -

    It looks like you don't have any Nodes set up yet, but don't worry because you can follow along below:

    - -

    -
    - If you run into any issues, please report them on GitHub. -
    -
    -

    - -

    - - Create Node in Pelican - -

    +

    It looks like you don't have any Nodes set up yet, but don't worry because you click the action button to create your first one!

    @endif @@ -109,7 +90,14 @@ {{-- No Nodes Active --}} - + Support Pelican

    Thank you for using Pelican, this could only be achieved through the support of you, our contributors, and the rest of our supporters!

    @@ -118,47 +106,22 @@

    We appreciate any and all support from anybody.

    -


    - - - Donate Directly - -
    - + Need Help?

    Check out the documentation first! If you still need assistance then, fly onto our Discord server!

    -


    - - - Read Documentation - - - - Get Help in Discord - -
    From d642987df4202e1e7d9d4b6248dfa98505f79043 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Wed, 17 Apr 2024 01:32:47 -0400 Subject: [PATCH 157/173] Better phrasing --- app/Filament/Resources/ServerResource.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index d5fc4dfea..e11fbd02a 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -215,6 +215,7 @@ class ServerResource extends Resource Forms\Components\Repeater::make('allocation_additional') ->label('Additional Allocations') ->columnSpan(2) + ->addActionLabel('Add Allocation') ->disabled(fn (Forms\Get $get) => $get('allocation_id') === null) // ->addable() TODO disable when all allocations are taken // ->addable() TODO disable until first additional allocation is selected From f6d068be2c8a63e3f418fc8af4f937077d386393 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 17 Apr 2024 14:11:17 +0000 Subject: [PATCH 158/173] @Poseidon281 has signed the CLA in pelican-dev/panel#94 --- .cla-signatures/version1/cla.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.cla-signatures/version1/cla.json b/.cla-signatures/version1/cla.json index 15bc4aa70..a736f6323 100644 --- a/.cla-signatures/version1/cla.json +++ b/.cla-signatures/version1/cla.json @@ -23,6 +23,14 @@ "created_at": "2024-04-15T13:42:34Z", "repoId": 774258963, "pullRequestNo": 86 + }, + { + "name": "Poseidon281", + "id": 62171904, + "comment_id": 2061357850, + "created_at": "2024-04-17T14:10:39Z", + "repoId": 774258963, + "pullRequestNo": 94 } ] } \ No newline at end of file From dd913008c196a9c6e24262fcc6cf5dfd5879e4c7 Mon Sep 17 00:00:00 2001 From: iamkubi Date: Wed, 17 Apr 2024 20:15:07 -0700 Subject: [PATCH 159/173] Update CLA workflow Store signatures in a separate repo --- .github/workflows/cla.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/cla.yaml b/.github/workflows/cla.yaml index 27650fd54..7662ac338 100644 --- a/.github/workflows/cla.yaml +++ b/.github/workflows/cla.yaml @@ -25,3 +25,5 @@ jobs: path-to-document: 'https://github.com/pelican-dev/panel/blob/3.x/contributor_license_agreement.md' branch: '3.x' allowlist: dependabot[bot] + remote-organization-name: pelican-dev + remote-repository-name: cla-signatures From 8801d1db59349dbd160060295e896312c7466e0e Mon Sep 17 00:00:00 2001 From: iamkubi Date: Wed, 17 Apr 2024 20:19:47 -0700 Subject: [PATCH 160/173] Update cla.yaml --- .github/workflows/cla.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cla.yaml b/.github/workflows/cla.yaml index 7662ac338..e073231fd 100644 --- a/.github/workflows/cla.yaml +++ b/.github/workflows/cla.yaml @@ -21,9 +21,9 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - path-to-signatures: '.cla-signatures/version1/cla.json' + path-to-signatures: 'version1/cla.json' path-to-document: 'https://github.com/pelican-dev/panel/blob/3.x/contributor_license_agreement.md' - branch: '3.x' + branch: 'main' allowlist: dependabot[bot] remote-organization-name: pelican-dev remote-repository-name: cla-signatures From 56dbac6f81932f747f61ff3eb5d99459b10830c7 Mon Sep 17 00:00:00 2001 From: iamkubi Date: Wed, 17 Apr 2024 22:49:15 -0700 Subject: [PATCH 161/173] Fix CLA workflow missing access token --- .github/workflows/cla.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/cla.yaml b/.github/workflows/cla.yaml index e073231fd..4efdecca4 100644 --- a/.github/workflows/cla.yaml +++ b/.github/workflows/cla.yaml @@ -20,6 +20,7 @@ jobs: uses: contributor-assistant/github-action@v2.3.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PERSONAL_ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} with: path-to-signatures: 'version1/cla.json' path-to-document: 'https://github.com/pelican-dev/panel/blob/3.x/contributor_license_agreement.md' From 03574ce4b3432e023ae3447ab2bf4320221cc780 Mon Sep 17 00:00:00 2001 From: iamkubi Date: Wed, 17 Apr 2024 22:57:14 -0700 Subject: [PATCH 162/173] Delete migrated CLA signatures --- .cla-signatures/version1/cla.json | 36 ------------------------------- 1 file changed, 36 deletions(-) delete mode 100644 .cla-signatures/version1/cla.json diff --git a/.cla-signatures/version1/cla.json b/.cla-signatures/version1/cla.json deleted file mode 100644 index a736f6323..000000000 --- a/.cla-signatures/version1/cla.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "signedContributors": [ - { - "name": "iamkubi", - "id": 6176191, - "comment_id": 2053767631, - "created_at": "2024-04-13T21:39:53Z", - "repoId": 774258963, - "pullRequestNo": 64 - }, - { - "name": "notAreYouScared", - "id": 1757840, - "comment_id": 2053849162, - "created_at": "2024-04-14T01:59:04Z", - "repoId": 774258963, - "pullRequestNo": 66 - }, - { - "name": "MikkelHebel", - "id": 88710599, - "comment_id": 2056893499, - "created_at": "2024-04-15T13:42:34Z", - "repoId": 774258963, - "pullRequestNo": 86 - }, - { - "name": "Poseidon281", - "id": 62171904, - "comment_id": 2061357850, - "created_at": "2024-04-17T14:10:39Z", - "repoId": 774258963, - "pullRequestNo": 94 - } - ] -} \ No newline at end of file From 256a961e1bf2c5611c10b8a4fdf1568ac92a083b Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 18 Apr 2024 03:48:30 -0400 Subject: [PATCH 163/173] Add enums --- app/Enums/ContainerStatus.php | 29 +++++++++++++++++++++++++++ app/Enums/ServerState.php | 37 +++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 app/Enums/ServerState.php diff --git a/app/Enums/ContainerStatus.php b/app/Enums/ContainerStatus.php index d99284763..436cdce68 100644 --- a/app/Enums/ContainerStatus.php +++ b/app/Enums/ContainerStatus.php @@ -11,4 +11,33 @@ enum ContainerStatus: string case Paused = 'paused'; case Dead = 'dead'; case Removing = 'removing'; + case Missing = 'missing'; + + public function icon(): string + { + return match ($this) { + self::Created => 'tabler-heart-plus', + self::Running => 'tabler-heartbeat', + self::Restarting => 'tabler-heart-bolt', + self::Exited => 'tabler-heart-exclamation', + self::Paused => 'tabler-heart-pause', + self::Dead => 'tabler-heart-x', + self::Removing => 'tabler-heart-down', + self::Missing => 'tabler-heart-question', + }; + } + + public function color(): string + { + return match ($this) { + self::Created => 'primary', + self::Running => 'success', + self::Restarting => 'info', + self::Exited => 'danger', + self::Paused => 'warning', + self::Dead => 'danger', + self::Removing => 'warning', + self::Missing => 'gray', + }; + } } diff --git a/app/Enums/ServerState.php b/app/Enums/ServerState.php new file mode 100644 index 000000000..050c230b6 --- /dev/null +++ b/app/Enums/ServerState.php @@ -0,0 +1,37 @@ + 'tabler-heart', + self::Installing => 'tabler-heart-bolt', + self::InstallFailed => 'tabler-heart-x', + self::ReinstallFailed => 'tabler-heart-x', + self::Suspended => 'tabler-heart-cancel', + self::RestoringBackup => 'tabler-heart-up', + }; + } + + public function color(): string + { + return match ($this) { + self::None => 'primary', + self::Installing => 'info', + self::InstallFailed => 'danger', + self::ReinstallFailed => 'danger', + self::Suspended => 'danger', + self::RestoringBackup => 'info', + }; + } +} From c5008a43e7755326426c9dfc41493df1e941b7b1 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 18 Apr 2024 03:50:20 -0400 Subject: [PATCH 164/173] Use new enum --- .../Server/ServerStateConflictException.php | 3 +- app/Filament/Resources/ServerResource.php | 50 +++++++------------ .../Admin/Servers/ServerViewController.php | 3 +- .../Controllers/Admin/ServersController.php | 5 +- .../Api/Client/Servers/BackupController.php | 3 +- .../Servers/ServerDetailsController.php | 5 +- .../Servers/ServerInstallController.php | 9 ++-- app/Models/Server.php | 20 +++----- .../Servers/ReinstallServerService.php | 3 +- .../Servers/ServerCreationService.php | 3 +- app/Services/Servers/SuspensionService.php | 5 +- .../Client/Server/SettingsControllerTest.php | 3 +- .../SftpAuthenticationControllerTest.php | 7 +-- .../Jobs/Schedule/RunTaskJobTest.php | 3 +- .../Servers/SuspensionServiceTest.php | 4 +- 15 files changed, 60 insertions(+), 66 deletions(-) diff --git a/app/Exceptions/Http/Server/ServerStateConflictException.php b/app/Exceptions/Http/Server/ServerStateConflictException.php index b4951d8f2..1e20082a3 100644 --- a/app/Exceptions/Http/Server/ServerStateConflictException.php +++ b/app/Exceptions/Http/Server/ServerStateConflictException.php @@ -2,6 +2,7 @@ namespace App\Exceptions\Http\Server; +use App\Enums\ServerState; use App\Models\Server; use Symfony\Component\HttpKernel\Exception\ConflictHttpException; @@ -20,7 +21,7 @@ class ServerStateConflictException extends ConflictHttpException $message = 'The node of this server is currently under maintenance and the functionality requested is unavailable.'; } elseif (!$server->isInstalled()) { $message = 'This server has not yet completed its installation process, please try again later.'; - } elseif ($server->status === Server::STATUS_RESTORING_BACKUP) { + } elseif ($server->status === ServerState::RestoringBackup) { $message = 'This server is currently restoring from a backup, please try again later.'; } elseif (!is_null($server->transfer)) { $message = 'This server is currently being transferred to a new machine, please try again later.'; diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index e11fbd02a..452ae1be8 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -48,21 +48,15 @@ class ServerResource extends Resource return $details['state'] ?? 'unknown'; }) - ->options([ - 'running' => 'Running', - 'starting' => 'Starting', - 'stopping' => 'Stopping', - 'offline' => 'Offline', - 'unknown' => 'Unknown', - ]) - - ->colors([ - 'running' => 'success', - 'offline' => 'danger', - 'starting' => 'primary', - 'stopping' => 'warning', - 'unknown' => 'primary', - ]) + ->options(collect(ContainerStatus::cases())->mapWithKeys( + fn (ContainerStatus $status) => [$status->value => str($status->value)->ucwords()] + )) + ->colors(collect(ContainerStatus::cases())->mapWithKeys( + fn (ContainerStatus $status) => [$status->value => $status->color()] + )) + ->icons(collect(ContainerStatus::cases())->mapWithKeys( + fn (ContainerStatus $status) => [$status->value => $status->icon()] + )) ->grouped() ->columnSpanFull() ->inline(), @@ -73,23 +67,15 @@ class ServerResource extends Resource ->hiddenOn('create') ->disableOptionWhen(fn ($state, $value) => $state !== $value) ->formatStateUsing(fn ($state) => $state ?? 'none') - ->options([ - 'none' => 'None', - Server::STATUS_INSTALLING => str(Server::STATUS_INSTALLING)->title()->replace('_', ' '), - Server::STATUS_INSTALL_FAILED => str(Server::STATUS_INSTALL_FAILED)->title()->replace('_', ' '), - Server::STATUS_REINSTALL_FAILED => str(Server::STATUS_REINSTALL_FAILED)->title()->replace('_', ' '), - Server::STATUS_SUSPENDED => str(Server::STATUS_SUSPENDED)->title()->replace('_', ' '), - Server::STATUS_RESTORING_BACKUP => str(Server::STATUS_RESTORING_BACKUP)->title()->replace('_', ' '), - ]) - - ->colors([ - 'none' => 'primary', - Server::STATUS_INSTALLING => 'primary', - Server::STATUS_INSTALL_FAILED => 'danger', - Server::STATUS_REINSTALL_FAILED => 'danger', - Server::STATUS_SUSPENDED => 'danger', - Server::STATUS_RESTORING_BACKUP => 'primary', - ]) + ->options(collect(ServerState::cases())->mapWithKeys( + fn (ServerState $state) => [$state->value => str($state->value)->replace('_', ' ')->ucwords()] + )) + ->colors(collect(ServerState::cases())->mapWithKeys( + fn (ServerState $state) => [$state->value => $state->color()] + )) + ->icons(collect(ServerState::cases())->mapWithKeys( + fn (ServerState $state) => [$state->value => $state->icon()] + )) ->grouped() ->columnSpanFull() ->inline(), diff --git a/app/Http/Controllers/Admin/Servers/ServerViewController.php b/app/Http/Controllers/Admin/Servers/ServerViewController.php index 5763ee238..29a0e6322 100644 --- a/app/Http/Controllers/Admin/Servers/ServerViewController.php +++ b/app/Http/Controllers/Admin/Servers/ServerViewController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Admin\Servers; +use App\Enums\ServerState; use App\Models\DatabaseHost; use App\Models\Egg; use App\Models\Mount; @@ -110,7 +111,7 @@ class ServerViewController extends Controller */ public function manage(Request $request, Server $server): View { - if ($server->status === Server::STATUS_INSTALL_FAILED) { + if ($server->status === ServerState::InstallFailed) { throw new DisplayException('This server is in a failed install state and cannot be recovered. Please delete and re-create the server.'); } diff --git a/app/Http/Controllers/Admin/ServersController.php b/app/Http/Controllers/Admin/ServersController.php index 5d5250df7..9aa0af24e 100644 --- a/app/Http/Controllers/Admin/ServersController.php +++ b/app/Http/Controllers/Admin/ServersController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Admin; +use App\Enums\ServerState; use Illuminate\Http\Request; use App\Models\User; use Illuminate\Http\Response; @@ -71,11 +72,11 @@ class ServersController extends Controller */ public function toggleInstall(Server $server): RedirectResponse { - if ($server->status === Server::STATUS_INSTALL_FAILED) { + if ($server->status === ServerState::InstallFailed) { throw new DisplayException(trans('admin/server.exceptions.marked_as_failed')); } - $server->status = $server->isInstalled() ? Server::STATUS_INSTALLING : null; + $server->status = $server->isInstalled() ? ServerState::Installing : null; $server->save(); $this->alert->success(trans('admin/server.alerts.install_toggled'))->flash(); diff --git a/app/Http/Controllers/Api/Client/Servers/BackupController.php b/app/Http/Controllers/Api/Client/Servers/BackupController.php index f59b087aa..ab1e441e2 100644 --- a/app/Http/Controllers/Api/Client/Servers/BackupController.php +++ b/app/Http/Controllers/Api/Client/Servers/BackupController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Api\Client\Servers; +use App\Enums\ServerState; use Illuminate\Http\Request; use App\Models\Backup; use App\Models\Server; @@ -212,7 +213,7 @@ class BackupController extends ClientApiController // Update the status right away for the server so that we know not to allow certain // actions against it via the Panel API. - $server->update(['status' => Server::STATUS_RESTORING_BACKUP]); + $server->update(['status' => ServerState::RestoringBackup]); $this->daemonRepository->setServer($server)->restore($backup, $url ?? null, $request->input('truncate')); }); diff --git a/app/Http/Controllers/Api/Remote/Servers/ServerDetailsController.php b/app/Http/Controllers/Api/Remote/Servers/ServerDetailsController.php index cc3439580..824453045 100644 --- a/app/Http/Controllers/Api/Remote/Servers/ServerDetailsController.php +++ b/app/Http/Controllers/Api/Remote/Servers/ServerDetailsController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Api\Remote\Servers; +use App\Enums\ServerState; use App\Models\Backup; use Illuminate\Http\Request; use App\Models\Server; @@ -81,7 +82,7 @@ class ServerDetailsController extends Controller ->latest('timestamp'), ]) ->where('node_id', $node->id) - ->where('status', Server::STATUS_RESTORING_BACKUP) + ->where('status', ServerState::RestoringBackup) ->get(); $this->connection->transaction(function () use ($node, $servers) { @@ -108,7 +109,7 @@ class ServerDetailsController extends Controller // Update any server marked as installing or restoring as being in a normal state // at this point in the process. Server::query()->where('node_id', $node->id) - ->whereIn('status', [Server::STATUS_INSTALLING, Server::STATUS_RESTORING_BACKUP]) + ->whereIn('status', [ServerState::Installing, ServerState::RestoringBackup]) ->update(['status' => null]); }); diff --git a/app/Http/Controllers/Api/Remote/Servers/ServerInstallController.php b/app/Http/Controllers/Api/Remote/Servers/ServerInstallController.php index 98a8f37d8..49eaf2c51 100644 --- a/app/Http/Controllers/Api/Remote/Servers/ServerInstallController.php +++ b/app/Http/Controllers/Api/Remote/Servers/ServerInstallController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Api\Remote\Servers; +use App\Enums\ServerState; use Illuminate\Http\Response; use App\Models\Server; use Illuminate\Http\JsonResponse; @@ -36,16 +37,16 @@ class ServerInstallController extends Controller // Make sure the type of failure is accurate if (!$request->boolean('successful')) { - $status = Server::STATUS_INSTALL_FAILED; + $status = ServerState::InstallFailed; if ($request->boolean('reinstall')) { - $status = Server::STATUS_REINSTALL_FAILED; + $status = ServerState::ReinstallFailed; } } // Keep the server suspended if it's already suspended - if ($server->status === Server::STATUS_SUSPENDED) { - $status = Server::STATUS_SUSPENDED; + if ($server->status === ServerState::Suspended) { + $status = ServerState::Suspended; } $previouslyInstalledAt = $server->installed_at; diff --git a/app/Models/Server.php b/app/Models/Server.php index b450973b4..e6896d16d 100644 --- a/app/Models/Server.php +++ b/app/Models/Server.php @@ -2,6 +2,7 @@ namespace App\Models; +use App\Enums\ServerState; use App\Exceptions\Http\Connection\DaemonConnectionException; use GuzzleHttp\Exception\GuzzleException; use Illuminate\Notifications\Notifiable; @@ -111,13 +112,7 @@ class Server extends Model * API representation using fractal. */ public const RESOURCE_NAME = 'server'; - - public const STATUS_INSTALLING = 'installing'; - public const STATUS_INSTALL_FAILED = 'install_failed'; - public const STATUS_REINSTALL_FAILED = 'reinstall_failed'; - public const STATUS_SUSPENDED = 'suspended'; - public const STATUS_RESTORING_BACKUP = 'restoring_backup'; - + /** * The table associated with the model. */ @@ -128,7 +123,7 @@ class Server extends Model * on server instances unless the user specifies otherwise in the request. */ protected $attributes = [ - 'status' => self::STATUS_INSTALLING, + 'status' => ServerState::Installing, 'oom_disabled' => true, 'installed_at' => null, ]; @@ -171,6 +166,7 @@ class Server extends Model { return [ 'node_id' => 'integer', + 'status' => ServerState::class, 'skip_scripts' => 'boolean', 'owner_id' => 'integer', 'memory' => 'integer', @@ -203,12 +199,12 @@ class Server extends Model public function isInstalled(): bool { - return $this->status !== self::STATUS_INSTALLING && $this->status !== self::STATUS_INSTALL_FAILED; + return $this->status !== ServerState::Installing && $this->status !== ServerState::InstallFailed; } public function isSuspended(): bool { - return $this->status === self::STATUS_SUSPENDED; + return $this->status === ServerState::Suspended; } /** @@ -359,7 +355,7 @@ class Server extends Model $this->isSuspended() || $this->node->isUnderMaintenance() || !$this->isInstalled() || - $this->status === self::STATUS_RESTORING_BACKUP || + $this->status === ServerState::RestoringBackup || !is_null($this->transfer) ) { throw new ServerStateConflictException($this); @@ -376,7 +372,7 @@ class Server extends Model { if ( !$this->isInstalled() || - $this->status === self::STATUS_RESTORING_BACKUP || + $this->status === ServerState::RestoringBackup || !is_null($this->transfer) ) { throw new ServerStateConflictException($this); diff --git a/app/Services/Servers/ReinstallServerService.php b/app/Services/Servers/ReinstallServerService.php index 475decef4..301de9711 100644 --- a/app/Services/Servers/ReinstallServerService.php +++ b/app/Services/Servers/ReinstallServerService.php @@ -2,6 +2,7 @@ namespace App\Services\Servers; +use App\Enums\ServerState; use App\Models\Server; use Illuminate\Database\ConnectionInterface; use App\Repositories\Daemon\DaemonServerRepository; @@ -25,7 +26,7 @@ class ReinstallServerService public function handle(Server $server): Server { return $this->connection->transaction(function () use ($server) { - $server->fill(['status' => Server::STATUS_INSTALLING])->save(); + $server->fill(['status' => ServerState::Installing])->save(); $this->daemonServerRepository->setServer($server)->reinstall(); diff --git a/app/Services/Servers/ServerCreationService.php b/app/Services/Servers/ServerCreationService.php index d544d7d9d..7ba8b73e9 100644 --- a/app/Services/Servers/ServerCreationService.php +++ b/app/Services/Servers/ServerCreationService.php @@ -2,6 +2,7 @@ namespace App\Services\Servers; +use App\Enums\ServerState; use App\Models\ServerVariable; use Ramsey\Uuid\Uuid; use Illuminate\Support\Arr; @@ -132,7 +133,7 @@ class ServerCreationService 'node_id' => Arr::get($data, 'node_id'), 'name' => Arr::get($data, 'name'), 'description' => Arr::get($data, 'description') ?? '', - 'status' => Server::STATUS_INSTALLING, + 'status' => ServerState::Installing, 'skip_scripts' => Arr::get($data, 'skip_scripts') ?? isset($data['skip_scripts']), 'owner_id' => Arr::get($data, 'owner_id'), 'memory' => Arr::get($data, 'memory'), diff --git a/app/Services/Servers/SuspensionService.php b/app/Services/Servers/SuspensionService.php index 196a0a680..5e317fc1b 100644 --- a/app/Services/Servers/SuspensionService.php +++ b/app/Services/Servers/SuspensionService.php @@ -2,6 +2,7 @@ namespace App\Services\Servers; +use App\Enums\ServerState; use Webmozart\Assert\Assert; use App\Models\Server; use App\Repositories\Daemon\DaemonServerRepository; @@ -44,7 +45,7 @@ class SuspensionService // Update the server's suspension status. $server->update([ - 'status' => $isSuspending ? Server::STATUS_SUSPENDED : null, + 'status' => $isSuspending ? ServerState::Suspended : null, ]); try { @@ -53,7 +54,7 @@ class SuspensionService } catch (\Exception $exception) { // Rollback the server's suspension status if daemon fails to sync the server. $server->update([ - 'status' => $isSuspending ? null : Server::STATUS_SUSPENDED, + 'status' => $isSuspending ? null : ServerState::Suspended, ]); throw $exception; } diff --git a/tests/Integration/Api/Client/Server/SettingsControllerTest.php b/tests/Integration/Api/Client/Server/SettingsControllerTest.php index b40a484c4..dab6264fa 100644 --- a/tests/Integration/Api/Client/Server/SettingsControllerTest.php +++ b/tests/Integration/Api/Client/Server/SettingsControllerTest.php @@ -2,6 +2,7 @@ namespace App\Tests\Integration\Api\Client\Server; +use App\Enums\ServerState; use Illuminate\Http\Response; use App\Models\Server; use App\Models\Permission; @@ -93,7 +94,7 @@ class SettingsControllerTest extends ClientApiIntegrationTestCase ->assertStatus(Response::HTTP_ACCEPTED); $server = $server->refresh(); - $this->assertSame(Server::STATUS_INSTALLING, $server->status); + $this->assertSame(ServerState::Installing, $server->status); } /** diff --git a/tests/Integration/Api/Remote/SftpAuthenticationControllerTest.php b/tests/Integration/Api/Remote/SftpAuthenticationControllerTest.php index f460ecc50..b2d5d4919 100644 --- a/tests/Integration/Api/Remote/SftpAuthenticationControllerTest.php +++ b/tests/Integration/Api/Remote/SftpAuthenticationControllerTest.php @@ -2,6 +2,7 @@ namespace App\Tests\Integration\Api\Remote; +use App\Enums\ServerState; use App\Models\Node; use App\Models\User; use App\Models\Server; @@ -207,9 +208,9 @@ class SftpAuthenticationControllerTest extends IntegrationTestCase public static function serverStateDataProvider(): array { return [ - 'installing' => [Server::STATUS_INSTALLING], - 'suspended' => [Server::STATUS_SUSPENDED], - 'restoring a backup' => [Server::STATUS_RESTORING_BACKUP], + 'installing' => [ServerState::Installing->value], + 'suspended' => [ServerState::Suspended->value], + 'restoring a backup' => [ServerState::RestoringBackup->value], ]; } diff --git a/tests/Integration/Jobs/Schedule/RunTaskJobTest.php b/tests/Integration/Jobs/Schedule/RunTaskJobTest.php index de082823c..c6ececf5a 100644 --- a/tests/Integration/Jobs/Schedule/RunTaskJobTest.php +++ b/tests/Integration/Jobs/Schedule/RunTaskJobTest.php @@ -2,6 +2,7 @@ namespace App\Tests\Integration\Jobs\Schedule; +use App\Enums\ServerState; use Carbon\Carbon; use Carbon\CarbonImmutable; use GuzzleHttp\Psr7\Request; @@ -151,7 +152,7 @@ class RunTaskJobTest extends IntegrationTestCase public function testTaskIsNotRunIfServerIsSuspended(): void { $server = $this->createServerModel([ - 'status' => Server::STATUS_SUSPENDED, + 'status' => ServerState::Suspended, ]); $schedule = Schedule::factory()->for($server)->create([ diff --git a/tests/Integration/Services/Servers/SuspensionServiceTest.php b/tests/Integration/Services/Servers/SuspensionServiceTest.php index 423e2534f..1af1d6c45 100644 --- a/tests/Integration/Services/Servers/SuspensionServiceTest.php +++ b/tests/Integration/Services/Servers/SuspensionServiceTest.php @@ -2,8 +2,8 @@ namespace App\Tests\Integration\Services\Servers; +use App\Enums\ServerState; use Mockery\MockInterface; -use App\Models\Server; use App\Services\Servers\SuspensionService; use App\Tests\Integration\IntegrationTestCase; use App\Repositories\Daemon\DaemonServerRepository; @@ -47,7 +47,7 @@ class SuspensionServiceTest extends IntegrationTestCase $server->refresh(); $this->assertFalse($server->isSuspended()); - $server->update(['status' => Server::STATUS_SUSPENDED]); + $server->update(['status' => ServerState::Suspended]); $this->getService()->toggle($server); $server->refresh(); From d659bf43491b6e0d801925d8765cbf336f796630 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 18 Apr 2024 03:50:33 -0400 Subject: [PATCH 165/173] Allow primary allocation to be changed --- app/Filament/Resources/ServerResource.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 452ae1be8..8f769ff2c 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -523,9 +523,11 @@ class ServerResource extends Resource ->label('Owner') ->url(fn (Server $server): string => route('filament.admin.resources.users.edit', ['record' => $server->user])) ->sortable(), - Tables\Columns\SelectColumn::make('allocation.id') + Tables\Columns\SelectColumn::make('allocation_id') ->label('Primary Allocation') - ->options(fn ($state, Server $server) => [$server->allocation->id => $server->allocation->address]) + ->options(fn ($state, Server $server) => $server->allocations->mapWithKeys( + fn ($allocation) => [$allocation->id => $allocation->address]) + ) ->selectablePlaceholder(false) ->sortable(), Tables\Columns\TextColumn::make('image')->hidden(), From 5469dce6ca6ca3ae7aaa2ccae3f13db1d3dfab48 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 18 Apr 2024 03:50:45 -0400 Subject: [PATCH 166/173] Remove unused variables --- .../Admin/Servers/ServerViewController.php | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/Admin/Servers/ServerViewController.php b/app/Http/Controllers/Admin/Servers/ServerViewController.php index 29a0e6322..594022a97 100644 --- a/app/Http/Controllers/Admin/Servers/ServerViewController.php +++ b/app/Http/Controllers/Admin/Servers/ServerViewController.php @@ -8,7 +8,6 @@ use App\Models\Egg; use App\Models\Mount; use App\Models\Node; use Illuminate\View\View; -use Illuminate\Http\Request; use App\Models\Server; use App\Exceptions\DisplayException; use App\Http\Controllers\Controller; @@ -23,14 +22,14 @@ class ServerViewController extends Controller * ServerViewController constructor. */ public function __construct( - private EnvironmentService $environmentService, + private readonly EnvironmentService $environmentService, ) { } /** * Returns the index view for a server. */ - public function index(Request $request, Server $server): View + public function index(Server $server): View { return view('admin.servers.view.index', compact('server')); } @@ -38,7 +37,7 @@ class ServerViewController extends Controller /** * Returns the server details page. */ - public function details(Request $request, Server $server): View + public function details(Server $server): View { return view('admin.servers.view.details', compact('server')); } @@ -46,7 +45,7 @@ class ServerViewController extends Controller /** * Returns a view of server build settings. */ - public function build(Request $request, Server $server): View + public function build(Server $server): View { $allocations = $server->node->allocations->toBase(); @@ -60,7 +59,7 @@ class ServerViewController extends Controller /** * Returns the server startup management page. */ - public function startup(Request $request, Server $server): View + public function startup(Server $server): View { $variables = $this->environmentService->handle($server); $eggs = Egg::all()->keyBy('id'); @@ -77,7 +76,7 @@ class ServerViewController extends Controller /** * Returns all the databases that exist for the server. */ - public function database(Request $request, Server $server): View + public function database(Server $server): View { return view('admin.servers.view.database', [ 'hosts' => DatabaseHost::all(), @@ -88,7 +87,7 @@ class ServerViewController extends Controller /** * Returns all the mounts that exist for the server. */ - public function mounts(Request $request, Server $server): View + public function mounts(Server $server): View { $server->load('mounts'); @@ -109,7 +108,7 @@ class ServerViewController extends Controller * * @throws \App\Exceptions\DisplayException */ - public function manage(Request $request, Server $server): View + public function manage(Server $server): View { if ($server->status === ServerState::InstallFailed) { throw new DisplayException('This server is in a failed install state and cannot be recovered. Please delete and re-create the server.'); @@ -136,7 +135,7 @@ class ServerViewController extends Controller /** * Returns the server deletion page. */ - public function delete(Request $request, Server $server): View + public function delete(Server $server): View { return view('admin.servers.view.delete', compact('server')); } From 25177d16856155501b7e895850a6be559ebed899 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 18 Apr 2024 03:51:25 -0400 Subject: [PATCH 167/173] Wip 2fa --- .../UserResource/Pages/EditProfile.php | 65 ++++++- composer.json | 1 + composer.lock | 161 +++++++++++++++++- 3 files changed, 223 insertions(+), 4 deletions(-) diff --git a/app/Filament/Resources/UserResource/Pages/EditProfile.php b/app/Filament/Resources/UserResource/Pages/EditProfile.php index 08aedbbaf..ed4a09604 100644 --- a/app/Filament/Resources/UserResource/Pages/EditProfile.php +++ b/app/Filament/Resources/UserResource/Pages/EditProfile.php @@ -4,6 +4,11 @@ namespace App\Filament\Resources\UserResource\Pages; use App\Models\ActivityLog; use App\Models\User; +use App\Services\Users\TwoFactorSetupService; +use chillerlan\QRCode\Common\EccLevel; +use chillerlan\QRCode\Common\Version; +use chillerlan\QRCode\QRCode; +use chillerlan\QRCode\QROptions; use Filament\Forms\Components\Placeholder; use Filament\Forms\Components\Repeater; use Filament\Forms\Components\Select; @@ -77,9 +82,63 @@ class EditProfile extends \Filament\Pages\Auth\EditProfile Tab::make('2FA') ->icon('tabler-shield-lock') - ->schema([ - Placeholder::make('Coming soon!'), - ]), + ->schema(function () { + + if ($this->getUser()->use_totp) { + return [ + Placeholder::make('2FA already enabled!'), + ]; + } + $setupService = app(TwoFactorSetupService::class); + + ['image_url_data' => $url] = $setupService->handle($this->getUser()); + + $options = new QROptions([ + 'svgLogo' => public_path('pelican.svg'), + 'addLogoSpace' => true, + 'logoSpaceWidth' => 13, + 'logoSpaceHeight' => 13, + ]); + + // https://github.com/chillerlan/php-qrcode/blob/main/examples/svgWithLogo.php + + // SVG logo options (see extended class) + $options->svgLogo = public_path('pelican.svg'); // logo from: https://github.com/simple-icons/simple-icons + $options->svgLogoScale = 0.05; + // $options->svgLogoCssClass = 'dark'; + + // QROptions + $options->version = Version::AUTO; + // $options->outputInterface = QRSvgWithLogo::class; + $options->outputBase64 = false; + $options->eccLevel = EccLevel::H; // ECC level H is necessary when using logos + $options->addQuietzone = true; + // $options->drawLightModules = true; + $options->connectPaths = true; + $options->drawCircularModules = true; + // $options->circleRadius = 0.45; + + $options->svgDefs = ' + + + + + '; + + $image = (new QRCode($options))->render($url); + + return [ + Placeholder::make('qr') + ->label('Scan QR Code') + ->content(fn () => new HtmlString(" +
    $image
    + ")) + ->default('asdfasdf'), + ]; + }), Tab::make('API Keys') ->icon('tabler-key') diff --git a/composer.json b/composer.json index e5cf3f9e0..d4c3d4966 100644 --- a/composer.json +++ b/composer.json @@ -11,6 +11,7 @@ "ext-posix": "*", "ext-zip": "*", "aws/aws-sdk-php": "~3.288.1", + "chillerlan/php-qrcode": "^5.0", "doctrine/dbal": "~3.6.0", "filament/filament": "^3.2", "guzzlehttp/guzzle": "^7.5", diff --git a/composer.lock b/composer.lock index d3ade3465..9923d10c1 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "bf147fbbb2f57777d6c6b137bc61bcda", + "content-hash": "d2c8db4966266b50f8f28b31708f73a6", "packages": [ { "name": "anourvalar/eloquent-serialize", @@ -495,6 +495,165 @@ ], "time": "2023-10-01T12:35:29+00:00" }, + { + "name": "chillerlan/php-qrcode", + "version": "5.0.2", + "source": { + "type": "git", + "url": "https://github.com/chillerlan/php-qrcode.git", + "reference": "da5bdb82c8755f54de112b271b402aaa8df53269" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/chillerlan/php-qrcode/zipball/da5bdb82c8755f54de112b271b402aaa8df53269", + "reference": "da5bdb82c8755f54de112b271b402aaa8df53269", + "shasum": "" + }, + "require": { + "chillerlan/php-settings-container": "^2.1.4 || ^3.1", + "ext-mbstring": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "chillerlan/php-authenticator": "^4.1 || ^5.1", + "phan/phan": "^5.4", + "phpmd/phpmd": "^2.15", + "phpunit/phpunit": "^9.6", + "setasign/fpdf": "^1.8.2", + "squizlabs/php_codesniffer": "^3.8" + }, + "suggest": { + "chillerlan/php-authenticator": "Yet another Google authenticator! Also creates URIs for mobile apps.", + "setasign/fpdf": "Required to use the QR FPDF output.", + "simple-icons/simple-icons": "SVG icons that you can use to embed as logos in the QR Code" + }, + "type": "library", + "autoload": { + "psr-4": { + "chillerlan\\QRCode\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT", + "Apache-2.0" + ], + "authors": [ + { + "name": "Kazuhiko Arase", + "homepage": "https://github.com/kazuhikoarase/qrcode-generator" + }, + { + "name": "ZXing Authors", + "homepage": "https://github.com/zxing/zxing" + }, + { + "name": "Ashot Khanamiryan", + "homepage": "https://github.com/khanamiryan/php-qrcode-detector-decoder" + }, + { + "name": "Smiley", + "email": "smiley@chillerlan.net", + "homepage": "https://github.com/codemasher" + }, + { + "name": "Contributors", + "homepage": "https://github.com/chillerlan/php-qrcode/graphs/contributors" + } + ], + "description": "A QR code generator and reader with a user friendly API. PHP 7.4+", + "homepage": "https://github.com/chillerlan/php-qrcode", + "keywords": [ + "phpqrcode", + "qr", + "qr code", + "qr-reader", + "qrcode", + "qrcode-generator", + "qrcode-reader" + ], + "support": { + "docs": "https://php-qrcode.readthedocs.io", + "issues": "https://github.com/chillerlan/php-qrcode/issues", + "source": "https://github.com/chillerlan/php-qrcode" + }, + "funding": [ + { + "url": "https://www.paypal.com/donate?hosted_button_id=WLYUNAT9ZTJZ4", + "type": "custom" + }, + { + "url": "https://ko-fi.com/codemasher", + "type": "ko_fi" + } + ], + "time": "2024-02-27T14:37:26+00:00" + }, + { + "name": "chillerlan/php-settings-container", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/chillerlan/php-settings-container.git", + "reference": "8f93648fac8e6bacac8e00a8d325eba4950295e6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/8f93648fac8e6bacac8e00a8d325eba4950295e6", + "reference": "8f93648fac8e6bacac8e00a8d325eba4950295e6", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^8.1" + }, + "require-dev": { + "phan/phan": "^5.4", + "phpmd/phpmd": "^2.15", + "phpunit/phpunit": "^10.5", + "squizlabs/php_codesniffer": "^3.9" + }, + "type": "library", + "autoload": { + "psr-4": { + "chillerlan\\Settings\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Smiley", + "email": "smiley@chillerlan.net", + "homepage": "https://github.com/codemasher" + } + ], + "description": "A container class for immutable settings objects. Not a DI container.", + "homepage": "https://github.com/chillerlan/php-settings-container", + "keywords": [ + "Settings", + "configuration", + "container", + "helper" + ], + "support": { + "issues": "https://github.com/chillerlan/php-settings-container/issues", + "source": "https://github.com/chillerlan/php-settings-container" + }, + "funding": [ + { + "url": "https://www.paypal.com/donate?hosted_button_id=WLYUNAT9ZTJZ4", + "type": "custom" + }, + { + "url": "https://ko-fi.com/codemasher", + "type": "ko_fi" + } + ], + "time": "2024-03-02T20:07:15+00:00" + }, { "name": "danharrin/date-format-converter", "version": "v0.3.0", From 4c5072b5c06d97dd7e8827bef75c67e8c9e9d8d2 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 18 Apr 2024 03:52:55 -0400 Subject: [PATCH 168/173] When editing set the custom image selector correctly --- app/Filament/Resources/ServerResource.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 8f769ff2c..96d3708ee 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -325,6 +325,15 @@ class ServerResource extends Resource ->live() ->label('Custom Image?') ->default(false) + ->formatStateUsing(function ($state, Forms\Get $get) { + if ($state !== null) { + return $state; + } + + $images = Egg::find($get('egg_id'))->docker_images ?? []; + + return !in_array($get('image'), $images); + }) ->options([ false => 'No', true => 'Yes', From 556ab76fc52c3c6b50d06570aa605b747cdfaa54 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 18 Apr 2024 03:53:28 -0400 Subject: [PATCH 169/173] Basic server status implementation --- app/Filament/Resources/ServerResource.php | 36 +++++++++++++++++++++++ app/Models/Node.php | 14 +++++++++ app/Models/Server.php | 5 ++++ 3 files changed, 55 insertions(+) diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 96d3708ee..bfb2ae7a1 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -2,6 +2,8 @@ namespace App\Filament\Resources; +use App\Enums\ContainerStatus; +use App\Enums\ServerState; use App\Filament\Resources\ServerResource\Pages; use App\Models\Allocation; use App\Models\Egg; @@ -511,6 +513,40 @@ class ServerResource extends Resource return $table ->searchable(false) ->columns([ + Tables\Columns\TextColumn::make('status') + ->default('unknown') + ->badge() + ->default(function (Server $server) { + if ($server->status !== null) { + return $server->status; + } + + $statuses = collect($server->retrieveStatus()) + ->mapWithKeys(function ($status) { + return [$status['configuration']['uuid'] => $status['state']]; + })->all(); + + return $statuses[$server->uuid] ?? 'node_fail'; + }) + ->icon(fn ($state) => match ($state) { + 'node_fail' => 'tabler-server-off', + 'running' => 'tabler-heartbeat', + 'removing' => 'tabler-heart-x', + 'offline' => 'tabler-heart-off', + 'paused' => 'tabler-heart-pause', + 'installing' => 'tabler-heart-bolt', + 'suspended' => 'tabler-heart-cancel', + default => 'tabler-heart-question', + }) + ->color(fn (string $state): string => match ($state) { + 'running' => 'success', + 'installing', 'restarting' => 'primary', + 'paused', 'removing' => 'warning', + 'node_fail', 'install_failed', 'suspended' => 'danger', + default => 'gray', + }) + , + Tables\Columns\TextColumn::make('uuid') ->hidden() ->label('UUID') diff --git a/app/Models/Node.php b/app/Models/Node.php index e3dc97b41..1402547f8 100644 --- a/app/Models/Node.php +++ b/app/Models/Node.php @@ -5,6 +5,7 @@ namespace App\Models; use App\Exceptions\Service\HasActiveServersException; use App\Repositories\Daemon\DaemonConfigurationRepository; use Exception; +use Illuminate\Support\Facades\Http; use Illuminate\Support\Str; use Symfony\Component\Yaml\Yaml; use Illuminate\Notifications\Notifiable; @@ -288,4 +289,17 @@ class Node extends Model } }); } + + public function serverStatuses(): array + { + try { + /** @var \Illuminate\Http\Client\Response $response */ + $response = Http::daemon($this)->connectTimeout(1)->timeout(1)->get('/api/servers'); + $statuses = $response->json(); + } catch (Exception) { + $statuses = []; + } + + return cache()->remember("nodes.$this->id.servers", now()->addSeconds(2), fn () => $statuses); + } } diff --git a/app/Models/Server.php b/app/Models/Server.php index e6896d16d..cb125f880 100644 --- a/app/Models/Server.php +++ b/app/Models/Server.php @@ -394,4 +394,9 @@ class Server extends Model throw new DaemonConnectionException($exception); } } + + public function retrieveStatus() + { + return $this->node->serverStatuses(); + } } From 422fc1a6b27fc27b181adefedd7aa24f1492f7d8 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 18 Apr 2024 16:21:22 -0400 Subject: [PATCH 170/173] Add github for funding --- .github/FUNDING.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index cd237a2c2..9be4f1175 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1 +1,2 @@ +github: pelican-dev custom: [https://buy.stripe.com/14kdU99SI4UT7ni9AB, https://buy.stripe.com/14kaHXc0Q9b9372eUU] From e25ca5dfc16dd42f57bcaa6c5fda6c2efc4cef01 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 18 Apr 2024 16:21:40 -0400 Subject: [PATCH 171/173] Add separated repositories for eggs --- readme.md | 78 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 48 insertions(+), 30 deletions(-) diff --git a/readme.md b/readme.md index fc00c7e81..a8fb57a14 100644 --- a/readme.md +++ b/readme.md @@ -8,40 +8,58 @@ Ideal for both individual gamers and hosting companies, it simplifies server adm Fly High, Game On: Pelican's pledge for unrivaled game servers. -## Documentation +## Links -* [Panel Documentation](https://pelican.dev/panel/1.0/getting_started.html) -* [Wings Documentation](https://pelican.dev/wings/1.0/installing.html) -* [Community Guides](https://pelican.dev/community/about.html) -* [Official Discord](https://pelican.dev/discord) +* [Official Discord](https://discord.gg/pelican-panel) +* [Wings](https://github.com/pelican-dev/wings) -### Supported Games +### Supported Games and Servers -Pelican supports a wide variety of games by utilizing Docker containers to isolate each instance. This gives -you the power to run game servers without bloating machines with a host of additional dependencies. +Pelican supports a wide variety of games by utilizing Docker containers to isolate each instance. +This gives you the power to run game servers without bloating machines with a host of additional dependencies. -Some of our core supported games include: +Some of our popular eggs include but are not limited to: -* Minecraft — including Paper, Sponge, Bungeecord, Waterfall, and more -* Rust -* Terraria -* Teamspeak -* Mumble -* Team Fortress 2 -* Counter Strike: Global Offensive -* Garry's Mod -* ARK: Survival Evolved - -In addition to our standard nest of supported games, our community is constantly pushing the limits of this software -and there are plenty more games available provided by the community. Some of these games include: - -* Factorio -* San Andreas: MP -* Pocketmine MP -* Squad -* Xonotic -* Starmade -* Discord ATLBot, and most other Node.js/Python discord bots -* [and many more...](https://github.com/parkervcp/eggs) +* [Minecraft](https://github.com/pelican-eggs/minecraft) + * Paper + * Sponge + * Bungeecord + * Waterfall +* [SteamCMD](https://github.com/pelican-eggs/steamcmd) + * 7 Days to Die + * ARK: Survival + * ARMA + * Counter Strike + * DayZ + * Enshrouded + * Left 4 Dead + * Palworld + * Project Zomboid + * Sons of the Forest +* [Other Games](https://github.com/pelican-eggs/games) + * Among Us + * Factorio + * GTA + * Rimworld + * Terraria +* [Discord Bots](https://github.com/pelican-eggs/chatbots) + * Redbot + * JMusicBot + * SinusBot + * Dynamica +* [Software](https://github.com/pelican-eggs/software) +* [Programming Languages](https://github.com/pelican-eggs/generic) + * C# + * Java + * Lua + * Node.js + * Python +* [Database](https://github.com/pelican-eggs/database) + * Redis + * MariaDB + * PostgreSQL +* [Voice Servers](https://github.com/pelican-eggs/voice) +* [Storage](https://github.com/pelican-eggs/storage) +* [Monitoring](https://github.com/pelican-eggs/monitoring) Copyright Pelican® 2024 From ee735c9b7736e45a74663ff244e1e25766d484d6 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 18 Apr 2024 16:46:08 -0400 Subject: [PATCH 172/173] Add skeleton for adding new allocations --- .../Resources/NodeResource/Pages/EditNode.php | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/app/Filament/Resources/NodeResource/Pages/EditNode.php b/app/Filament/Resources/NodeResource/Pages/EditNode.php index 8a6cdacf6..e6c5bff16 100644 --- a/app/Filament/Resources/NodeResource/Pages/EditNode.php +++ b/app/Filament/Resources/NodeResource/Pages/EditNode.php @@ -3,6 +3,7 @@ namespace App\Filament\Resources\NodeResource\Pages; use App\Filament\Resources\NodeResource; +use App\Models\Allocation; use App\Models\Node; use Filament\Actions; use Filament\Forms; @@ -63,7 +64,37 @@ class EditNode extends EditRecord ->minValue(0) ->maxValue(65535) ->numeric(), - Forms\Components\Select::make('server_id')->relationship('server', 'name'), + Forms\Components\TextInput::make('server') + ->formatStateUsing(fn (Allocation $allocation) => $allocation->server?->name) + ->readOnly() + ->placeholder('No Server'), + ]), + Forms\Components\Section::make('Assign New Allocations') + ->columnSpan(2) + ->inlineLabel() + ->headerActions([ + Forms\Components\Actions\Action::make('submit') + ->color('success') + ->action(function () { + // ... + }), + ]) + ->schema([ + Forms\Components\TextInput::make('ip') + ->label('IP Address') + ->placeholder('0.0.0.0') + ->helperText('IP address to assign ports to') + ->columnSpanFull(), + Forms\Components\TextInput::make('ip_alias') + ->label('Alias') + ->placeholder('minecraft') + ->helperText('Display name to help you remember') + ->columnSpanFull(), + Forms\Components\TextInput::make('ports') + ->label('Ports') + ->placeholder('25565') + ->helperText('Individual ports or port ranges here separated by commas or spaces') + ->columnSpanFull(), ]), ]), ]), From ae189748f1c91c501e130512a84a732e86b11747 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Thu, 18 Apr 2024 17:08:10 -0400 Subject: [PATCH 173/173] Fix styling --- app/Filament/Pages/Dashboard.php | 2 -- app/Filament/Resources/ServerResource.php | 3 +-- .../ServerResource/Pages/CreateServer.php | 9 +++---- .../UserResource/Pages/EditProfile.php | 25 +++++++++---------- 4 files changed, 17 insertions(+), 22 deletions(-) diff --git a/app/Filament/Pages/Dashboard.php b/app/Filament/Pages/Dashboard.php index e6836c6c9..b263a6b08 100644 --- a/app/Filament/Pages/Dashboard.php +++ b/app/Filament/Pages/Dashboard.php @@ -8,8 +8,6 @@ use App\Models\Node; use App\Models\Server; use App\Models\User; use Filament\Actions\CreateAction; -use Filament\Infolists\Components\Concerns\HasHeaderActions; -use Filament\Infolists\Infolist; use Filament\Pages\Page; class Dashboard extends Page diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index b6e6de199..ffa7c8fb1 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -592,8 +592,7 @@ class ServerResource extends Resource 'paused', 'removing' => 'warning', 'node_fail', 'install_failed', 'suspended' => 'danger', default => 'gray', - }) - , + }), Tables\Columns\TextColumn::make('uuid') ->hidden() diff --git a/app/Filament/Resources/ServerResource/Pages/CreateServer.php b/app/Filament/Resources/ServerResource/Pages/CreateServer.php index bcf0a72c6..af95ddf20 100644 --- a/app/Filament/Resources/ServerResource/Pages/CreateServer.php +++ b/app/Filament/Resources/ServerResource/Pages/CreateServer.php @@ -4,7 +4,6 @@ namespace App\Filament\Resources\ServerResource\Pages; use App\Filament\Resources\ServerResource; use App\Services\Servers\ServerCreationService; -use Filament\Actions; use Filament\Resources\Pages\CreateRecord; use Illuminate\Database\Eloquent\Model; @@ -25,8 +24,8 @@ class CreateServer extends CreateRecord return $server; } -// protected function getRedirectUrl(): string -// { -// return $this->getResource()::getUrl('edit'); -// } + // protected function getRedirectUrl(): string + // { + // return $this->getResource()::getUrl('edit'); + // } } diff --git a/app/Filament/Resources/UserResource/Pages/EditProfile.php b/app/Filament/Resources/UserResource/Pages/EditProfile.php index 40f6b16b2..1bc573d65 100644 --- a/app/Filament/Resources/UserResource/Pages/EditProfile.php +++ b/app/Filament/Resources/UserResource/Pages/EditProfile.php @@ -71,8 +71,7 @@ class EditProfile extends \Filament\Pages\Auth\EditProfile ->prefixIcon('tabler-flag') ->live() ->default('en') - ->helperText(fn (User $user, $state) => - new HtmlString($user->isLanguageTranslated($state) ? '' : " + ->helperText(fn (User $user, $state) => new HtmlString($user->isLanguageTranslated($state) ? '' : " Your language ($state) has not been translated yet! But never fear, you can help fix that by contributing directly here. @@ -96,26 +95,26 @@ class EditProfile extends \Filament\Pages\Auth\EditProfile $options = new QROptions([ 'svgLogo' => public_path('pelican.svg'), - 'addLogoSpace' => true, - 'logoSpaceWidth' => 13, - 'logoSpaceHeight' => 13, + 'addLogoSpace' => true, + 'logoSpaceWidth' => 13, + 'logoSpaceHeight' => 13, ]); // https://github.com/chillerlan/php-qrcode/blob/main/examples/svgWithLogo.php // SVG logo options (see extended class) - $options->svgLogo = public_path('pelican.svg'); // logo from: https://github.com/simple-icons/simple-icons - $options->svgLogoScale = 0.05; + $options->svgLogo = public_path('pelican.svg'); // logo from: https://github.com/simple-icons/simple-icons + $options->svgLogoScale = 0.05; // $options->svgLogoCssClass = 'dark'; // QROptions - $options->version = Version::AUTO; + $options->version = Version::AUTO; // $options->outputInterface = QRSvgWithLogo::class; - $options->outputBase64 = false; - $options->eccLevel = EccLevel::H; // ECC level H is necessary when using logos - $options->addQuietzone = true; + $options->outputBase64 = false; + $options->eccLevel = EccLevel::H; // ECC level H is necessary when using logos + $options->addQuietzone = true; // $options->drawLightModules = true; - $options->connectPaths = true; + $options->connectPaths = true; $options->drawCircularModules = true; // $options->circleRadius = 0.45; @@ -153,7 +152,7 @@ class EditProfile extends \Filament\Pages\Auth\EditProfile ->hidden() ->default(null), ]), - + Tab::make('SSH Keys') ->icon('tabler-lock-code') ->schema([