diff --git a/composer.json b/composer.json index 7948a44910..98e3ca9b6c 100644 --- a/composer.json +++ b/composer.json @@ -30,7 +30,7 @@ }, "require": { "php": ">=8.1", - "winter/storm": "dev-develop as 1.2", + "winter/storm": "dev-wip/support-uploading-packages-update-manager-changes as 1.2", "winter/wn-system-module": "dev-develop", "winter/wn-backend-module": "dev-develop", "winter/wn-cms-module": "dev-develop", @@ -81,7 +81,8 @@ "config": { "allow-plugins": { "composer/installers": true, - "wikimedia/composer-merge-plugin": true + "wikimedia/composer-merge-plugin": true, + "php-http/discovery": false } } } diff --git a/modules/backend/ServiceProvider.php b/modules/backend/ServiceProvider.php index 338096a147..745a3b7ebe 100644 --- a/modules/backend/ServiceProvider.php +++ b/modules/backend/ServiceProvider.php @@ -61,11 +61,13 @@ public function boot() */ protected function registerConsole() { - $this->registerConsoleCommand('create.controller', \Backend\Console\CreateController::class); - $this->registerConsoleCommand('create.formwidget', \Backend\Console\CreateFormWidget::class); - $this->registerConsoleCommand('create.reportwidget', \Backend\Console\CreateReportWidget::class); - $this->registerConsoleCommand('user.create', \Backend\Console\UserCreate::class); - $this->registerConsoleCommand('winter.passwd', \Backend\Console\WinterPasswd::class); + $this->commands([ + \Backend\Console\CreateController::class, + \Backend\Console\CreateFormWidget::class, + \Backend\Console\CreateReportWidget::class, + \Backend\Console\UserCreate::class, + \Backend\Console\WinterPasswd::class, + ]); } /** diff --git a/modules/backend/classes/AuthManager.php b/modules/backend/classes/AuthManager.php index deb56cc9a5..f6b2761dba 100644 --- a/modules/backend/classes/AuthManager.php +++ b/modules/backend/classes/AuthManager.php @@ -1,7 +1,7 @@ registerBackendWidgets(); $this->registerBackendSettings(); } + + /* + * Console specific + */ + if ($this->app->runningInConsole()) { + Command::extend(function (Command $command) { + $command->bindEvent('command.beforeRun', function () use ($command) { + ThemeManager::instance()->setOutput($command->getOutput()); + }); + }); + } } /** @@ -78,14 +93,15 @@ public function boot() */ protected function registerConsole() { - $this->registerConsoleCommand('create.component', \Cms\Console\CreateComponent::class); - $this->registerConsoleCommand('create.theme', \Cms\Console\CreateTheme::class); - - $this->registerConsoleCommand('theme.install', \Cms\Console\ThemeInstall::class); - $this->registerConsoleCommand('theme.remove', \Cms\Console\ThemeRemove::class); - $this->registerConsoleCommand('theme.list', \Cms\Console\ThemeList::class); - $this->registerConsoleCommand('theme.use', \Cms\Console\ThemeUse::class); - $this->registerConsoleCommand('theme.sync', \Cms\Console\ThemeSync::class); + $this->commands([ + \Cms\Console\CreateComponent::class, + \Cms\Console\CreateTheme::class, + \Cms\Console\ThemeInstall::class, + \Cms\Console\ThemeRemove::class, + \Cms\Console\ThemeList::class, + \Cms\Console\ThemeUse::class, + \Cms\Console\ThemeSync::class, + ]); } /** diff --git a/modules/cms/classes/ComponentManager.php b/modules/cms/classes/ComponentManager.php index 5388c53ac4..8c345a5333 100644 --- a/modules/cms/classes/ComponentManager.php +++ b/modules/cms/classes/ComponentManager.php @@ -1,9 +1,9 @@ setDirName($dirName); $theme->registerHalcyonDatasource(); + if (App::runningInBackend()) { $theme->registerBackendLocalization(); } @@ -713,4 +724,26 @@ public function __isset($key) return false; } + + public function getVersion(): string + { + if (isset($this->version)) { + return $this->version; + } + + $versions = $this->getVersionsFromYaml( + versionFile: $this->getPath() . DIRECTORY_SEPARATOR . 'version.yaml', + includeScripts: false + ); + if (empty($versions)) { + return $this->version = '0'; + } + + return $this->version = trim(key(array_slice($versions, -1, 1))); + } + + public function getIdentifier(): string + { + return $this->getId(); + } } diff --git a/modules/cms/classes/ThemeManager.php b/modules/cms/classes/ThemeManager.php index e60fdcfd24..acdc892f8b 100644 --- a/modules/cms/classes/ThemeManager.php +++ b/modules/cms/classes/ThemeManager.php @@ -1,9 +1,22 @@ -resolveIdentifier($name); + return array_key_exists($code, Parameter::get('system::theme.history', [])); } /** - * Flags a theme as being installed, so it is not downloaded twice. - * @param string $code Theme code - * @param string|null $dirName + * Returns an installed theme's code from it's dirname. + * @return string */ - public function setInstalled($code, $dirName = null) + public function findByDirName($dirName) { - if (!$dirName) { - $dirName = strtolower(str_replace('.', '-', $code)); + $installed = $this->getInstalled(); + foreach ($installed as $code => $name) { + if ($dirName == $name) { + return $code; + } } + return null; + } + + public function list(): array + { + return array_combine( + array_map(fn ($theme) => $theme->getIdentifier(), $themes = Theme::all()), + $themes + ); + } + + public function create(string $extension): Theme + { + $this->renderComponent(Info::class, sprintf('Running command `create:theme %s`.', $extension)); + + $result = Artisan::call('create:theme', [ + 'theme' => $extension, + '--uninspiring' => true, + ], $this->getOutput()); + + $result === 0 + ? $this->renderComponent(Info::class, 'Theme created successfully.') + : $this->renderComponent(Error::class, 'Unable to create theme.'); + + // Return an instance of the plugin + return $this->get($extension); + } + + public function install(ExtensionSource|WinterExtension|string $extension): Theme + { + $theme = $this->resolve($extension); + $code = $theme->getIdentifier(); + + $dirName = strtolower(str_replace('.', '-', $code)); + $history = Parameter::get('system::theme.history', []); $history[$code] = $dirName; Parameter::set('system::theme.history', $history); + + $this->renderComponent(Info::class, 'Theme ' . $code . ' installed successfully.'); + + return $theme; } - /** - * Flags a theme as being uninstalled. - * @param string $code Theme code - */ - public function setUninstalled($code) + public function get(WinterExtension|ExtensionSource|string $extension): ?WinterExtension { - $history = Parameter::get('system::theme.history', []); - if (array_key_exists($code, $history)) { - unset($history[$code]); + if ($extension instanceof WinterExtension) { + return $extension; } - Parameter::set('system::theme.history', $history); - } + if ($extension instanceof ExtensionSource) { + $extension = $extension->getCode(); + } - /** - * Returns an installed theme's code from it's dirname. - * @return string - */ - public function findByDirName($dirName) - { - $installed = $this->getInstalled(); - foreach ($installed as $code => $name) { - if ($dirName == $name) { - return $code; - } + if (is_string($extension)) { + return Theme::load($extension); } return null; } - // - // Management - // + public function enable(WinterExtension|string $extension, string|bool $flag = self::DISABLED_BY_USER): Theme + { + // TODO: Implement enable() method. + } + + public function disable(WinterExtension|string $extension, string|bool $flag = self::DISABLED_BY_USER): Theme + { + // TODO: Implement disable() method. + } + + public function update(WinterExtension|string|null $extension = null, bool $migrationsOnly = false): ?bool + { + // @TODO: implement + return true; + } + + public function refresh(WinterExtension|string|null $extension = null): Theme + { + // TODO: Implement refresh() method. + } + + public function rollback(WinterExtension|string|null $extension = null, ?string $targetVersion = null): Theme + { + // TODO: Implement rollback() method. + } /** * Completely delete a theme from the system. - * @param string $theme Theme code/namespace - * @return void + * @param WinterExtension|string $theme Theme code/namespace + * @return mixed + * @throws ApplicationException */ - public function deleteTheme($theme) + public function uninstall(WinterExtension|string|null $theme = null, bool $noRollback = false, bool $preserveFiles = false): mixed { if (!$theme) { return false; } if (is_string($theme)) { - $theme = CmsTheme::load($theme); + $theme = Theme::load($theme); } if ($theme->isActiveTheme()) { @@ -113,7 +172,7 @@ public function deleteTheme($theme) * Delete from file system */ $themePath = $theme->getPath(); - if (File::isDirectory($themePath)) { + if (File::isDirectory($themePath) && !$preserveFiles) { File::deleteDirectory($themePath); } @@ -121,7 +180,82 @@ public function deleteTheme($theme) * Set uninstalled */ if ($themeCode = $this->findByDirName($theme->getDirName())) { - $this->setUninstalled($themeCode); + $history = Parameter::get('system::theme.history', []); + if (array_key_exists($themeCode, $history)) { + unset($history[$themeCode]); + } + + Parameter::set('system::theme.history', $history); } + + return true; + } + + /** + * @deprecated TODO: Remove this + * + * @param $theme + * @return mixed + * @throws ApplicationException + */ + public function deleteTheme($theme): mixed + { + return $this->uninstall($theme); + } + + public function availableUpdates(WinterExtension|string|null $extension = null): ?array + { + $toCheck = $extension ? [$this->get($extension)] : $this->list(); + + $composerUpdates = Composer::getAvailableUpdates(); + + $updates = []; + foreach ($toCheck as $theme) { + if ($theme->getComposerPackageName()) { + if (isset($composerUpdates[$theme->getComposerPackageName()])) { + $updates[$theme->getIdentifier()] = [ + 'from' => $composerUpdates[$theme->getComposerPackageName()][0], + 'to' => $composerUpdates[$theme->getComposerPackageName()][1], + ]; + } + continue; + } + // @TODO: Add market place support for updates + } + + return $updates; + } + + public function findThemesInPath(string $path): array + { + $themeFiles = []; + + $iterator = new RecursiveIteratorIterator( + new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS), + RecursiveIteratorIterator::SELF_FIRST + ); + + foreach ($iterator as $file) { + if ($file->isFile() && $file->getFilename() === 'theme.yaml') { + $config = Yaml::parseFile($file->getRealPath()); + if (isset($config['name'])) { + $themeFiles[$config['name']] = $file->getPathname(); + } + } + } + + return $themeFiles; + } + + /** + * @throws ApplicationException + */ + public function tearDown(): static + { + foreach ($this->list() as $theme) { + $this->uninstall($theme); + } + + return $this; } } diff --git a/modules/cms/console/ThemeInstall.php b/modules/cms/console/ThemeInstall.php index 3a1346bbb7..6900ced496 100644 --- a/modules/cms/console/ThemeInstall.php +++ b/modules/cms/console/ThemeInstall.php @@ -3,6 +3,7 @@ use Cms\Classes\Theme; use Cms\Classes\ThemeManager; use File; +use System\Classes\Core\MarketPlaceApi; use System\Classes\UpdateManager; use Winter\Storm\Console\Command; @@ -63,7 +64,7 @@ public function handle() $themeManager = ThemeManager::instance(); $updateManager = UpdateManager::instance(); - $themeDetails = $updateManager->requestThemeDetails($themeName); + $themeDetails = MarketPlaceApi::instance()->request(MarketPlaceApi::REQUEST_THEME_DETAIL, $themeName); if ($themeManager->isInstalled($themeDetails['code'])) { return $this->error(sprintf('The theme %s is already installed.', $themeDetails['code'])); diff --git a/modules/cms/widgets/ComponentList.php b/modules/cms/widgets/ComponentList.php index 825be21186..16f9a9cc06 100644 --- a/modules/cms/widgets/ComponentList.php +++ b/modules/cms/widgets/ComponentList.php @@ -1,12 +1,12 @@ registerBackendReportWidgets(); $this->registerBackendSettings(); } + + /* + * Console specific + */ + if ($this->app->runningInConsole()) { + Command::extend(function (Command $command) { + $command->bindEvent('command.beforeRun', function () use ($command) { + ModuleManager::instance()->setOutput($command->getOutput()); + PluginManager::instance()->setOutput($command->getOutput()); + }); + }); + } } /** @@ -146,7 +161,7 @@ protected function registerSingletons() // Register the Laravel Vite singleton $this->app->singleton(LaravelVite::class, \System\Classes\Asset\Vite::class); - + // Shutup extensions that expect Laravel's auth system to be present $this->app->singleton(\Illuminate\Contracts\Auth\Access\Gate::class, function ($app) { return new \Illuminate\Auth\Access\Gate($app, fn () => null); @@ -184,7 +199,7 @@ protected function registerPrivilegedActions() // @see octobercms/october#3208 || ( $this->app->hasDatabase() - && !Schema::hasTable(UpdateManager::instance()->getMigrationTableName()) + && !UpdateManager::instance()->isSystemSetup() ) ) ) { @@ -297,51 +312,48 @@ protected function registerConsole() /* * Register console commands */ - $this->registerConsoleCommand('create.command', \System\Console\CreateCommand::class); - $this->registerConsoleCommand('create.job', \System\Console\CreateJob::class); - $this->registerConsoleCommand('create.migration', \System\Console\CreateMigration::class); - $this->registerConsoleCommand('create.model', \System\Console\CreateModel::class); - $this->registerConsoleCommand('create.factory', \System\Console\CreateFactory::class); - $this->registerConsoleCommand('create.plugin', \System\Console\CreatePlugin::class); - $this->registerConsoleCommand('create.settings', \System\Console\CreateSettings::class); - $this->registerConsoleCommand('create.test', \System\Console\CreateTest::class); - - $this->registerConsoleCommand('winter.up', \System\Console\WinterUp::class); - $this->registerConsoleCommand('winter.down', \System\Console\WinterDown::class); - $this->registerConsoleCommand('winter.update', \System\Console\WinterUpdate::class); - $this->registerConsoleCommand('winter.util', \System\Console\WinterUtil::class); - $this->registerConsoleCommand('winter.mirror', \System\Console\WinterMirror::class); - $this->registerConsoleCommand('winter.fresh', \System\Console\WinterFresh::class); - $this->registerConsoleCommand('winter.env', \System\Console\WinterEnv::class); - $this->registerConsoleCommand('winter.install', \System\Console\WinterInstall::class); - $this->registerConsoleCommand('winter.version', \System\Console\WinterVersion::class); - $this->registerConsoleCommand('winter.manifest', \System\Console\WinterManifest::class); - $this->registerConsoleCommand('winter.test', \System\Console\WinterTest::class); - - $this->registerConsoleCommand('plugin.install', \System\Console\PluginInstall::class); - $this->registerConsoleCommand('plugin.remove', \System\Console\PluginRemove::class); - $this->registerConsoleCommand('plugin.disable', \System\Console\PluginDisable::class); - $this->registerConsoleCommand('plugin.enable', \System\Console\PluginEnable::class); - $this->registerConsoleCommand('plugin.refresh', \System\Console\PluginRefresh::class); - $this->registerConsoleCommand('plugin.rollback', \System\Console\PluginRollback::class); - $this->registerConsoleCommand('plugin.list', \System\Console\PluginList::class); - - $this->registerConsoleCommand('mix.compile', Console\Asset\Mix\MixCompile::class); - $this->registerConsoleCommand('mix.config', Console\Asset\Mix\MixCreate::class); - $this->registerConsoleCommand('mix.install', Console\Asset\Mix\MixInstall::class); - $this->registerConsoleCommand('mix.list', Console\Asset\Mix\MixList::class); - $this->registerConsoleCommand('mix.watch', Console\Asset\Mix\MixWatch::class); - - $this->registerConsoleCommand('vite.compile', Console\Asset\Vite\ViteCompile::class); - $this->registerConsoleCommand('vite.config', Console\Asset\Vite\ViteCreate::class); - $this->registerConsoleCommand('vite.install', Console\Asset\Vite\ViteInstall::class); - $this->registerConsoleCommand('vite.list', Console\Asset\Vite\ViteList::class); - $this->registerConsoleCommand('vite.watch', Console\Asset\Vite\ViteWatch::class); - - $this->registerConsoleCommand('npm.run', Console\Asset\Npm\NpmRun::class); - $this->registerConsoleCommand('npm.install', Console\Asset\Npm\NpmInstall::class); - $this->registerConsoleCommand('npm.update', Console\Asset\Npm\NpmUpdate::class); - $this->registerConsoleCommand('npm.version', Console\Asset\Npm\NpmVersion::class); + $this->commands([ + Console\Create\CreateCommand::class, + Console\Create\CreateJob::class, + Console\Create\CreateMigration::class, + Console\Create\CreateModel::class, + Console\Create\CreateFactory::class, + Console\Create\CreatePlugin::class, + Console\Create\CreateSettings::class, + Console\Create\CreateTest::class, + Console\WinterUp::class, + Console\WinterDown::class, + Console\WinterUpdate::class, + Console\WinterUtil::class, + Console\WinterMirror::class, + Console\WinterFresh::class, + Console\WinterEnv::class, + Console\WinterInstall::class, + Console\WinterVersion::class, + Console\WinterManifest::class, + Console\WinterTest::class, + Console\Plugin\PluginInstall::class, + Console\Plugin\PluginRemove::class, + Console\Plugin\PluginDisable::class, + Console\Plugin\PluginEnable::class, + Console\Plugin\PluginRefresh::class, + Console\Plugin\PluginRollback::class, + Console\Plugin\PluginList::class, + Console\Asset\Mix\MixCompile::class, + Console\Asset\Mix\MixCreate::class, + Console\Asset\Mix\MixInstall::class, + Console\Asset\Mix\MixList::class, + Console\Asset\Mix\MixWatch::class, + Console\Asset\Vite\ViteCompile::class, + Console\Asset\Vite\ViteCreate::class, + Console\Asset\Vite\ViteInstall::class, + Console\Asset\Vite\ViteList::class, + Console\Asset\Vite\ViteWatch::class, + Console\Asset\Npm\NpmRun::class, + Console\Asset\Npm\NpmInstall::class, + Console\Asset\Npm\NpmUpdate::class, + Console\Asset\Npm\NpmVersion::class, + ]); } /* diff --git a/modules/system/aliases.php b/modules/system/aliases.php index 3a644a3339..f9709d14df 100644 --- a/modules/system/aliases.php +++ b/modules/system/aliases.php @@ -92,23 +92,27 @@ 'Illuminate\Support\Debug\HtmlDumper' => Symfony\Component\VarDumper\Dumper\HtmlDumper::class, // Scaffolds were moved from the Storm library into their corresponding modules. - 'Winter\Storm\Scaffold\Console\CreateCommand' => System\Console\CreateCommand::class, - 'Winter\Storm\Scaffold\Console\CreateModel' => System\Console\CreateModel::class, - 'Winter\Storm\Scaffold\Console\CreatePlugin' => System\Console\CreatePlugin::class, - 'Winter\Storm\Scaffold\Console\CreateSettings' => System\Console\CreateSettings::class, + 'Winter\Storm\Scaffold\Console\CreateCommand' => System\Console\Create\CreateCommand::class, + 'Winter\Storm\Scaffold\Console\CreateModel' => System\Console\Create\CreateModel::class, + 'Winter\Storm\Scaffold\Console\CreatePlugin' => System\Console\Create\CreatePlugin::class, + 'Winter\Storm\Scaffold\Console\CreateSettings' => System\Console\Create\CreateSettings::class, 'Winter\Storm\Scaffold\Console\CreateController' => Backend\Console\CreateController::class, 'Winter\Storm\Scaffold\Console\CreateFormWidget' => Backend\Console\CreateFormWidget::class, 'Winter\Storm\Scaffold\Console\CreateReportWidget' => Backend\Console\CreateReportWidget::class, 'Winter\Storm\Scaffold\Console\CreateTheme' => Cms\Console\CreateTheme::class, 'Winter\Storm\Scaffold\Console\CreateComponent' => Cms\Console\CreateComponent::class, - 'October\Rain\Scaffold\Console\CreateCommand' => System\Console\CreateCommand::class, - 'October\Rain\Scaffold\Console\CreateModel' => System\Console\CreateModel::class, - 'October\Rain\Scaffold\Console\CreatePlugin' => System\Console\CreatePlugin::class, - 'October\Rain\Scaffold\Console\CreateSettings' => System\Console\CreateSettings::class, + 'October\Rain\Scaffold\Console\CreateCommand' => System\Console\Create\CreateCommand::class, + 'October\Rain\Scaffold\Console\CreateModel' => System\Console\Create\CreateModel::class, + 'October\Rain\Scaffold\Console\CreatePlugin' => System\Console\Create\CreatePlugin::class, + 'October\Rain\Scaffold\Console\CreateSettings' => System\Console\Create\CreateSettings::class, 'October\Rain\Scaffold\Console\CreateController' => Backend\Console\CreateController::class, 'October\Rain\Scaffold\Console\CreateFormWidget' => Backend\Console\CreateFormWidget::class, 'October\Rain\Scaffold\Console\CreateReportWidget' => Backend\Console\CreateReportWidget::class, 'October\Rain\Scaffold\Console\CreateTheme' => Cms\Console\CreateTheme::class, 'October\Rain\Scaffold\Console\CreateComponent' => Cms\Console\CreateComponent::class, + + // Extension Management + 'System\Classes\PluginManager' => System\Classes\Extensions\PluginManager::class, + 'System\Classes\PluginBase' => System\Classes\Extensions\PluginBase::class, ]; diff --git a/modules/system/assets/dist/assets/updates-8hFxTJT2.css b/modules/system/assets/dist/assets/updates-8hFxTJT2.css new file mode 100644 index 0000000000..b8278cf8fe --- /dev/null +++ b/modules/system/assets/dist/assets/updates-8hFxTJT2.css @@ -0,0 +1 @@ +/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-600:oklch(68.1% .162 75.834);--color-green-500:oklch(72.3% .219 149.579);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-6xl:3.75rem;--text-6xl--line-height:1;--font-weight-thin:100;--font-weight-bold:700;--radius-2xl:1rem;--radius-3xl:1.5rem;--ease-in:cubic-bezier(.4,0,1,1);--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--aspect-video:16/9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}[type=text],input:where(:not([type])),[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;--tw-shadow:0 0 #0000;background-color:#fff;border-width:1px;border-color:#6a7282;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem}:is([type=text],input:where(:not([type])),[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select):focus{outline-offset:2px;--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:oklch(54.6% .245 262.881);--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#155dfc;outline:2px solid #0000}input::placeholder,textarea::placeholder{color:#6a7282;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em}::-webkit-date-and-time-value{text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-year-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-month-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-day-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-hour-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-minute-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-second-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-millisecond-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}select{-webkit-print-color-adjust:exact;print-color-adjust:exact;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='oklch(55.1%25 0.027 264.364)' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem}[multiple],[size]:where(select:not([size="1"])){background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;-webkit-print-color-adjust:unset;print-color-adjust:unset;padding-right:.75rem}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;print-color-adjust:exact;vertical-align:middle;-webkit-user-select:none;user-select:none;color:#155dfc;--tw-shadow:0 0 #0000;background-color:#fff;background-origin:border-box;border-width:1px;border-color:#6a7282;flex-shrink:0;width:1rem;height:1rem;padding:0;display:inline-block}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline-offset:2px;--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:oklch(54.6% .245 262.881);--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 #0000}[type=checkbox]:checked,[type=radio]:checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:#0000}[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@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,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media (forced-colors:active){[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:hover,[type=checkbox]:checked:focus,[type=radio]:checked:hover,[type=radio]:checked:focus{background-color:currentColor;border-color:#0000}[type=checkbox]:indeterminate{background-color:currentColor;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:#0000}@media (forced-colors:active){[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:hover,[type=checkbox]:indeterminate:focus{background-color:currentColor;border-color:#0000}[type=file]{background:unset;border-color:inherit;font-size:unset;line-height:inherit;border-width:0;border-radius:0;padding:0}[type=file]:focus{outline:1px solid buttontext;outline:1px auto -webkit-focus-ring-color}}@layer components;@layer utilities{.updates-app .collapse{visibility:collapse}.updates-app .invisible{visibility:hidden}.updates-app .visible{visibility:visible}.updates-app .sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.updates-app .absolute{position:absolute}.updates-app .fixed{position:fixed}.updates-app .relative{position:relative}.updates-app .static{position:static}.updates-app .sticky{position:sticky}.updates-app .top-2{top:calc(var(--spacing)*2)}.updates-app .top-3{top:calc(var(--spacing)*3)}.updates-app .right-0{right:calc(var(--spacing)*0)}.updates-app .right-3{right:calc(var(--spacing)*3)}.updates-app .left-2{left:calc(var(--spacing)*2)}.updates-app .order-first{order:-9999}.updates-app .col-span-full{grid-column:1/-1}.updates-app .container{width:100%}@media (min-width:40rem){.updates-app .container{max-width:40rem}}@media (min-width:48rem){.updates-app .container{max-width:48rem}}@media (min-width:64rem){.updates-app .container{max-width:64rem}}@media (min-width:80rem){.updates-app .container{max-width:80rem}}@media (min-width:96rem){.updates-app .container{max-width:96rem}}.updates-app .container\!{width:100%!important}@media (min-width:40rem){.updates-app .container\!{max-width:40rem!important}}@media (min-width:48rem){.updates-app .container\!{max-width:48rem!important}}@media (min-width:64rem){.updates-app .container\!{max-width:64rem!important}}@media (min-width:80rem){.updates-app .container\!{max-width:80rem!important}}@media (min-width:96rem){.updates-app .container\!{max-width:96rem!important}}.updates-app .m-auto{margin:auto}.updates-app .-mx-3{margin-inline:calc(var(--spacing)*-3)}.updates-app .mx-2{margin-inline:calc(var(--spacing)*2)}.updates-app .mx-4{margin-inline:calc(var(--spacing)*4)}.updates-app .mx-auto{margin-inline:auto}.updates-app .\!my-2{margin-block:calc(var(--spacing)*2)!important}.updates-app .my-8{margin-block:calc(var(--spacing)*8)}.updates-app .-mt-1{margin-top:calc(var(--spacing)*-1)}.updates-app .-mt-3{margin-top:calc(var(--spacing)*-3)}.updates-app .mt-1{margin-top:calc(var(--spacing)*1)}.updates-app .mt-2{margin-top:calc(var(--spacing)*2)}.updates-app .mt-4{margin-top:calc(var(--spacing)*4)}.updates-app .mt-6{margin-top:calc(var(--spacing)*6)}.updates-app .mt-8{margin-top:calc(var(--spacing)*8)}.updates-app .mt-auto{margin-top:auto}.updates-app .mr-1{margin-right:calc(var(--spacing)*1)}.updates-app .mr-2{margin-right:calc(var(--spacing)*2)}.updates-app .mr-3{margin-right:calc(var(--spacing)*3)}.updates-app .mr-4{margin-right:calc(var(--spacing)*4)}.updates-app .mr-6{margin-right:calc(var(--spacing)*6)}.updates-app .\!mb-0{margin-bottom:calc(var(--spacing)*0)!important}.updates-app .\!mb-2{margin-bottom:calc(var(--spacing)*2)!important}.updates-app .mb-1{margin-bottom:calc(var(--spacing)*1)}.updates-app .mb-3{margin-bottom:calc(var(--spacing)*3)}.updates-app .mb-10{margin-bottom:calc(var(--spacing)*10)}.updates-app .ml-1{margin-left:calc(var(--spacing)*1)}.updates-app .ml-3{margin-left:calc(var(--spacing)*3)}.updates-app .ml-6{margin-left:calc(var(--spacing)*6)}.updates-app .ml-auto{margin-left:auto}.updates-app .\!flex{display:flex!important}.updates-app .block{display:block}.updates-app .contents{display:contents}.updates-app .flex{display:flex}.updates-app .grid{display:grid}.updates-app .hidden{display:none}.updates-app .inline{display:inline}.updates-app .inline-block{display:inline-block}.updates-app .inline-flex{display:inline-flex}.updates-app .table{display:table}.updates-app .aspect-square{aspect-ratio:1}.updates-app .aspect-video{aspect-ratio:var(--aspect-video)}.updates-app .size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.updates-app .size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.updates-app .size-12{width:calc(var(--spacing)*12);height:calc(var(--spacing)*12)}.updates-app .size-14{width:calc(var(--spacing)*14);height:calc(var(--spacing)*14)}.updates-app .size-16{width:calc(var(--spacing)*16);height:calc(var(--spacing)*16)}.updates-app .size-32{width:calc(var(--spacing)*32);height:calc(var(--spacing)*32)}.updates-app .size-38{width:calc(var(--spacing)*38);height:calc(var(--spacing)*38)}.updates-app .h-64{height:calc(var(--spacing)*64)}.updates-app .h-auto{height:auto}.updates-app .h-full{height:100%}.updates-app .w-1\/2{width:50%}.updates-app .w-6{width:calc(var(--spacing)*6)}.updates-app .w-100{width:calc(var(--spacing)*100)}.updates-app .w-120{width:calc(var(--spacing)*120)}.updates-app .w-130{width:calc(var(--spacing)*130)}.updates-app .w-140{width:calc(var(--spacing)*140)}.updates-app .w-200{width:calc(var(--spacing)*200)}.updates-app .w-300{width:calc(var(--spacing)*300)}.updates-app .w-350{width:calc(var(--spacing)*350)}.updates-app .w-\[125px\]{width:125px}.updates-app .w-full{width:100%}.updates-app .w-lg{width:var(--container-lg)}.updates-app .w-md{width:var(--container-md)}.updates-app .w-sm{width:var(--container-sm)}.updates-app .max-w-\[1325px\]{max-width:1325px}.updates-app .min-w-1\/3{min-width:33.3333%}.updates-app .min-w-\[225px\]{min-width:225px}.updates-app .min-w-\[250px\]{min-width:250px}.updates-app .flex-shrink,.updates-app .shrink{flex-shrink:1}.updates-app .flex-grow{flex-grow:1}.updates-app .basis-auto{flex-basis:auto}.updates-app .\!border-separate{border-collapse:separate!important}.updates-app .\!border-spacing-2{--tw-border-spacing-x:calc(var(--spacing)*2)!important;--tw-border-spacing-y:calc(var(--spacing)*2)!important;border-spacing:var(--tw-border-spacing-x)var(--tw-border-spacing-y)!important}.updates-app .border-spacing-y-3{--tw-border-spacing-y:calc(var(--spacing)*3);border-spacing:var(--tw-border-spacing-x)var(--tw-border-spacing-y)}.updates-app .rotate-90{rotate:90deg}.updates-app .transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.updates-app .transform\!{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)!important}.updates-app .animate-spin{animation:var(--animate-spin)}.updates-app .cursor-default{cursor:default}.updates-app .cursor-pointer{cursor:pointer}.updates-app .cursor-text{cursor:text}.updates-app .resize{resize:both}.updates-app .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.updates-app .flex-col{flex-direction:column}.updates-app .flex-row{flex-direction:row}.updates-app .flex-wrap{flex-wrap:wrap}.updates-app .items-center{align-items:center}.updates-app .justify-between{justify-content:space-between}.updates-app .justify-center{justify-content:center}.updates-app .gap-0{gap:calc(var(--spacing)*0)}.updates-app .gap-3{gap:calc(var(--spacing)*3)}.updates-app .gap-4{gap:calc(var(--spacing)*4)}.updates-app .gap-6{gap:calc(var(--spacing)*6)}.updates-app .gap-8{gap:calc(var(--spacing)*8)}.updates-app .justify-self-end{justify-self:flex-end}.updates-app .overflow-hidden{overflow:hidden}.updates-app .rounded{border-radius:.25rem}.updates-app .rounded-2xl{border-radius:var(--radius-2xl)}.updates-app .rounded-3xl{border-radius:var(--radius-3xl)}.updates-app .rounded-full{border-radius:3.40282e38px}.updates-app .border{border-style:var(--tw-border-style);border-width:1px}.updates-app .border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.updates-app .border-blue-200{border-color:var(--color-blue-200)}.updates-app .border-transparent{border-color:#0000}.updates-app .bg-black{background-color:var(--color-black)}.updates-app .bg-blue-100{background-color:var(--color-blue-100)}.updates-app .bg-blue-100\/90{background-color:#dbeafee6}@supports (color:color-mix(in lab,red,red)){.updates-app .bg-blue-100\/90{background-color:color-mix(in oklab,var(--color-blue-100)90%,transparent)}}.updates-app .bg-blue-200{background-color:var(--color-blue-200)}.updates-app .bg-blue-300{background-color:var(--color-blue-300)}.updates-app .bg-blue-400{background-color:var(--color-blue-400)}.updates-app .bg-blue-500{background-color:var(--color-blue-500)}.updates-app .bg-gray-200{background-color:var(--color-gray-200)}.updates-app .bg-green-500{background-color:var(--color-green-500)}.updates-app .bg-orange-500{background-color:var(--color-orange-500)}.updates-app .bg-white{background-color:var(--color-white)}.updates-app .bg-yellow-100{background-color:var(--color-yellow-100)}.updates-app .bg-yellow-600{background-color:var(--color-yellow-600)}.updates-app .fill-blue-400{fill:var(--color-blue-400)}.updates-app .p-1{padding:calc(var(--spacing)*1)}.updates-app .p-2{padding:calc(var(--spacing)*2)}.updates-app .p-3{padding:calc(var(--spacing)*3)}.updates-app .p-4{padding:calc(var(--spacing)*4)}.updates-app .p-6{padding:calc(var(--spacing)*6)}.updates-app .p-8{padding:calc(var(--spacing)*8)}.updates-app .px-1{padding-inline:calc(var(--spacing)*1)}.updates-app .px-3{padding-inline:calc(var(--spacing)*3)}.updates-app .px-4{padding-inline:calc(var(--spacing)*4)}.updates-app .px-8{padding-inline:calc(var(--spacing)*8)}.updates-app .py-1{padding-block:calc(var(--spacing)*1)}.updates-app .py-2{padding-block:calc(var(--spacing)*2)}.updates-app .py-4{padding-block:calc(var(--spacing)*4)}.updates-app .py-10{padding-block:calc(var(--spacing)*10)}.updates-app .pt-2{padding-top:calc(var(--spacing)*2)}.updates-app .pt-4{padding-top:calc(var(--spacing)*4)}.updates-app .pr-3{padding-right:calc(var(--spacing)*3)}.updates-app .pr-12{padding-right:calc(var(--spacing)*12)}.updates-app .pb-1{padding-bottom:calc(var(--spacing)*1)}.updates-app .pb-4{padding-bottom:calc(var(--spacing)*4)}.updates-app .pb-6{padding-bottom:calc(var(--spacing)*6)}.updates-app .pl-3{padding-left:calc(var(--spacing)*3)}.updates-app .pl-4{padding-left:calc(var(--spacing)*4)}.updates-app .text-center{text-align:center}.updates-app .text-right{text-align:right}.updates-app .font-mono{font-family:var(--font-mono)}.updates-app .font-sans{font-family:var(--font-sans)}.updates-app .\!text-3xl{font-size:var(--text-3xl)!important;line-height:var(--tw-leading,var(--text-3xl--line-height))!important}.updates-app .\!text-4xl{font-size:var(--text-4xl)!important;line-height:var(--tw-leading,var(--text-4xl--line-height))!important}.updates-app .text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.updates-app .text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.updates-app .text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.updates-app .text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.updates-app .font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.updates-app .font-thin{--tw-font-weight:var(--font-weight-thin);font-weight:var(--font-weight-thin)}.updates-app .text-nowrap{text-wrap:nowrap}.updates-app .break-all{word-break:break-all}.updates-app .\!text-gray-400\/70{color:#99a1afb3!important}@supports (color:color-mix(in lab,red,red)){.updates-app .\!text-gray-400\/70{color:color-mix(in oklab,var(--color-gray-400)70%,transparent)!important}}.updates-app .text-blue-100{color:var(--color-blue-100)}.updates-app .text-blue-400{color:var(--color-blue-400)}.updates-app .text-gray-500{color:var(--color-gray-500)}.updates-app .text-gray-600{color:var(--color-gray-600)}.updates-app .text-gray-700{color:var(--color-gray-700)}.updates-app .text-gray-900{color:var(--color-gray-900)}.updates-app .text-green-500{color:var(--color-green-500)}.updates-app .text-orange-400\/80{color:#ff8b1acc}@supports (color:color-mix(in lab,red,red)){.updates-app .text-orange-400\/80{color:color-mix(in oklab,var(--color-orange-400)80%,transparent)}}.updates-app .text-orange-500{color:var(--color-orange-500)}.updates-app .text-orange-500\/85{color:#fe6e00d9}@supports (color:color-mix(in lab,red,red)){.updates-app .text-orange-500\/85{color:color-mix(in oklab,var(--color-orange-500)85%,transparent)}}.updates-app .text-red-400{color:var(--color-red-400)}.updates-app .text-red-500{color:var(--color-red-500)}.updates-app .text-white{color:var(--color-white)}.updates-app .text-yellow-400\/85{color:#fac800d9}@supports (color:color-mix(in lab,red,red)){.updates-app .text-yellow-400\/85{color:color-mix(in oklab,var(--color-yellow-400)85%,transparent)}}.updates-app .capitalize{text-transform:capitalize}.updates-app .lowercase{text-transform:lowercase}.updates-app .uppercase{text-transform:uppercase}.updates-app .italic{font-style:italic}.updates-app .ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.updates-app .\!no-underline{text-decoration-line:none!important}.updates-app .opacity-0{opacity:0}.updates-app .opacity-100{opacity:1}.updates-app .shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.updates-app .shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.updates-app .shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.updates-app .outline{outline-style:var(--tw-outline-style);outline-width:1px}.updates-app .blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.updates-app .invert{--tw-invert:invert(100%);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,)}.updates-app .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,)}.updates-app .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,)!important}.updates-app .transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.updates-app .transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.updates-app .transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.updates-app .transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.updates-app .duration-150{--tw-duration:.15s;transition-duration:.15s}.updates-app .duration-300{--tw-duration:.3s;transition-duration:.3s}.updates-app .duration-400{--tw-duration:.4s;transition-duration:.4s}.updates-app .ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.updates-app .ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.updates-app .ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.updates-app .select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.updates-app .group-hover\:flex:is(:where(.group):hover *){display:flex}.updates-app .group-hover\:w-50:is(:where(.group):hover *){width:calc(var(--spacing)*50)}.updates-app .group-hover\:scale-105:is(:where(.group):hover *){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.updates-app .group-hover\:pr-9:is(:where(.group):hover *){padding-right:calc(var(--spacing)*9)}.updates-app .group-hover\:text-gray-600:is(:where(.group):hover *){color:var(--color-gray-600)}.updates-app .group-hover\:text-orange-500:is(:where(.group):hover *){color:var(--color-orange-500)}.updates-app .group-hover\:text-yellow-400:is(:where(.group):hover *){color:var(--color-yellow-400)}.updates-app .group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.updates-app .group-hover\:shadow-md:is(:where(.group):hover *){--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.updates-app .hover\:ml-3:hover{margin-left:calc(var(--spacing)*3)}.updates-app .hover\:gap-4:hover{gap:calc(var(--spacing)*4)}.updates-app .hover\:bg-blue-300:hover{background-color:var(--color-blue-300)}.updates-app .hover\:text-gray-900:hover{color:var(--color-gray-900)}}.updates-app .focus\:border-transparent:focus{border-color:#0000}.updates-app .focus\:ring-0:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.updates-app .has-\[input\:checked\]\:bg-blue-200:has(:is(input:checked)){background-color:var(--color-blue-200)}@media (min-width:48rem){.updates-app .md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.updates-app .md\:flex-row{flex-direction:row}}@media (min-width:64rem){.updates-app .lg\:order-0{order:0}.updates-app .lg\:w-1\/3{width:33.3333%}.updates-app .lg\:w-auto{width:auto}.updates-app .lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.updates-app .lg\:flex-row{flex-direction:row}.updates-app .lg\:justify-end{justify-content:flex-end}.updates-app .lg\:text-left{text-align:left}}@media (min-width:80rem){.updates-app .xl\:mx-0{margin-inline:calc(var(--spacing)*0)}.updates-app .xl\:flex{display:flex}.updates-app .xl\:w-2\/8{width:25%}}.updates-app .\[\&\:checked\+span\]\:bg-blue-400:checked+span{background-color:var(--color-blue-400)}.updates-app .\[\&\:checked\+span\]\:text-gray-900:checked+span{color:var(--color-gray-900)}.updates-app .\[\&\:checked\+span\]\:text-white:checked+span{color:var(--color-white)}.w-full-storm-fix{width:100%}.hidden-storm-fix{display:none}}#layout-canvas,#layout-body .layout-row,.nav.nav-tabs{background:#fff}#layout-body .layout-row,#layout-body .layout-row .padded-container,.control-tabs.content-tabs>ul.nav-tabs li.active a{background:#f9f9f9}.updates-app .modal-content{border-radius:var(--radius-3xl);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.updates-app .table-fancy table.table.data{border-color:var(--color-blue-200)!important}.updates-app .table-fancy table.table.data thead tr th{border-style:var(--tw-border-style);border-width:0}.updates-app .table-fancy table.table.data thead th{border-top-style:var(--tw-border-style)!important;border-top-width:0!important;border-bottom-style:var(--tw-border-style)!important;border-bottom-width:1px!important;border-color:var(--color-blue-200)!important}.updates-app .table-fancy table.table.data thead th:first-child{border-right-style:var(--tw-border-style);border-right-width:1px}.updates-app .table-fancy table.table.data{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:0!important}.updates-app .table-fancy table.table.data .list-checkbox{border-right-color:var(--color-blue-200)!important}@property --tw-border-spacing-x{syntax:"";inherits:false;initial-value:0}@property --tw-border-spacing-y{syntax:"";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}} diff --git a/modules/system/assets/dist/assets/updates-BHH8rdGj.css b/modules/system/assets/dist/assets/updates-BHH8rdGj.css new file mode 100644 index 0000000000..2a52516af8 --- /dev/null +++ b/modules/system/assets/dist/assets/updates-BHH8rdGj.css @@ -0,0 +1 @@ +.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1} diff --git a/modules/system/assets/dist/assets/updates-CRrv2aGu.js b/modules/system/assets/dist/assets/updates-CRrv2aGu.js new file mode 100644 index 0000000000..8fdce82ede --- /dev/null +++ b/modules/system/assets/dist/assets/updates-CRrv2aGu.js @@ -0,0 +1,100 @@ +/** +* @vue/shared v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function We(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const de=Object.freeze({}),Nr=Object.freeze([]),$e=()=>{},fi=()=>!1,En=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ns=e=>e.startsWith("onUpdate:"),ce=Object.assign,Kl=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},uh=Object.prototype.hasOwnProperty,me=(e,t)=>uh.call(e,t),z=Array.isArray,lr=e=>ni(e)==="[object Map]",_r=e=>ni(e)==="[object Set]",Xa=e=>ni(e)==="[object Date]",fh=e=>ni(e)==="[object RegExp]",te=e=>typeof e=="function",ne=e=>typeof e=="string",yt=e=>typeof e=="symbol",he=e=>e!==null&&typeof e=="object",co=e=>(he(e)||te(e))&&te(e.then)&&te(e.catch),Du=Object.prototype.toString,ni=e=>Du.call(e),ql=e=>ni(e).slice(8,-1),uo=e=>ni(e)==="[object Object]",zl=e=>ne(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Bn=We(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Lu=We("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),fo=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},dh=/-(\w)/g,Ee=fo(e=>e.replace(dh,(t,n)=>n?n.toUpperCase():"")),ph=/\B([A-Z])/g,Qe=fo(e=>e.replace(ph,"-$1").toLowerCase()),dn=fo(e=>e.charAt(0).toUpperCase()+e.slice(1)),rn=fo(e=>e?`on${dn(e)}`:""),ot=(e,t)=>!Object.is(e,t),Dn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},ks=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Rs=e=>{const t=ne(e)?Number(e):NaN;return isNaN(t)?e:t};let Za;const qi=()=>Za||(Za=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function hh(e,t){return e+JSON.stringify(t,(n,r)=>typeof r=="function"?r.toString():r)}const gi={1:"TEXT",2:"CLASS",4:"STYLE",8:"PROPS",16:"FULL_PROPS",32:"NEED_HYDRATION",64:"STABLE_FRAGMENT",128:"KEYED_FRAGMENT",256:"UNKEYED_FRAGMENT",512:"NEED_PATCH",1024:"DYNAMIC_SLOTS",2048:"DEV_ROOT_FRAGMENT",[-1]:"CACHED",[-2]:"BAIL"},mh={1:"STABLE",2:"DYNAMIC",3:"FORWARDED"},gh="Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol",vh=We(gh),Qa=2;function yh(e,t=0,n=e.length){if(t=Math.max(0,Math.min(t,e.length)),n=Math.max(0,Math.min(n,e.length)),t>n)return"";let r=e.split(/(\r?\n)/);const i=r.filter((l,a)=>a%2===1);r=r.filter((l,a)=>a%2===0);let s=0;const o=[];for(let l=0;l=t){for(let a=l-Qa;a<=l+Qa||n>s;a++){if(a<0||a>=r.length)continue;const u=a+1;o.push(`${u}${" ".repeat(Math.max(3-String(u).length,0))}| ${r[a]}`);const c=r[a].length,f=i[a]&&i[a].length||0;if(a===l){const p=t-(s-(c+f)),h=Math.max(1,n>s?c-p:n-t);o.push(" | "+" ".repeat(p)+"^".repeat(h))}else if(a>l){if(n>s){const p=Math.max(Math.min(n-s,c),1);o.push(" | "+"^".repeat(p))}s+=c+f}}break}return o.join(` +`)}function ri(e){if(z(e)){const t={};for(let n=0;n{if(n){const r=n.split(wh);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Sh(e){if(!e)return"";if(ne(e))return e;let t="";for(const n in e){const r=e[n];if(ne(r)||typeof r=="number"){const i=n.startsWith("--")?n:Qe(n);t+=`${i}:${r};`}}return t}function Et(e){let t="";if(ne(e))t=e;else if(z(e))for(let n=0;n?@[\\\]^`{|}~]/g;function Mh(e,t){return e.replace(Rh,n=>`\\${n}`)}function $h(e,t){if(e.length!==t.length)return!1;let n=!0;for(let r=0;n&&rWn(n,t))}const Uu=e=>!!(e&&e.__v_isRef===!0),Ze=e=>ne(e)?e:e==null?"":z(e)||he(e)&&(e.toString===Du||!te(e.toString))?Uu(e)?Ze(e.value):JSON.stringify(e,Wu,2):String(e),Wu=(e,t)=>Uu(t)?Wu(e,t.value):lr(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,i],s)=>(n[Vo(r,s)+" =>"]=i,n),{})}:_r(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Vo(n))}:yt(t)?Vo(t):he(t)&&!z(t)&&!uo(t)?String(t):t,Vo=(e,t="")=>{var n;return yt(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};function Ku(e){return e==null?"initial":typeof e=="string"?e===""?" ":e:((typeof e!="number"||!Number.isFinite(e))&&console.warn("[Vue warn] Invalid value used for CSS binding. Expected a string or a finite number but received:",e),String(e))}/** +* @vue/reactivity v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Rt(e,...t){console.warn(`[Vue warn] ${e}`,...t)}let Je;class Yl{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Je,!t&&Je&&(this.index=(Je.scopes||(Je.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0&&(Je=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,r;for(n=0,r=this.effects.length;n0)return;if(yi){let t=yi;for(yi=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;vi;){let t=vi;for(vi=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function Yu(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Ju(e){let t,n=e.depsTail,r=n;for(;r;){const i=r.prevDep;r.version===-1?(r===n&&(n=i),Zl(r),Fh(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=i}e.deps=t,e.depsTail=n}function ol(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Xu(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Xu(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Ai)||(e.globalVersion=Ai,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!ol(e))))return;e.flags|=2;const t=e.dep,n=we,r=qt;we=e,qt=!0;try{Yu(e);const i=e.fn(e._value);(t.version===0||ot(i,e._value))&&(e.flags|=128,e._value=i,t.version++)}catch(i){throw t.version++,i}finally{we=n,qt=r,Ju(e),e.flags&=-3}}function Zl(e,t=!1){const{dep:n,prevSub:r,nextSub:i}=e;if(r&&(r.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=r,e.nextSub=void 0),n.subsHead===e&&(n.subsHead=i),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let s=n.computed.deps;s;s=s.nextDep)Zl(s,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Fh(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}function Vh(e,t){e.effect instanceof Oi&&(e=e.effect.fn);const n=new Oi(e);t&&ce(n,t);try{n.run()}catch(i){throw n.stop(),i}const r=n.run.bind(n);return r.effect=n,r}function Bh(e){e.effect.stop()}let qt=!0;const Zu=[];function Gt(){Zu.push(qt),qt=!1}function Yt(){const e=Zu.pop();qt=e===void 0?!0:e}function tc(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=we;we=void 0;try{t()}finally{we=n}}}let Ai=0;class Hh{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class ho{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0,this.subsHead=void 0}track(t){if(!we||!qt||we===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==we)n=this.activeLink=new Hh(we,this),we.deps?(n.prevDep=we.depsTail,we.depsTail.nextDep=n,we.depsTail=n):we.deps=we.depsTail=n,Qu(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=we.depsTail,n.nextDep=void 0,we.depsTail.nextDep=n,we.depsTail=n,we.deps===n&&(we.deps=r)}return we.onTrack&&we.onTrack(ce({effect:we},t)),n}trigger(t){this.version++,Ai++,this.notify(t)}notify(t){Jl();try{for(let n=this.subsHead;n;n=n.nextSub)n.sub.onTrigger&&!(n.sub.flags&8)&&n.sub.onTrigger(ce({effect:n.sub},t));for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Xl()}}}function Qu(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)Qu(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subsHead===void 0&&(e.dep.subsHead=e),e.dep.subs=e}}const Ms=new WeakMap,ar=Symbol("Object iterate"),ll=Symbol("Map keys iterate"),Pi=Symbol("Array iterate");function Ue(e,t,n){if(qt&&we){let r=Ms.get(e);r||Ms.set(e,r=new Map);let i=r.get(n);i||(r.set(n,i=new ho),i.map=r,i.key=n),i.track({target:e,type:t,key:n})}}function ln(e,t,n,r,i,s){const o=Ms.get(e);if(!o){Ai++;return}const l=a=>{a&&a.trigger({target:e,type:t,key:n,newValue:r,oldValue:i,oldTarget:s})};if(Jl(),t==="clear")o.forEach(l);else{const a=z(e),u=a&&zl(n);if(a&&n==="length"){const c=Number(r);o.forEach((f,p)=>{(p==="length"||p===Pi||!yt(p)&&p>=c)&&l(f)})}else switch((n!==void 0||o.has(void 0))&&l(o.get(n)),u&&l(o.get(Pi)),t){case"add":a?u&&l(o.get("length")):(l(o.get(ar)),lr(e)&&l(o.get(ll)));break;case"delete":a||(l(o.get(ar)),lr(e)&&l(o.get(ll)));break;case"set":lr(e)&&l(o.get(ar));break}}Xl()}function jh(e,t){const n=Ms.get(e);return n&&n.get(t)}function xr(e){const t=le(e);return t===e?t:(Ue(t,"iterate",Pi),tt(e)?t:t.map(ze))}function mo(e){return Ue(e=le(e),"iterate",Pi),e}const Uh={__proto__:null,[Symbol.iterator](){return Ho(this,Symbol.iterator,ze)},concat(...e){return xr(this).concat(...e.map(t=>z(t)?xr(t):t))},entries(){return Ho(this,"entries",e=>(e[1]=ze(e[1]),e))},every(e,t){return gn(this,"every",e,t,void 0,arguments)},filter(e,t){return gn(this,"filter",e,t,n=>n.map(ze),arguments)},find(e,t){return gn(this,"find",e,t,ze,arguments)},findIndex(e,t){return gn(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return gn(this,"findLast",e,t,ze,arguments)},findLastIndex(e,t){return gn(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return gn(this,"forEach",e,t,void 0,arguments)},includes(...e){return jo(this,"includes",e)},indexOf(...e){return jo(this,"indexOf",e)},join(e){return xr(this).join(e)},lastIndexOf(...e){return jo(this,"lastIndexOf",e)},map(e,t){return gn(this,"map",e,t,void 0,arguments)},pop(){return oi(this,"pop")},push(...e){return oi(this,"push",e)},reduce(e,...t){return nc(this,"reduce",e,t)},reduceRight(e,...t){return nc(this,"reduceRight",e,t)},shift(){return oi(this,"shift")},some(e,t){return gn(this,"some",e,t,void 0,arguments)},splice(...e){return oi(this,"splice",e)},toReversed(){return xr(this).toReversed()},toSorted(e){return xr(this).toSorted(e)},toSpliced(...e){return xr(this).toSpliced(...e)},unshift(...e){return oi(this,"unshift",e)},values(){return Ho(this,"values",ze)}};function Ho(e,t,n){const r=mo(e),i=r[t]();return r!==e&&!tt(e)&&(i._next=i.next,i.next=()=>{const s=i._next();return s.value&&(s.value=n(s.value)),s}),i}const Wh=Array.prototype;function gn(e,t,n,r,i,s){const o=mo(e),l=o!==e&&!tt(e),a=o[t];if(a!==Wh[t]){const f=a.apply(e,s);return l?ze(f):f}let u=n;o!==e&&(l?u=function(f,p){return n.call(this,ze(f),p,e)}:n.length>2&&(u=function(f,p){return n.call(this,f,p,e)}));const c=a.call(o,u,r);return l&&i?i(c):c}function nc(e,t,n,r){const i=mo(e);let s=n;return i!==e&&(tt(e)?n.length>3&&(s=function(o,l,a){return n.call(this,o,l,a,e)}):s=function(o,l,a){return n.call(this,o,ze(l),a,e)}),i[t](s,...r)}function jo(e,t,n){const r=le(e);Ue(r,"iterate",Pi);const i=r[t](...n);return(i===-1||i===!1)&&Lr(n[0])?(n[0]=le(n[0]),r[t](...n)):i}function oi(e,t,n=[]){Gt(),Jl();const r=le(e)[t].apply(e,n);return Xl(),Yt(),r}const Kh=We("__proto__,__v_isRef,__isVue"),ef=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(yt));function qh(e){yt(e)||(e=String(e));const t=le(this);return Ue(t,"has",e),t.hasOwnProperty(e)}class tf{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){if(n==="__v_skip")return t.__v_skip;const i=this._isReadonly,s=this._isShallow;if(n==="__v_isReactive")return!i;if(n==="__v_isReadonly")return i;if(n==="__v_isShallow")return s;if(n==="__v_raw")return r===(i?s?af:lf:s?of:sf).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const o=z(t);if(!i){let a;if(o&&(a=Uh[n]))return a;if(n==="hasOwnProperty")return qh}const l=Reflect.get(t,n,be(t)?t:r);return(yt(n)?ef.has(n):Kh(n))||(i||Ue(t,"get",n),s)?l:be(l)?o&&zl(n)?l:l.value:he(l)?i?vo(l):zi(l):l}}class nf extends tf{constructor(t=!1){super(!1,t)}set(t,n,r,i){let s=t[n];if(!this._isShallow){const a=Jt(s);if(!tt(r)&&!Jt(r)&&(s=le(s),r=le(r)),!z(t)&&be(s)&&!be(r))return a?!1:(s.value=r,!0)}const o=z(t)&&zl(n)?Number(n)e,ls=e=>Reflect.getPrototypeOf(e);function Xh(e,t,n){return function(...r){const i=this.__v_raw,s=le(i),o=lr(s),l=e==="entries"||e===Symbol.iterator&&o,a=e==="keys"&&o,u=i[e](...r),c=n?al:t?$s:ze;return!t&&Ue(s,"iterate",a?ll:ar),{next(){const{value:f,done:p}=u.next();return p?{value:f,done:p}:{value:l?[c(f[0]),c(f[1])]:c(f),done:p}},[Symbol.iterator](){return this}}}}function as(e){return function(...t){{const n=t[0]?`on key "${t[0]}" `:"";Rt(`${dn(e)} operation ${n}failed: target is readonly.`,le(this))}return e==="delete"?!1:e==="clear"?void 0:this}}function Zh(e,t){const n={get(i){const s=this.__v_raw,o=le(s),l=le(i);e||(ot(i,l)&&Ue(o,"get",i),Ue(o,"get",l));const{has:a}=ls(o),u=t?al:e?$s:ze;if(a.call(o,i))return u(s.get(i));if(a.call(o,l))return u(s.get(l));s!==o&&s.get(i)},get size(){const i=this.__v_raw;return!e&&Ue(le(i),"iterate",ar),Reflect.get(i,"size",i)},has(i){const s=this.__v_raw,o=le(s),l=le(i);return e||(ot(i,l)&&Ue(o,"has",i),Ue(o,"has",l)),i===l?s.has(i):s.has(i)||s.has(l)},forEach(i,s){const o=this,l=o.__v_raw,a=le(l),u=t?al:e?$s:ze;return!e&&Ue(a,"iterate",ar),l.forEach((c,f)=>i.call(s,u(c),u(f),o))}};return ce(n,e?{add:as("add"),set:as("set"),delete:as("delete"),clear:as("clear")}:{add(i){!t&&!tt(i)&&!Jt(i)&&(i=le(i));const s=le(this);return ls(s).has.call(s,i)||(s.add(i),ln(s,"add",i,i)),this},set(i,s){!t&&!tt(s)&&!Jt(s)&&(s=le(s));const o=le(this),{has:l,get:a}=ls(o);let u=l.call(o,i);u?rc(o,l,i):(i=le(i),u=l.call(o,i));const c=a.call(o,i);return o.set(i,s),u?ot(s,c)&&ln(o,"set",i,s,c):ln(o,"add",i,s),this},delete(i){const s=le(this),{has:o,get:l}=ls(s);let a=o.call(s,i);a?rc(s,o,i):(i=le(i),a=o.call(s,i));const u=l?l.call(s,i):void 0,c=s.delete(i);return a&&ln(s,"delete",i,void 0,u),c},clear(){const i=le(this),s=i.size!==0,o=lr(i)?new Map(i):new Set(i),l=i.clear();return s&&ln(i,"clear",void 0,void 0,o),l}}),["keys","values","entries",Symbol.iterator].forEach(i=>{n[i]=Xh(i,e,t)}),n}function go(e,t){const n=Zh(e,t);return(r,i,s)=>i==="__v_isReactive"?!e:i==="__v_isReadonly"?e:i==="__v_raw"?r:Reflect.get(me(n,i)&&i in r?n:r,i,s)}const Qh={get:go(!1,!1)},em={get:go(!1,!0)},tm={get:go(!0,!1)},nm={get:go(!0,!0)};function rc(e,t,n){const r=le(n);if(r!==n&&t.call(e,r)){const i=ql(e);Rt(`Reactive ${i} contains both the raw and reactive versions of the same object${i==="Map"?" as keys":""}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`)}}const sf=new WeakMap,of=new WeakMap,lf=new WeakMap,af=new WeakMap;function rm(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function im(e){return e.__v_skip||!Object.isExtensible(e)?0:rm(ql(e))}function zi(e){return Jt(e)?e:yo(e,!1,zh,Qh,sf)}function cf(e){return yo(e,!1,Yh,em,of)}function vo(e){return yo(e,!0,Gh,tm,lf)}function jt(e){return yo(e,!0,Jh,nm,af)}function yo(e,t,n,r,i){if(!he(e))return Rt(`value cannot be made ${t?"readonly":"reactive"}: ${String(e)}`),e;if(e.__v_raw&&!(t&&e.__v_isReactive))return e;const s=im(e);if(s===0)return e;const o=i.get(e);if(o)return o;const l=new Proxy(e,s===2?r:n);return i.set(e,l),l}function an(e){return Jt(e)?an(e.__v_raw):!!(e&&e.__v_isReactive)}function Jt(e){return!!(e&&e.__v_isReadonly)}function tt(e){return!!(e&&e.__v_isShallow)}function Lr(e){return e?!!e.__v_raw:!1}function le(e){const t=e&&e.__v_raw;return t?le(t):e}function uf(e){return!me(e,"__v_skip")&&Object.isExtensible(e)&&gr(e,"__v_skip",!0),e}const ze=e=>he(e)?zi(e):e,$s=e=>he(e)?vo(e):e;function be(e){return e?e.__v_isRef===!0:!1}function ct(e){return ff(e,!1)}function Ql(e){return ff(e,!0)}function ff(e,t){return be(e)?e:new sm(e,t)}class sm{constructor(t,n){this.dep=new ho,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:le(t),this._value=n?t:ze(t),this.__v_isShallow=n}get value(){return this.dep.track({target:this,type:"get",key:"value"}),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||tt(t)||Jt(t);t=r?t:le(t),ot(t,n)&&(this._rawValue=t,this._value=r?t:ze(t),this.dep.trigger({target:this,type:"set",key:"value",newValue:t,oldValue:n}))}}function om(e){e.dep&&e.dep.trigger({target:e,type:"set",key:"value",newValue:e._value})}function ii(e){return be(e)?e.value:e}function lm(e){return te(e)?e():ii(e)}const am={get:(e,t,n)=>t==="__v_raw"?e:ii(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const i=e[t];return be(i)&&!be(n)?(i.value=n,!0):Reflect.set(e,t,n,r)}};function ea(e){return an(e)?e:new Proxy(e,am)}class cm{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new ho,{get:r,set:i}=t(n.track.bind(n),n.trigger.bind(n));this._get=r,this._set=i}get value(){return this._value=this._get()}set value(t){this._set(t)}}function df(e){return new cm(e)}function um(e){Lr(e)||Rt("toRefs() expects a reactive object but received a plain one.");const t=z(e)?new Array(e.length):{};for(const n in e)t[n]=pf(e,n);return t}class fm{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return jh(le(this._object),this._key)}}class dm{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function pm(e,t,n){return be(e)?e:te(e)?new dm(e):he(e)&&arguments.length>1?pf(e,t,n):ct(e)}function pf(e,t,n){const r=e[t];return be(r)?r:new fm(e,t,n)}class hm{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new ho(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Ai-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&we!==this)return Gu(this,!0),!0}get value(){const t=this.dep.track({target:this,type:"get",key:"value"});return Xu(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter?this.setter(t):Rt("Write operation failed: computed value is readonly")}}function mm(e,t,n=!1){let r,i;te(e)?r=e:(r=e.get,i=e.set);const s=new hm(r,i,n);return t&&!n&&(s.onTrack=t.onTrack,s.onTrigger=t.onTrigger),s}const gm={GET:"get",HAS:"has",ITERATE:"iterate"},vm={SET:"set",ADD:"add",DELETE:"delete",CLEAR:"clear"},cs={},Ds=new WeakMap;let Nn;function ym(){return Nn}function hf(e,t=!1,n=Nn){if(n){let r=Ds.get(n);r||Ds.set(n,r=[]),r.push(e)}else t||Rt("onWatcherCleanup() was called when there was no active watcher to associate with.")}function bm(e,t,n=de){const{immediate:r,deep:i,once:s,scheduler:o,augmentJob:l,call:a}=n,u=b=>{(n.onWarn||Rt)("Invalid watch source: ",b,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},c=b=>i?b:tt(b)||i===!1||i===0?_n(b,1):_n(b);let f,p,h,v,y=!1,P=!1;if(be(e)?(p=()=>e.value,y=tt(e)):an(e)?(p=()=>c(e),y=!0):z(e)?(P=!0,y=e.some(b=>an(b)||tt(b)),p=()=>e.map(b=>{if(be(b))return b.value;if(an(b))return c(b);if(te(b))return a?a(b,2):b();u(b)})):te(e)?t?p=a?()=>a(e,2):e:p=()=>{if(h){Gt();try{h()}finally{Yt()}}const b=Nn;Nn=f;try{return a?a(e,3,[v]):e(v)}finally{Nn=b}}:(p=$e,u(e)),t&&i){const b=p,_=i===!0?1/0:i;p=()=>_n(b(),_)}const C=qu(),x=()=>{f.stop(),C&&C.active&&Kl(C.effects,f)};if(s&&t){const b=t;t=(..._)=>{b(..._),x()}}let g=P?new Array(e.length).fill(cs):cs;const d=b=>{if(!(!(f.flags&1)||!f.dirty&&!b))if(t){const _=f.run();if(i||y||(P?_.some((E,T)=>ot(E,g[T])):ot(_,g))){h&&h();const E=Nn;Nn=f;try{const T=[_,g===cs?void 0:P&&g[0]===cs?[]:g,v];g=_,a?a(t,3,T):t(...T)}finally{Nn=E}}}else f.run()};return l&&l(d),f=new Oi(p),f.scheduler=o?()=>o(d,!1):d,v=b=>hf(b,!1,f),h=f.onStop=()=>{const b=Ds.get(f);if(b){if(a)a(b,4);else for(const _ of b)_();Ds.delete(f)}},f.onTrack=n.onTrack,f.onTrigger=n.onTrigger,t?r?d(!0):g=f.run():o?o(d.bind(null,!0),!0):f.run(),x.pause=f.pause.bind(f),x.resume=f.resume.bind(f),x.stop=x,x}function _n(e,t=1/0,n){if(t<=0||!he(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,be(e))_n(e.value,t,n);else if(z(e))for(let r=0;r{_n(r,t,n)});else if(uo(e)){for(const r in e)_n(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&_n(e[r],t,n)}return e}/** +* @vue/runtime-core v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const cr=[];function kr(e){cr.push(e)}function Rr(){cr.pop()}let Uo=!1;function k(e,...t){if(Uo)return;Uo=!0,Gt();const n=cr.length?cr[cr.length-1].component:null,r=n&&n.appContext.config.warnHandler,i=wm();if(r)Sr(r,n,11,[e+t.map(s=>{var o,l;return(l=(o=s.toString)==null?void 0:o.call(s))!=null?l:JSON.stringify(s)}).join(""),n&&n.proxy,i.map(({vnode:s})=>`at <${Po(n,s.type)}>`).join(` +`),i]);else{const s=[`[Vue warn]: ${e}`,...t];i.length&&s.push(` +`,..._m(i)),console.warn(...s)}Yt(),Uo=!1}function wm(){let e=cr[cr.length-1];if(!e)return[];const t=[];for(;e;){const n=t[0];n&&n.vnode===e?n.recurseCount++:t.push({vnode:e,recurseCount:0});const r=e.component&&e.component.parent;e=r&&r.vnode}return t}function _m(e){const t=[];return e.forEach((n,r)=>{t.push(...r===0?[]:[` +`],...Sm(n))}),t}function Sm({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",r=e.component?e.component.parent==null:!1,i=` at <${Po(e.component,e.type,r)}`,s=">"+n;return e.props?[i,...Cm(e.props),s]:[i+s]}function Cm(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach(r=>{t.push(...mf(r,e[r]))}),n.length>3&&t.push(" ..."),t}function mf(e,t,n){return ne(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?n?t:[`${e}=${t}`]:be(t)?(t=mf(e,le(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):te(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=le(t),n?t:[`${e}=`,t])}function ta(e,t){e!==void 0&&(typeof e!="number"?k(`${t} is not a valid number - got ${JSON.stringify(e)}.`):isNaN(e)&&k(`${t} is NaN - the duration expression might be incorrect.`))}const Em={SETUP_FUNCTION:0,0:"SETUP_FUNCTION",RENDER_FUNCTION:1,1:"RENDER_FUNCTION",NATIVE_EVENT_HANDLER:5,5:"NATIVE_EVENT_HANDLER",COMPONENT_EVENT_HANDLER:6,6:"COMPONENT_EVENT_HANDLER",VNODE_HOOK:7,7:"VNODE_HOOK",DIRECTIVE_HOOK:8,8:"DIRECTIVE_HOOK",TRANSITION_HOOK:9,9:"TRANSITION_HOOK",APP_ERROR_HANDLER:10,10:"APP_ERROR_HANDLER",APP_WARN_HANDLER:11,11:"APP_WARN_HANDLER",FUNCTION_REF:12,12:"FUNCTION_REF",ASYNC_COMPONENT_LOADER:13,13:"ASYNC_COMPONENT_LOADER",SCHEDULER:14,14:"SCHEDULER",COMPONENT_UPDATE:15,15:"COMPONENT_UPDATE",APP_UNMOUNT_CLEANUP:16,16:"APP_UNMOUNT_CLEANUP"},bo={sp:"serverPrefetch hook",bc:"beforeCreate hook",c:"created hook",bm:"beforeMount hook",m:"mounted hook",bu:"beforeUpdate hook",u:"updated",bum:"beforeUnmount hook",um:"unmounted hook",a:"activated hook",da:"deactivated hook",ec:"errorCaptured hook",rtc:"renderTracked hook",rtg:"renderTriggered hook",0:"setup function",1:"render function",2:"watcher getter",3:"watcher callback",4:"watcher cleanup function",5:"native event handler",6:"component event handler",7:"vnode hook",8:"directive hook",9:"transition hook",10:"app errorHandler",11:"app warnHandler",12:"ref function",13:"async component loader",14:"scheduler flush",15:"component update",16:"app unmount cleanup function"};function Sr(e,t,n,r){try{return r?e(...r):e()}catch(i){qn(i,t,n)}}function Mt(e,t,n,r){if(te(e)){const i=Sr(e,t,n,r);return i&&co(i)&&i.catch(s=>{qn(s,t,n)}),i}if(z(e)){const i=[];for(let s=0;s>>1,i=lt[r],s=Ii(i);s=Ii(n)?lt.push(e):lt.splice(Om(t),0,e),e.flags|=1,vf()}}function vf(){Ls||(Ls=gf.then(yf))}function Fr(e){z(e)?Mr.push(...e):kn&&e.id===-1?kn.splice(Pr+1,0,e):e.flags&1||(Mr.push(e),e.flags|=1),vf()}function ic(e,t,n=tn+1){for(t=t||new Map;nIi(n)-Ii(r));if(Mr.length=0,kn){kn.push(...t);return}for(kn=t,e=e||new Map,Pr=0;Pre.id==null?e.flags&2?-1:1/0:e.id;function yf(e){e=e||new Map;const t=n=>na(e,n);try{for(tn=0;tnxm){const r=t.i,i=r&&Hr(r.type);return qn(`Maximum recursive updates exceeded${i?` in component <${i}>`:""}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,null,10),!0}return e.set(t,n+1),!1}let Ut=!1;const _s=new Map;qi().__VUE_HMR_RUNTIME__={createRecord:Wo(bf),rerender:Wo(Im),reload:Wo(Nm)};const vr=new Map;function Am(e){const t=e.type.__hmrId;let n=vr.get(t);n||(bf(t,e.type),n=vr.get(t)),n.instances.add(e)}function Pm(e){vr.get(e.type.__hmrId).instances.delete(e)}function bf(e,t){return vr.has(e)?!1:(vr.set(e,{initialDef:Vs(t),instances:new Set}),!0)}function Vs(e){return Od(e)?e.__vccOpts:e}function Im(e,t){const n=vr.get(e);n&&(n.initialDef.render=t,[...n.instances].forEach(r=>{t&&(r.render=t,Vs(r.type).render=t),r.renderCache=[],Ut=!0,r.update(),Ut=!1}))}function Nm(e,t){const n=vr.get(e);if(!n)return;t=Vs(t),sc(n.initialDef,t);const r=[...n.instances];for(let i=0;i{Ut=!0,s.parent.update(),Ut=!1,l.delete(s)}):s.appContext.reload?s.appContext.reload():typeof window<"u"?window.location.reload():console.warn("[HMR] Root or manually mounted instance modified. Full reload required."),s.root.ce&&s!==s.root&&s.root.ce._removeChildStyle(o)}Fr(()=>{_s.clear()})}function sc(e,t){ce(e,t);for(const n in e)n!=="__file"&&!(n in t)&&delete e[n]}function Wo(e){return(t,n)=>{try{return e(t,n)}catch(r){console.error(r),console.warn("[HMR] Something went wrong during Vue component hot-reload. Full reload required.")}}}let Bt,di=[],cl=!1;function Yi(e,...t){Bt?Bt.emit(e,...t):cl||di.push({event:e,args:t})}function ra(e,t){var n,r;Bt=e,Bt?(Bt.enabled=!0,di.forEach(({event:i,args:s})=>Bt.emit(i,...s)),di=[]):typeof window<"u"&&window.HTMLElement&&!((r=(n=window.navigator)==null?void 0:n.userAgent)!=null&&r.includes("jsdom"))?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(s=>{ra(s,t)}),setTimeout(()=>{Bt||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,cl=!0,di=[])},3e3)):(cl=!0,di=[])}function km(e,t){Yi("app:init",e,t,{Fragment:Ae,Text:un,Comment:Pe,Static:jn})}function Rm(e){Yi("app:unmount",e)}const ul=ia("component:added"),wf=ia("component:updated"),Mm=ia("component:removed"),$m=e=>{Bt&&typeof Bt.cleanupBuffer=="function"&&!Bt.cleanupBuffer(e)&&Mm(e)};/*! #__NO_SIDE_EFFECTS__ */function ia(e){return t=>{Yi(e,t.appContext.app,t.uid,t.parent?t.parent.uid:void 0,t)}}const Dm=_f("perf:start"),Lm=_f("perf:end");function _f(e){return(t,n,r)=>{Yi(e,t.appContext.app,t.uid,t,n,r)}}function Fm(e,t,n){Yi("component:emit",e.appContext.app,e,t,n)}let De=null,_o=null;function Ni(e){const t=De;return De=e,_o=e&&e.type.__scopeId||null,t}function Vm(e){_o=e}function Bm(){_o=null}const Hm=e=>sa;function sa(e,t=De,n){if(!t||e._n)return e;const r=(...i)=>{r._d&&wl(-1);const s=Ni(t);let o;try{o=e(...i)}finally{Ni(s),r._d&&wl(1)}return wf(t),o};return r._n=!0,r._c=!0,r._d=!0,r}function Sf(e){Lu(e)&&k("Do not use built-in directive ids as custom directive id: "+e)}function sn(e,t){if(De===null)return k("withDirectives can only be used inside render functions."),e;const n=Qi(De),r=e.dirs||(e.dirs=[]);for(let i=0;ie.__isTeleport,ur=e=>e&&(e.disabled||e.disabled===""),oc=e=>e&&(e.defer||e.defer===""),lc=e=>typeof SVGElement<"u"&&e instanceof SVGElement,ac=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,fl=(e,t)=>{const n=e&&e.to;if(ne(n))if(t){const r=t(n);return!r&&!ur(e)&&k(`Failed to locate Teleport target with selector "${n}". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`),r}else return k("Current renderer does not support string target for Teleports. (missing querySelector renderer option)"),null;else return!n&&!ur(e)&&k(`Invalid Teleport target: ${n}`),n},Tf={name:"Teleport",__isTeleport:!0,process(e,t,n,r,i,s,o,l,a,u){const{mc:c,pc:f,pbc:p,o:{insert:h,querySelector:v,createText:y,createComment:P}}=u,C=ur(t.props);let{shapeFlag:x,children:g,dynamicChildren:d}=t;if(Ut&&(a=!1,d=null),e==null){const b=t.el=P("teleport start"),_=t.anchor=P("teleport end");h(b,n,r),h(_,n,r);const E=(S,A)=>{x&16&&(i&&i.isCE&&(i.ce._teleportTarget=S),c(g,S,A,i,s,o,l,a))},T=()=>{const S=t.target=fl(t.props,v),A=xf(S,t,y,h);S?(o!=="svg"&&lc(S)?o="svg":o!=="mathml"&&ac(S)&&(o="mathml"),C||(E(S,A),Ss(t,!1))):C||k("Invalid Teleport target on mount:",S,`(${typeof S})`)};C&&(E(n,_),Ss(t,!0)),oc(t.props)?(t.el.__isMounted=!1,Fe(()=>{T(),delete t.el.__isMounted},s)):T()}else{if(oc(t.props)&&e.el.__isMounted===!1){Fe(()=>{Tf.process(e,t,n,r,i,s,o,l,a,u)},s);return}t.el=e.el,t.targetStart=e.targetStart;const b=t.anchor=e.anchor,_=t.target=e.target,E=t.targetAnchor=e.targetAnchor,T=ur(e.props),S=T?n:_,A=T?b:E;if(o==="svg"||lc(_)?o="svg":(o==="mathml"||ac(_))&&(o="mathml"),d?(p(e.dynamicChildren,d,S,i,s,o,l),Us(e,t,!1)):a||f(e,t,S,A,i,s,o,l,!1),C)T?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):us(t,n,b,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const R=t.target=fl(t.props,v);R?us(t,R,null,u,0):k("Invalid Teleport target on update:",_,`(${typeof _})`)}else T&&us(t,_,E,u,1);Ss(t,C)}},remove(e,t,n,{um:r,o:{remove:i}},s){const{shapeFlag:o,children:l,anchor:a,targetStart:u,targetAnchor:c,target:f,props:p}=e;if(f&&(i(u),i(c)),s&&i(a),o&16){const h=s||!ur(p);for(let v=0;v{e.isMounted=!0}),To(()=>{e.isUnmounting=!0}),e}const At=[Function,Array],la={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:At,onEnter:At,onAfterEnter:At,onEnterCancelled:At,onBeforeLeave:At,onLeave:At,onAfterLeave:At,onLeaveCancelled:At,onBeforeAppear:At,onAppear:At,onAfterAppear:At,onAppearCancelled:At},Of=e=>{const t=e.subTree;return t.component?Of(t.component):t},Wm={name:"BaseTransition",props:la,setup(e,{slots:t}){const n=rt(),r=oa();return()=>{const i=t.default&&So(t.default(),!0);if(!i||!i.length)return;const s=Af(i),o=le(e),{mode:l}=o;if(l&&l!=="in-out"&&l!=="out-in"&&l!=="default"&&k(`invalid mode: ${l}`),r.isLeaving)return Ko(s);const a=cc(s);if(!a)return Ko(s);let u=Vr(a,o,r,n,f=>u=f);a.type!==Pe&&Tn(a,u);let c=n.subTree&&cc(n.subTree);if(c&&c.type!==Pe&&!Ht(a,c)&&Of(n).type!==Pe){let f=Vr(c,o,r,n);if(Tn(c,f),l==="out-in"&&a.type!==Pe)return r.isLeaving=!0,f.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete f.afterLeave,c=void 0},Ko(s);l==="in-out"&&a.type!==Pe?f.delayLeave=(p,h,v)=>{const y=If(r,c);y[String(c.key)]=c,p[Rn]=()=>{h(),p[Rn]=void 0,delete u.delayedLeave,c=void 0},u.delayedLeave=()=>{v(),delete u.delayedLeave,c=void 0}}:c=void 0}else c&&(c=void 0);return s}}};function Af(e){let t=e[0];if(e.length>1){let n=!1;for(const r of e)if(r.type!==Pe){if(n){k(" can only be used on a single element or component. Use for lists.");break}t=r,n=!0}}return t}const Pf=Wm;function If(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Vr(e,t,n,r,i){const{appear:s,mode:o,persisted:l=!1,onBeforeEnter:a,onEnter:u,onAfterEnter:c,onEnterCancelled:f,onBeforeLeave:p,onLeave:h,onAfterLeave:v,onLeaveCancelled:y,onBeforeAppear:P,onAppear:C,onAfterAppear:x,onAppearCancelled:g}=t,d=String(e.key),b=If(n,e),_=(S,A)=>{S&&Mt(S,r,9,A)},E=(S,A)=>{const R=A[1];_(S,A),z(S)?S.every(O=>O.length<=1)&&R():S.length<=1&&R()},T={mode:o,persisted:l,beforeEnter(S){let A=a;if(!n.isMounted)if(s)A=P||a;else return;S[Rn]&&S[Rn](!0);const R=b[d];R&&Ht(e,R)&&R.el[Rn]&&R.el[Rn](),_(A,[S])},enter(S){let A=u,R=c,O=f;if(!n.isMounted)if(s)A=C||u,R=x||c,O=g||f;else return;let B=!1;const G=S[fs]=J=>{B||(B=!0,J?_(O,[S]):_(R,[S]),T.delayedLeave&&T.delayedLeave(),S[fs]=void 0)};A?E(A,[S,G]):G()},leave(S,A){const R=String(e.key);if(S[fs]&&S[fs](!0),n.isUnmounting)return A();_(p,[S]);let O=!1;const B=S[Rn]=G=>{O||(O=!0,A(),G?_(y,[S]):_(v,[S]),S[Rn]=void 0,b[R]===e&&delete b[R])};b[R]=e,h?E(h,[S,B]):B()},clone(S){const A=Vr(S,t,n,r,i);return i&&i(A),A}};return T}function Ko(e){if(si(e))return e=$t(e),e.children=null,e}function cc(e){if(!si(e))return Ef(e.type)&&e.children?Af(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&te(n.default))return n.default()}}function Tn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Tn(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function So(e,t=!1,n){let r=[],i=0;for(let s=0;s1)for(let s=0;sn.value,set:o=>n.value=o})}else k("useTemplateRef() is called when there is no active component instance to be associated with.");const r=vo(n);return Nf.add(r),r}function $r(e,t,n,r,i=!1){if(z(e)){e.forEach((v,y)=>$r(v,t&&(z(t)?t[y]:t),n,r,i));return}if(Hn(r)&&!i){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&$r(e,t,n,r.component.subTree);return}const s=r.shapeFlag&4?Qi(r.component):r.el,o=i?null:s,{i:l,r:a}=e;if(!l){k("Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.");return}const u=t&&t.r,c=l.refs===de?l.refs={}:l.refs,f=l.setupState,p=le(f),h=f===de?()=>!1:v=>(me(p,v)&&!be(p[v])&&k(`Template ref "${v}" used on a non-ref value. It will not work in the production build.`),Nf.has(p[v])?!1:me(p,v));if(u!=null&&u!==a&&(ne(u)?(c[u]=null,h(u)&&(f[u]=null)):be(u)&&(u.value=null)),te(a))Sr(a,l,12,[o,c]);else{const v=ne(a),y=be(a);if(v||y){const P=()=>{if(e.f){const C=v?h(a)?f[a]:c[a]:a.value;i?z(C)&&Kl(C,s):z(C)?C.includes(s)||C.push(s):v?(c[a]=[s],h(a)&&(f[a]=c[a])):(a.value=[s],e.k&&(c[e.k]=a.value))}else v?(c[a]=o,h(a)&&(f[a]=o)):y?(a.value=o,e.k&&(c[e.k]=o)):k("Invalid template ref type:",a,`(${typeof a})`)};o?(P.id=-1,Fe(P,n)):P()}else k("Invalid template ref type:",a,`(${typeof a})`)}}let uc=!1;const Jn=()=>{uc||(console.error("Hydration completed but contains mismatches."),uc=!0)},zm=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",Gm=e=>e.namespaceURI.includes("MathML"),ds=e=>{if(e.nodeType===1){if(zm(e))return"svg";if(Gm(e))return"mathml"}},rr=e=>e.nodeType===8;function Ym(e){const{mt:t,p:n,o:{patchProp:r,createText:i,nextSibling:s,parentNode:o,remove:l,insert:a,createComment:u}}=e,c=(g,d)=>{if(!d.hasChildNodes()){k("Attempting to hydrate existing markup but container is empty. Performing full mount instead."),n(null,g,d),Fs(),d._vnode=g;return}f(d.firstChild,g,null,null,null),Fs(),d._vnode=g},f=(g,d,b,_,E,T=!1)=>{T=T||!!d.dynamicChildren;const S=rr(g)&&g.data==="[",A=()=>y(g,d,b,_,E,S),{type:R,ref:O,shapeFlag:B,patchFlag:G}=d;let J=g.nodeType;d.el=g,gr(g,"__vnode",d,!0),gr(g,"__vueParentComponent",b,!0),G===-2&&(T=!1,d.dynamicChildren=null);let q=null;switch(R){case un:J!==3?d.children===""?(a(d.el=i(""),o(g),g),q=g):q=A():(g.data!==d.children&&(k("Hydration text mismatch in",g.parentNode,` + - rendered on server: ${JSON.stringify(g.data)} + - expected on client: ${JSON.stringify(d.children)}`),Jn(),g.data=d.children),q=s(g));break;case Pe:x(g)?(q=s(g),C(d.el=g.content.firstChild,g,b)):J!==8||S?q=A():q=s(g);break;case jn:if(S&&(g=s(g),J=g.nodeType),J===1||J===3){q=g;const Y=!d.children.length;for(let W=0;W{T=T||!!d.dynamicChildren;const{type:S,props:A,patchFlag:R,shapeFlag:O,dirs:B,transition:G}=d,J=S==="input"||S==="option";{B&&nn(d,null,b,"created");let q=!1;if(x(g)){q=id(null,G)&&b&&b.vnode.props&&b.vnode.props.appear;const W=g.content.firstChild;if(q){const ue=W.getAttribute("class");ue&&(W.$cls=ue),G.beforeEnter(W)}C(W,g,b),d.el=g=W}if(O&16&&!(A&&(A.innerHTML||A.textContent))){let W=h(g.firstChild,d,g,b,_,E,T),ue=!1;for(;W;){pi(g,1)||(ue||(k("Hydration children mismatch on",g,` +Server rendered element contains more child nodes than client vdom.`),ue=!0),Jn());const Oe=W;W=W.nextSibling,l(Oe)}}else if(O&8){let W=d.children;W[0]===` +`&&(g.tagName==="PRE"||g.tagName==="TEXTAREA")&&(W=W.slice(1)),g.textContent!==W&&(pi(g,0)||(k("Hydration text content mismatch on",g,` + - rendered on server: ${g.textContent} + - expected on client: ${d.children}`),Jn()),g.textContent=d.children)}if(A){const W=g.tagName.includes("-");for(const ue in A)!(B&&B.some(Oe=>Oe.dir.created))&&Jm(g,ue,A[ue],d,b)&&Jn(),(J&&(ue.endsWith("value")||ue==="indeterminate")||En(ue)&&!Bn(ue)||ue[0]==="."||W)&&r(g,ue,null,A[ue],void 0,b)}let Y;(Y=A&&A.onVnodeBeforeMount)&&pt(Y,b,d),B&&nn(d,null,b,"beforeMount"),((Y=A&&A.onVnodeMounted)||B||q)&&hd(()=>{Y&&pt(Y,b,d),q&&G.enter(g),B&&nn(d,null,b,"mounted")},_)}return g.nextSibling},h=(g,d,b,_,E,T,S)=>{S=S||!!d.dynamicChildren;const A=d.children,R=A.length;let O=!1;for(let B=0;B{const{slotScopeIds:S}=d;S&&(E=E?E.concat(S):S);const A=o(g),R=h(s(g),d,A,b,_,E,T);return R&&rr(R)&&R.data==="]"?s(d.anchor=R):(Jn(),a(d.anchor=u("]"),A,R),R)},y=(g,d,b,_,E,T)=>{if(pi(g.parentElement,1)||(k(`Hydration node mismatch: +- rendered on server:`,g,g.nodeType===3?"(text)":rr(g)&&g.data==="["?"(start of fragment)":"",` +- expected on client:`,d.type),Jn()),d.el=null,T){const R=P(g);for(;;){const O=s(g);if(O&&O!==R)l(O);else break}}const S=s(g),A=o(g);return l(g),n(null,d,A,S,b,_,ds(A),E),b&&(b.vnode.el=d.el,Ao(b,d.el)),S},P=(g,d="[",b="]")=>{let _=0;for(;g;)if(g=s(g),g&&rr(g)&&(g.data===d&&_++,g.data===b)){if(_===0)return s(g);_--}return g},C=(g,d,b)=>{const _=d.parentNode;_&&_.replaceChild(g,d);let E=b;for(;E;)E.vnode.el===d&&(E.vnode.el=E.subTree.el=g),E=E.parent},x=g=>g.nodeType===1&&g.tagName==="TEMPLATE";return[c,f]}function Jm(e,t,n,r,i){let s,o,l,a;if(t==="class")e.$cls?(l=e.$cls,delete e.$cls):l=e.getAttribute("class"),a=Et(n),Xm(fc(l||""),fc(a))||(s=2,o="class");else if(t==="style"){l=e.getAttribute("style")||"",a=ne(n)?n:Sh(ri(n));const u=dc(l),c=dc(a);if(r.dirs)for(const{dir:f,value:p}of r.dirs)f.name==="show"&&!p&&c.set("display","none");i&&kf(i,r,c),Zm(u,c)||(s=3,o="style")}else(e instanceof SVGElement&&Nh(t)||e instanceof HTMLElement&&(ec(t)||Ih(t)))&&(ec(t)?(l=e.hasAttribute(t),a=Gl(n)):n==null?(l=e.hasAttribute(t),a=!1):(e.hasAttribute(t)?l=e.getAttribute(t):t==="value"&&e.tagName==="TEXTAREA"?l=e.value:l=!1,a=kh(n)?String(n):!1),l!==a&&(s=4,o=t));if(s!=null&&!pi(e,s)){const u=p=>p===!1?"(not rendered)":`${o}="${p}"`,c=`Hydration ${Rf[s]} mismatch on`,f=` + - rendered on server: ${u(l)} + - expected on client: ${u(a)} + Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead. + You should fix the source of the mismatch.`;return k(c,e,f),!0}return!1}function fc(e){return new Set(e.trim().split(/\s+/))}function Xm(e,t){if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}function dc(e){const t=new Map;for(const n of e.split(";")){let[r,i]=n.split(":");r=r.trim(),i=i&&i.trim(),r&&i&&t.set(r,i)}return t}function Zm(e,t){if(e.size!==t.size)return!1;for(const[n,r]of e)if(r!==t.get(n))return!1;return!0}function kf(e,t,n){const r=e.subTree;if(e.getCssVars&&(t===r||r&&r.type===Ae&&r.children.includes(t))){const i=e.getCssVars();for(const s in i){const o=Ku(i[s]);n.set(`--${Mh(s)}`,o)}}t===r&&e.parent&&kf(e.parent,e.vnode,n)}const pc="data-allow-mismatch",Rf={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function pi(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(pc);)e=e.parentElement;const n=e&&e.getAttribute(pc);if(n==null)return!1;if(n==="")return!0;{const r=n.split(",");return t===0&&r.includes("children")?!0:r.includes(Rf[t])}}const Qm=qi().requestIdleCallback||(e=>setTimeout(e,1)),eg=qi().cancelIdleCallback||(e=>clearTimeout(e)),tg=(e=1e4)=>t=>{const n=Qm(t,{timeout:e});return()=>eg(n)};function ng(e){const{top:t,left:n,bottom:r,right:i}=e.getBoundingClientRect(),{innerHeight:s,innerWidth:o}=window;return(t>0&&t0&&r0&&n0&&i(t,n)=>{const r=new IntersectionObserver(i=>{for(const s of i)if(s.isIntersecting){r.disconnect(),t();break}},e);return n(i=>{if(i instanceof Element){if(ng(i))return t(),r.disconnect(),!1;r.observe(i)}}),()=>r.disconnect()},ig=e=>t=>{if(e){const n=matchMedia(e);if(n.matches)t();else return n.addEventListener("change",t,{once:!0}),()=>n.removeEventListener("change",t)}},sg=(e=[])=>(t,n)=>{ne(e)&&(e=[e]);let r=!1;const i=o=>{r||(r=!0,s(),t(),o.target.dispatchEvent(new o.constructor(o.type,o)))},s=()=>{n(o=>{for(const l of e)o.removeEventListener(l,i)})};return n(o=>{for(const l of e)o.addEventListener(l,i,{once:!0})}),s};function og(e,t){if(rr(e)&&e.data==="["){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1){if(t(r)===!1)break}else if(rr(r))if(r.data==="]"){if(--n===0)break}else r.data==="["&&n++;r=r.nextSibling}}else t(e)}const Hn=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function lg(e){te(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:i=200,hydrate:s,timeout:o,suspensible:l=!0,onError:a}=e;let u=null,c,f=0;const p=()=>(f++,u=null,h()),h=()=>{let v;return u||(v=u=t().catch(y=>{if(y=y instanceof Error?y:new Error(String(y)),a)return new Promise((P,C)=>{a(y,()=>P(p()),()=>C(y),f+1)});throw y}).then(y=>{if(v!==u&&u)return u;if(y||k("Async component loader resolved to undefined. If you are using retry(), make sure to return its return value."),y&&(y.__esModule||y[Symbol.toStringTag]==="Module")&&(y=y.default),y&&!he(y)&&!te(y))throw new Error(`Invalid async component load result: ${y}`);return c=y,y}))};return Ji({name:"AsyncComponentWrapper",__asyncLoader:h,__asyncHydrate(v,y,P){let C=!1;(y.bu||(y.bu=[])).push(()=>C=!0);const x=()=>{if(C){k(`Skipping lazy hydration for component '${Hr(c)||c.__file}': it was updated before lazy hydration performed.`);return}P()},g=s?()=>{const d=s(x,b=>og(v,b));d&&(y.bum||(y.bum=[])).push(d)}:x;c?g():h().then(()=>!y.isUnmounted&&g())},get __asyncResolved(){return c},setup(){const v=Be;if(aa(v),c)return()=>qo(c,v);const y=g=>{u=null,qn(g,v,13,!r)};if(l&&v.suspense||Br)return h().then(g=>()=>qo(g,v)).catch(g=>(y(g),()=>r?Te(r,{error:g}):null));const P=ct(!1),C=ct(),x=ct(!!i);return i&&setTimeout(()=>{x.value=!1},i),o!=null&&setTimeout(()=>{if(!P.value&&!C.value){const g=new Error(`Async component timed out after ${o}ms.`);y(g),C.value=g}},o),h().then(()=>{P.value=!0,v.parent&&si(v.parent.vnode)&&v.parent.update()}).catch(g=>{y(g),C.value=g}),()=>{if(P.value&&c)return qo(c,v);if(C.value&&r)return Te(r,{error:C.value});if(n&&!x.value)return Te(n)}}})}function qo(e,t){const{ref:n,props:r,children:i,ce:s}=t.vnode,o=Te(e,r,i);return o.ref=n,o.ce=s,delete t.vnode.ce,o}const si=e=>e.type.__isKeepAlive,ag={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=rt(),r=n.ctx;if(!r.renderer)return()=>{const x=t.default&&t.default();return x&&x.length===1?x[0]:x};const i=new Map,s=new Set;let o=null;n.__v_cache=i;const l=n.suspense,{renderer:{p:a,m:u,um:c,o:{createElement:f}}}=r,p=f("div");r.activate=(x,g,d,b,_)=>{const E=x.component;u(x,g,d,0,l),a(E.vnode,x,g,d,E,l,b,x.slotScopeIds,_),Fe(()=>{E.isDeactivated=!1,E.a&&Dn(E.a);const T=x.props&&x.props.onVnodeMounted;T&&pt(T,E.parent,x)},l),ul(E)},r.deactivate=x=>{const g=x.component;Ws(g.m),Ws(g.a),u(x,p,null,1,l),Fe(()=>{g.da&&Dn(g.da);const d=x.props&&x.props.onVnodeUnmounted;d&&pt(d,g.parent,x),g.isDeactivated=!0},l),ul(g),g.__keepAliveStorageContainer=p};function h(x){zo(x),c(x,n,l,!0)}function v(x){i.forEach((g,d)=>{const b=Hr(g.type);b&&!x(b)&&y(d)})}function y(x){const g=i.get(x);g&&(!o||!Ht(g,o))?h(g):o&&zo(o),i.delete(x),s.delete(x)}cn(()=>[e.include,e.exclude],([x,g])=>{x&&v(d=>hi(x,d)),g&&v(d=>!hi(g,d))},{flush:"post",deep:!0});let P=null;const C=()=>{P!=null&&(qs(n.subTree.type)?Fe(()=>{i.set(P,ps(n.subTree))},n.subTree.suspense):i.set(P,ps(n.subTree)))};return zn(C),Eo(C),To(()=>{i.forEach(x=>{const{subTree:g,suspense:d}=n,b=ps(g);if(x.type===b.type&&x.key===b.key){zo(b);const _=b.component.da;_&&Fe(_,d);return}h(x)})}),()=>{if(P=null,!t.default)return o=null;const x=t.default(),g=x[0];if(x.length>1)return k("KeepAlive should contain exactly one component child."),o=null,x;if(!Xt(g)||!(g.shapeFlag&4)&&!(g.shapeFlag&128))return o=null,g;let d=ps(g);if(d.type===Pe)return o=null,d;const b=d.type,_=Hr(Hn(d)?d.type.__asyncResolved||{}:b),{include:E,exclude:T,max:S}=e;if(E&&(!_||!hi(E,_))||T&&_&&hi(T,_))return d.shapeFlag&=-257,o=d,g;const A=d.key==null?b:d.key,R=i.get(A);return d.el&&(d=$t(d),g.shapeFlag&128&&(g.ssContent=d)),P=A,R?(d.el=R.el,d.component=R.component,d.transition&&Tn(d,d.transition),d.shapeFlag|=512,s.delete(A),s.add(A)):(s.add(A),S&&s.size>parseInt(S,10)&&y(s.values().next().value)),d.shapeFlag|=256,o=d,qs(g.type)?g:d}}},cg=ag;function hi(e,t){return z(e)?e.some(n=>hi(n,t)):ne(e)?e.split(",").includes(t):fh(e)?(e.lastIndex=0,e.test(t)):!1}function Mf(e,t){Df(e,"a",t)}function $f(e,t){Df(e,"da",t)}function Df(e,t,n=Be){const r=e.__wdc||(e.__wdc=()=>{let i=n;for(;i;){if(i.isDeactivated)return;i=i.parent}return e()});if(Co(t,r,n),n){let i=n.parent;for(;i&&i.parent;)si(i.parent.vnode)&&ug(r,t,n,i),i=i.parent}}function ug(e,t,n,r){const i=Co(t,e,r,!0);Xi(()=>{Kl(r[t],i)},n)}function zo(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function ps(e){return e.shapeFlag&128?e.ssContent:e}function Co(e,t,n=Be,r=!1){if(n){const i=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...o)=>{Gt();const l=br(n),a=Mt(t,n,e,o);return l(),Yt(),a});return r?i.unshift(s):i.push(s),s}else{const i=rn(bo[e].replace(/ hook$/,""));k(`${i} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup(). If you are using async setup(), make sure to register lifecycle hooks before the first await statement.`)}}const xn=e=>(t,n=Be)=>{(!Br||e==="sp")&&Co(e,(...r)=>t(...r),n)},Lf=xn("bm"),zn=xn("m"),ca=xn("bu"),Eo=xn("u"),To=xn("bum"),Xi=xn("um"),Ff=xn("sp"),Vf=xn("rtg"),Bf=xn("rtc");function Hf(e,t=Be){Co("ec",e,t)}const Bs="components",fg="directives";function dl(e,t){return fa(Bs,e,!0,t)||e}const ua=Symbol.for("v-ndc");function dg(e){return ne(e)?fa(Bs,e,!1)||e:e||ua}function jf(e){return fa(fg,e)}function fa(e,t,n=!0,r=!1){const i=De||Be;if(i){const s=i.type;if(e===Bs){const l=Hr(s,!1);if(l&&(l===t||l===Ee(t)||l===dn(Ee(t))))return s}const o=hc(i[e]||s[e],t)||hc(i.appContext[e],t);if(!o&&r)return s;if(n&&!o){const l=e===Bs?` +If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.`:"";k(`Failed to resolve ${e.slice(0,-1)}: ${t}${l}`)}return o}else k(`resolve${dn(e.slice(0,-1))} can only be used in render() or setup().`)}function hc(e,t){return e&&(e[t]||e[Ee(t)]||e[dn(Ee(t))])}function Ir(e,t,n,r){let i;const s=n&&n[r],o=z(e);if(o||ne(e)){const l=o&&an(e);let a=!1,u=!1;l&&(a=!tt(e),u=Jt(e),e=mo(e)),i=new Array(e.length);for(let c=0,f=e.length;ct(l,a,void 0,s&&s[a]));else{const l=Object.keys(e);i=new Array(l.length);for(let a=0,u=l.length;a{const s=r.fn(...i);return s&&(s.key=r.key),s}:r.fn)}return e}function hg(e,t,n={},r,i){if(De.ce||De.parent&&Hn(De.parent)&&De.parent.ce)return t!=="default"&&(n.name=t),ve(),Mi(Ae,null,[Te("slot",n,r&&r())],64);let s=e[t];s&&s.length>1&&(k("SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template."),s=()=>[]),s&&s._c&&(s._d=!1),ve();const o=s&&da(s(n)),l=n.key||o&&o.key,a=Mi(Ae,{key:(l&&!yt(l)?l:`_${t}`)+(!o&&r?"_fb":"")},o||(r?r():[]),o&&e._===1?64:-2);return!i&&a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),s&&s._c&&(s._d=!0),a}function da(e){return e.some(t=>Xt(t)?!(t.type===Pe||t.type===Ae&&!da(t.children)):!0)?e:null}function mg(e,t){const n={};if(!he(e))return k("v-on with no argument expects an object value."),n;for(const r in e)n[t&&/[A-Z]/.test(r)?`on:${r}`:rn(r)]=e[r];return n}const pl=e=>e?Sd(e)?Qi(e):pl(e.parent):null,fr=ce(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>jt(e.props),$attrs:e=>jt(e.attrs),$slots:e=>jt(e.slots),$refs:e=>jt(e.refs),$parent:e=>pl(e.parent),$root:e=>pl(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>ha(e),$forceUpdate:e=>e.f||(e.f=()=>{wo(e.update)}),$nextTick:e=>e.n||(e.n=Gi.bind(e.proxy)),$watch:e=>sv.bind(e)}),pa=e=>e==="_"||e==="$",Go=(e,t)=>e!==de&&!e.__isScriptSetup&&me(e,t),bi={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:i,props:s,accessCache:o,type:l,appContext:a}=e;if(t==="__isVue")return!0;let u;if(t[0]!=="$"){const h=o[t];if(h!==void 0)switch(h){case 1:return r[t];case 2:return i[t];case 4:return n[t];case 3:return s[t]}else{if(Go(r,t))return o[t]=1,r[t];if(i!==de&&me(i,t))return o[t]=2,i[t];if((u=e.propsOptions[0])&&me(u,t))return o[t]=3,s[t];if(n!==de&&me(n,t))return o[t]=4,n[t];hl&&(o[t]=0)}}const c=fr[t];let f,p;if(c)return t==="$attrs"?(Ue(e.attrs,"get",""),Ks()):t==="$slots"&&Ue(e,"get",t),c(e);if((f=l.__cssModules)&&(f=f[t]))return f;if(n!==de&&me(n,t))return o[t]=4,n[t];if(p=a.config.globalProperties,me(p,t))return p[t];De&&(!ne(t)||t.indexOf("__v")!==0)&&(i!==de&&pa(t[0])&&me(i,t)?k(`Property ${JSON.stringify(t)} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.`):e===De&&k(`Property ${JSON.stringify(t)} was accessed during render but is not defined on instance.`))},set({_:e},t,n){const{data:r,setupState:i,ctx:s}=e;return Go(i,t)?(i[t]=n,!0):i.__isScriptSetup&&me(i,t)?(k(`Cannot mutate diff --git a/modules/system/controllers/updates/_install_themes.php b/modules/system/controllers/updates/_install_themes.php index d523542a9c..742b07872e 100644 --- a/modules/system/controllers/updates/_install_themes.php +++ b/modules/system/controllers/updates/_install_themes.php @@ -1,106 +1,7 @@ -
- - -
- -
- -
- -
- - -
- -

- - () -

- - -
-

-
- -
    - - -
  • -
    - -
    -
    -

    -

    $theme['author']])) ?>

    -
    - -
  • - - -
- - -
- -
-
- - -
-

-
-
-
-
- -
- -
- +
+
- - diff --git a/modules/system/controllers/updates/_is_enabled.php b/modules/system/controllers/updates/_is_enabled.php index c9ad4aa7f1..9f5fab9c83 100644 --- a/modules/system/controllers/updates/_is_enabled.php +++ b/modules/system/controllers/updates/_is_enabled.php @@ -2,7 +2,6 @@
diff --git a/modules/system/controllers/updates/_list_toolbar.php b/modules/system/controllers/updates/_list_toolbar.php deleted file mode 100644 index c88cf581c8..0000000000 --- a/modules/system/controllers/updates/_list_toolbar.php +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/modules/system/controllers/updates/_name.php b/modules/system/controllers/updates/_name.php new file mode 100644 index 0000000000..c181458362 --- /dev/null +++ b/modules/system/controllers/updates/_name.php @@ -0,0 +1,17 @@ +icon; + +if ($record->is_disabled) { + $icon = 'icon-eye-slash'; +} elseif ($record->disabledBySystem) { + $icon = 'icon-exclamation'; +} elseif ($record->orphaned) { + $icon = 'icon-question'; +} elseif ($record->is_frozen) { + $icon = 'icon-lock'; +} +?> + + + + diff --git a/modules/system/controllers/updates/_open_link.php b/modules/system/controllers/updates/_open_link.php new file mode 100644 index 0000000000..4b0988347d --- /dev/null +++ b/modules/system/controllers/updates/_open_link.php @@ -0,0 +1,4 @@ + + + + diff --git a/modules/system/controllers/updates/_popup_upload_plugin.php b/modules/system/controllers/updates/_popup_upload_plugin.php new file mode 100644 index 0000000000..1a8827dc36 --- /dev/null +++ b/modules/system/controllers/updates/_popup_upload_plugin.php @@ -0,0 +1,18 @@ +
+ true, + ]) ?> + + + + + +
diff --git a/modules/system/controllers/updates/_update_list.php b/modules/system/controllers/updates/_update_list.php index 4444603ddc..47b540473d 100644 --- a/modules/system/controllers/updates/_update_list.php +++ b/modules/system/controllers/updates/_update_list.php @@ -1,206 +1,175 @@ -fatalError): ?> - - - -