diff --git a/.gitignore b/.gitignore index ef7c93d..929ac95 100644 --- a/.gitignore +++ b/.gitignore @@ -24,4 +24,5 @@ yarn-error.log # Platform specific .DS_Store -screenshots/ \ No newline at end of file +screenshots/ +public/assets/ \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index a3ef740..e07767a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -557,22 +557,23 @@ "dev": true }, "node_modules/@adonisjs/vite": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@adonisjs/vite/-/vite-2.0.2.tgz", - "integrity": "sha512-DBlJGZFPdfGGtwwp119LZgcXlG8oBIdzxA7nqXZdO7KoEcmZJ9QVYTyJHMc5aYxgbhUXcZtKegNcIrfxXCRwjw==", + "version": "3.0.0-8", + "resolved": "https://registry.npmjs.org/@adonisjs/vite/-/vite-3.0.0-8.tgz", + "integrity": "sha512-CMDBS93s+TwPmAmN1Wsm35duEkcO8baUSkeNPwsXz/OdEP4POMQa+LvUWkqGs+oCxKL/Rhq/w3rJIA/zwX0StQ==", "dependencies": { - "defu": "^6.1.4", + "@poppinss/utils": "^6.7.2", + "@vavite/multibuild": "^4.1.1", "edge-error": "^4.0.1", "vite-plugin-restart": "^0.4.0" }, "engines": { - "node": ">=18.16.0" + "node": ">=20.6.0" }, "peerDependencies": { - "@adonisjs/core": "^6.2.0", + "@adonisjs/core": "^6.3.0", "@adonisjs/shield": "^8.0.0", "edge.js": "^6.0.1", - "vite": "^5.0.11" + "vite": "^5.1.4" }, "peerDependenciesMeta": { "@adonisjs/shield": { @@ -580,9 +581,6 @@ }, "edge.js": { "optional": true - }, - "vite": { - "optional": true } } }, @@ -1819,6 +1817,46 @@ "npm": ">=6.14.13" } }, + "node_modules/@flydotio/dockerfile": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@flydotio/dockerfile/-/dockerfile-0.5.3.tgz", + "integrity": "sha512-HvPMYkvgAJm9564M8QB8rxy8kuXV4JbUjvfvaUbO3Ogw4SDWLUphEDGThf2IPB+lI4NN4w7zOHzV+GM0mBZw9g==", + "dev": true, + "dependencies": { + "chalk": "^5.3.0", + "diff": "^5.1.0", + "ejs": "^3.1.9", + "shell-quote": "^1.8.1", + "yargs": "^17.7.2" + }, + "bin": { + "dockerfile": "index.js" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@flydotio/dockerfile/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@flydotio/dockerfile/node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", @@ -4684,6 +4722,19 @@ "resolved": "https://registry.npmjs.org/@vanilla-extract/private/-/private-1.0.3.tgz", "integrity": "sha512-17kVyLq3ePTKOkveHxXuIJZtGYs+cSoev7BlP+Lf4916qfDhk/HBjvlYDe8egrea7LNPHKwSZJK/bzZC+Q6AwQ==" }, + "node_modules/@vavite/multibuild": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@vavite/multibuild/-/multibuild-4.1.1.tgz", + "integrity": "sha512-R+UJWT2wH598OsGNA/NHgUgtOGvyh9kqaDsP/twJa/OJSH+RWgzj+ONQPqbkAYqPYu0NgRb8rkQOK4QJwdLx0A==", + "dependencies": { + "@types/node": "^20.11.19", + "cac": "^6.7.14", + "picocolors": "^1.0.0" + }, + "peerDependencies": { + "vite": "^2.8.1 || 3 || 4 || 5" + } + }, "node_modules/@vinejs/compiler": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@vinejs/compiler/-/compiler-2.4.1.tgz", @@ -5184,6 +5235,12 @@ "astring": "bin/astring" } }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true + }, "node_modules/async-retry": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", @@ -7394,11 +7451,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/defu": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", - "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==" - }, "node_modules/del": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/del/-/del-7.1.0.tgz", @@ -7705,6 +7757,21 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, + "node_modules/ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/electron-to-chromium": { "version": "1.4.616", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.616.tgz", @@ -8906,6 +8973,27 @@ "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -11074,6 +11162,46 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jake/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/javascript-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", @@ -17532,6 +17660,15 @@ "node": ">=8" } }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -20773,6 +20910,7 @@ "@adonisjs/http-server": "^7.1.0", "@adonisjs/prettier-config": "^1.3.0", "@adonisjs/tsconfig": "^1.3.0", + "@adonisjs/vite": "^3.0.0-8", "@japa/assert": "^2.1.0", "@japa/expect": "^3.0.1", "@japa/runner": "^3.1.1", @@ -20815,7 +20953,7 @@ "@adonisjs/session": "^7.1.1", "@adonisjs/shield": "^8.1.1", "@adonisjs/static": "^1.1.1", - "@adonisjs/vite": "^2.0.2", + "@adonisjs/vite": "^3.0.0-8", "@japa/api-client": "^2.0.2", "@japa/browser-client": "^2.0.2", "@matstack/remix-adonisjs": "*", @@ -20837,6 +20975,7 @@ "@adonisjs/eslint-config": "^1.3.0", "@adonisjs/prettier-config": "^1.3.0", "@adonisjs/tsconfig": "^1.3.0", + "@flydotio/dockerfile": "^0.5.3", "@japa/assert": "^2.1.0", "@japa/plugin-adonisjs": "^3.0.0", "@japa/runner": "^3.1.1", diff --git a/packages/adapter/package.json b/packages/adapter/package.json index 9d2fb79..34c43d2 100644 --- a/packages/adapter/package.json +++ b/packages/adapter/package.json @@ -51,6 +51,7 @@ "@adonisjs/http-server": "^7.1.0", "@adonisjs/prettier-config": "^1.3.0", "@adonisjs/tsconfig": "^1.3.0", + "@adonisjs/vite": "^3.0.0-8", "@japa/assert": "^2.1.0", "@japa/expect": "^3.0.1", "@japa/runner": "^3.1.1", diff --git a/packages/adapter/providers/remix_provider.ts b/packages/adapter/providers/remix_provider.ts index f04a265..9aa2e04 100644 --- a/packages/adapter/providers/remix_provider.ts +++ b/packages/adapter/providers/remix_provider.ts @@ -3,7 +3,6 @@ import { RequestHandler, createRequestHandler } from '../src/remix_adapter.js' import { HttpContext } from '@adonisjs/core/http' import { ApplicationService } from '@adonisjs/core/types' -import { ViteDevServer } from 'vite' import '../src/types/main.js' declare module '@adonisjs/core/types' { @@ -21,23 +20,15 @@ declare module '@adonisjs/core/http' { export default class RemixProvider { static needsApplication = true private remixBundle = path.join(process.cwd(), 'build/remix/server/server.js') - private viteDevServer?: ViteDevServer constructor(protected app: ApplicationService) {} - async ready() { - if (this.app.inDev && this.app.getEnvironment() === 'web') { - this.viteDevServer = await import('vite').then((vite) => - vite.createServer({ - server: { middlewareMode: true }, - }) - ) - } - } - async boot() { - const build = this.viteDevServer - ? () => this.viteDevServer?.ssrLoadModule('virtual:remix/server-build') + const vite = await this.app.container.make('vite') + // @ts-ignore + const devServer = vite.getDevServer() + const build = devServer + ? () => devServer?.ssrLoadModule('virtual:remix/server-build') : await import(this.remixBundle) const requestHandler = createRequestHandler({ build, diff --git a/packages/reference-app/.dockerignore b/packages/reference-app/.dockerignore new file mode 100644 index 0000000..400f48e --- /dev/null +++ b/packages/reference-app/.dockerignore @@ -0,0 +1,10 @@ +/.git +/node_modules +.dockerignore +.env +Dockerfile +fly.toml + +/.cache +/build +/public/build diff --git a/packages/reference-app/Dockerfile b/packages/reference-app/Dockerfile new file mode 100644 index 0000000..e1e6c72 --- /dev/null +++ b/packages/reference-app/Dockerfile @@ -0,0 +1,63 @@ +# syntax = docker/dockerfile:1 + +# Adjust NODE_VERSION as desired +ARG NODE_VERSION=20.10.0 +FROM node:${NODE_VERSION}-slim as base + +LABEL fly_launch_runtime="AdonisJS" + +# AdonisJS app lives here +WORKDIR /app + +# Set production environment +ENV NODE_ENV="production" + + +# Throw-away build stage to reduce size of final image +FROM base as build + +# Install packages needed to build node modules +RUN apt-get update -qq && \ + apt-get install --no-install-recommends -y build-essential node-gyp pkg-config python-is-python3 + +# Install node modules +COPY --link package.json ./ +RUN npm install --include=dev + +# Copy application code +COPY --link . . + +# Build application +RUN npm run build + + +# Final stage for app image +FROM base + +# Install packages needed for deployment +RUN apt-get update -qq && \ + apt-get install --no-install-recommends -y sqlite3 && \ + rm -rf /var/lib/apt/lists /var/cache/apt/archives + +# Copy built application +COPY --from=build /app /app + +# Setup sqlite3 on a separate volume +RUN mkdir -p /data +VOLUME /data + +# add shortcut for connecting to database CLI +RUN echo "#!/bin/sh\nset -x\nsqlite3 \$DATABASE_URL" > /usr/local/bin/database-cli && chmod +x /usr/local/bin/database-cli + +# Entrypoint sets up the container. +ENTRYPOINT [ "/app/docker-entrypoint.js" ] + +# Start the server by default, this can be overwritten at runtime +EXPOSE 3000 +ENV CACHE_VIEWS="true" \ + DATABASE_URL="file:///data/sqlite.db" \ + DRIVE_DISK="local" \ + HOST="0.0.0.0" \ + PORT="3000" \ + SESSION_DRIVER="cookie" +CMD [ "node", "/app/build/server.js" ] diff --git a/packages/reference-app/adonisrc.ts b/packages/reference-app/adonisrc.ts index ec8cc10..e847eb0 100644 --- a/packages/reference-app/adonisrc.ts +++ b/packages/reference-app/adonisrc.ts @@ -35,6 +35,7 @@ export default defineConfig({ () => import('@adonisjs/lucid/database_provider'), () => import('@adonisjs/auth/auth_provider'), () => import('@adonisjs/static/static_provider'), + () => import('@adonisjs/vite/vite_provider'), () => import('@matstack/remix-adonisjs/remix_provider'), ], @@ -80,7 +81,7 @@ export default defineConfig({ metaFiles: [ { pattern: 'public/**', - reloadServer: true, + reloadServer: false, }, ], }) diff --git a/packages/reference-app/bin/test.ts b/packages/reference-app/bin/test.ts index ff1a10a..aa5dac3 100644 --- a/packages/reference-app/bin/test.ts +++ b/packages/reference-app/bin/test.ts @@ -60,3 +60,6 @@ new Ignitor(APP_ROOT, { importer: IMPORTER }) process.exitCode = 1 prettyPrintError(error) }) + .then(() => { + process.exit() + }) diff --git a/packages/reference-app/docker-entrypoint.js b/packages/reference-app/docker-entrypoint.js new file mode 100755 index 0000000..2ee150e --- /dev/null +++ b/packages/reference-app/docker-entrypoint.js @@ -0,0 +1,23 @@ +#!/usr/bin/env node + +import { spawn } from 'node:child_process'; + +const env = { ...process.env } + +;(async () => { + // launch application + await exec(process.argv.slice(2).join(' ')) +})() + +function exec(command) { + const child = spawn(command, { shell: true, stdio: 'inherit', env }) + return new Promise((resolve, reject) => { + child.on('exit', (code) => { + if (code === 0) { + resolve() + } else { + reject(new Error(`${command} failed rc=${code}`)) + } + }) + }) +} diff --git a/packages/reference-app/fly.toml b/packages/reference-app/fly.toml new file mode 100644 index 0000000..ea3d3dc --- /dev/null +++ b/packages/reference-app/fly.toml @@ -0,0 +1,26 @@ +# fly.toml app configuration file generated for remix-adonisjs-reference-app on 2024-03-16T16:44:00+01:00 +# +# See https://fly.io/docs/reference/configuration/ for information about how to use this file. +# + +app = 'remix-adonisjs-reference-app' +primary_region = 'arn' + +[build] + +[[mounts]] + source = 'data' + destination = '/data' + +[http_service] + internal_port = 3000 + force_https = true + auto_stop_machines = true + auto_start_machines = true + min_machines_running = 0 + processes = ['app'] + +[[vm]] + memory = '512mb' + cpu_kind = 'shared' + cpus = 1 diff --git a/packages/reference-app/package.json b/packages/reference-app/package.json index ab84171..7040c2a 100644 --- a/packages/reference-app/package.json +++ b/packages/reference-app/package.json @@ -30,6 +30,7 @@ "@adonisjs/eslint-config": "^1.3.0", "@adonisjs/prettier-config": "^1.3.0", "@adonisjs/tsconfig": "^1.3.0", + "@flydotio/dockerfile": "^0.5.3", "@japa/assert": "^2.1.0", "@japa/plugin-adonisjs": "^3.0.0", "@japa/runner": "^3.1.1", @@ -53,7 +54,7 @@ "@adonisjs/session": "^7.1.1", "@adonisjs/shield": "^8.1.1", "@adonisjs/static": "^1.1.1", - "@adonisjs/vite": "^2.0.2", + "@adonisjs/vite": "^3.0.0-8", "@japa/api-client": "^2.0.2", "@japa/browser-client": "^2.0.2", "@matstack/remix-adonisjs": "*", diff --git a/packages/reference-app/public/assets/remix/client/client/_index-TgZEPvOu.js b/packages/reference-app/public/assets/remix/client/client/_index-TgZEPvOu.js new file mode 100644 index 0000000..3551934 --- /dev/null +++ b/packages/reference-app/public/assets/remix/client/client/_index-TgZEPvOu.js @@ -0,0 +1 @@ +import{j as e}from"./jsx-runtime-eUkJMm6l.js";const t=()=>[{title:"New Remix App"},{name:"description",content:"Welcome to Remix!"}];function i(){return e.jsxs("div",{children:[e.jsx("h1",{children:"Welcome to Remix"}),e.jsx("h2",{children:"...powered by AdonisJS 😎"}),e.jsxs("ul",{children:[e.jsx("li",{children:e.jsx("a",{target:"_blank",href:"https://remix.run/tutorials/blog",rel:"noreferrer",children:"15m Quickstart Blog Tutorial"})}),e.jsx("li",{children:e.jsx("a",{target:"_blank",href:"https://remix.run/tutorials/jokes",rel:"noreferrer",children:"Deep Dive Jokes App Tutorial"})}),e.jsx("li",{children:e.jsx("a",{target:"_blank",href:"https://remix.run/docs",rel:"noreferrer",children:"Remix Docs"})})]})]})}export{i as default,t as meta}; diff --git a/packages/reference-app/public/assets/remix/client/client/components-8brcXnEx.js b/packages/reference-app/public/assets/remix/client/client/components-8brcXnEx.js new file mode 100644 index 0000000..16accc4 --- /dev/null +++ b/packages/reference-app/public/assets/remix/client/client/components-8brcXnEx.js @@ -0,0 +1,219 @@ +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = [] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} +import{r as w,g as O_,R as __}from"./jsx-runtime-eUkJMm6l.js";import{N as vu,d as L_,R as M_,e as ks,a as Di,f as fp,D as vp,g as zs,h as U_,j as A_,k as pp,l as N_,b as k_,n as bb,p as z_,m as Cb,A as H_,o as F_,q as V_,s as B_}from"./index-FZYdsAyj.js";function j_(f,m){for(var v=0;vE[C]})}}}return Object.freeze(Object.defineProperty(f,Symbol.toStringTag,{value:"Module"}))}var Eb={exports:{}},Wt={},Rb={exports:{}},Tb={};(function(f){/** + * @license React + * scheduler.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */(function(){typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error);var m=!1,v=!1,E=5;function C(Y,W){var pe=Y.length;Y.push(W),U(Y,W,pe)}function D(Y){return Y.length===0?null:Y[0]}function s(Y){if(Y.length===0)return null;var W=Y[0],pe=Y.pop();return pe!==W&&(Y[0]=pe,N(Y,pe,0)),W}function U(Y,W,pe){for(var Ae=pe;Ae>0;){var Ve=Ae-1>>>1,Nt=Y[Ve];if(L(Nt,W)>0)Y[Ve]=W,Y[Ae]=Nt,Ae=Ve;else return}}function N(Y,W,pe){for(var Ae=pe,Ve=Y.length,Nt=Ve>>>1;Aepe&&(!Y||bu()));){var Ae=re.callback;if(typeof Ae=="function"){re.callback=null,_e=re.priorityLevel;var Ve=re.expirationTime<=pe,Nt=Ae(Ve);pe=f.unstable_now(),typeof Nt=="function"?re.callback=Nt:re===D(Re)&&s(Re),Oi(pe)}else s(Re);re=D(Re)}if(re!==null)return!0;var lt=D(Se);return lt!==null&&en(_i,lt.startTime-pe),!1}function gu(Y,W){switch(Y){case k:case x:case A:case z:case G:break;default:Y=A}var pe=_e;_e=Y;try{return W()}finally{_e=pe}}function Li(Y){var W;switch(_e){case k:case x:case A:W=A;break;default:W=_e;break}var pe=_e;_e=W;try{return Y()}finally{_e=pe}}function js(Y){var W=_e;return function(){var pe=_e;_e=W;try{return Y.apply(this,arguments)}finally{_e=pe}}}function Su(Y,W,pe){var Ae=f.unstable_now(),Ve;if(typeof pe=="object"&&pe!==null){var Nt=pe.delay;typeof Nt=="number"&&Nt>0?Ve=Ae+Nt:Ve=Ae}else Ve=Ae;var lt;switch(Y){case k:lt=X;break;case x:lt=ce;break;case G:lt=ge;break;case z:lt=xe;break;case A:default:lt=Q;break}var Ln=Ve+lt,$e={id:Zt++,callback:W,priorityLevel:Y,startTime:Ve,expirationTime:Ln,sortIndex:-1};return Ve>Ae?($e.sortIndex=Ve,C(Se,$e),D(Re)===null&&$e===D(Se)&&(Qa?Sa():Qa=!0,en(_i,Ve-Ae))):($e.sortIndex=Ln,C(Re,$e),!cn&&!ma&&(cn=!0,Ka(Xa))),$e}function Gn(){}function Mi(){!cn&&!ma&&(cn=!0,Ka(Xa))}function Qn(){return D(Re)}function ya(Y){Y.callback=null}function jt(){return _e}var It=!1,dn=null,On=-1,vn=E,ga=-1;function bu(){var Y=f.unstable_now()-ga;return!(Y125){console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported");return}Y>0?vn=Math.floor(1e3/Y):vn=E}var Ui=function(){if(dn!==null){var Y=f.unstable_now();ga=Y;var W=!0,pe=!0;try{pe=dn(W,Y)}finally{pe?_n():(It=!1,dn=null)}}else It=!1},_n;if(typeof wi=="function")_n=function(){wi(Ui)};else if(typeof MessageChannel<"u"){var Ja=new MessageChannel,Xn=Ja.port2;Ja.port1.onmessage=Ui,_n=function(){Xn.postMessage(null)}}else _n=function(){fn(Ui,0)};function Ka(Y){dn=Y,It||(It=!0,_n())}function en(Y,W){On=fn(function(){Y(f.unstable_now())},W)}function Sa(){yu(On),On=-1}var Cu=$s,Eu=null;f.unstable_IdlePriority=G,f.unstable_ImmediatePriority=k,f.unstable_LowPriority=z,f.unstable_NormalPriority=A,f.unstable_Profiling=Eu,f.unstable_UserBlockingPriority=x,f.unstable_cancelCallback=ya,f.unstable_continueExecution=Mi,f.unstable_forceFrameRate=Ys,f.unstable_getCurrentPriorityLevel=jt,f.unstable_getFirstCallbackNode=Qn,f.unstable_next=Li,f.unstable_pauseExecution=Gn,f.unstable_requestPaint=Cu,f.unstable_runWithPriority=gu,f.unstable_scheduleCallback=Su,f.unstable_shouldYield=bu,f.unstable_wrapCallback=js,typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error)})()})(Tb);Rb.exports=Tb;var $_=Rb.exports;/** + * @license React + * react-dom.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */(function(){typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error);var f=w,m=$_,v=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,E=!1;function C(e){E=e}function D(e){if(!E){for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;a1?t-1:0),a=1;a2&&(e[0]==="o"||e[0]==="O")&&(e[1]==="n"||e[1]==="N")}function Ln(e,t,n,a){if(n!==null&&n.type===Ja)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":{if(a)return!1;if(n!==null)return!n.acceptsBooleans;var r=e.toLowerCase().slice(0,5);return r!=="data-"&&r!=="aria-"}default:return!1}}function $e(e,t,n,a){if(t===null||typeof t>"u"||Ln(e,t,n,a))return!0;if(a)return!1;if(n!==null)switch(n.type){case en:return!t;case Sa:return t===!1;case Cu:return isNaN(t);case Eu:return isNaN(t)||t<1}return!1}function ba(e){return ut.hasOwnProperty(e)?ut[e]:null}function Rt(e,t,n,a,r,i,l){this.acceptsBooleans=t===Ka||t===en||t===Sa,this.attributeName=a,this.attributeNamespace=r,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=l}var ut={},Hb=["children","dangerouslySetInnerHTML","defaultValue","defaultChecked","innerHTML","suppressContentEditableWarning","suppressHydrationWarning","style"];Hb.forEach(function(e){ut[e]=new Rt(e,Ja,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0],n=e[1];ut[t]=new Rt(t,Xn,!1,n,null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){ut[e]=new Rt(e,Ka,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){ut[e]=new Rt(e,Ka,!1,e,null,!1,!1)}),["allowFullScreen","async","autoFocus","autoPlay","controls","default","defer","disabled","disablePictureInPicture","disableRemotePlayback","formNoValidate","hidden","loop","noModule","noValidate","open","playsInline","readOnly","required","reversed","scoped","seamless","itemScope"].forEach(function(e){ut[e]=new Rt(e,en,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){ut[e]=new Rt(e,en,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){ut[e]=new Rt(e,Sa,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){ut[e]=new Rt(e,Eu,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){ut[e]=new Rt(e,Cu,!1,e.toLowerCase(),null,!1,!1)});var qs=/[\-\:]([a-z])/g,Gs=function(e){return e[1].toUpperCase()};["accent-height","alignment-baseline","arabic-form","baseline-shift","cap-height","clip-path","clip-rule","color-interpolation","color-interpolation-filters","color-profile","color-rendering","dominant-baseline","enable-background","fill-opacity","fill-rule","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","glyph-name","glyph-orientation-horizontal","glyph-orientation-vertical","horiz-adv-x","horiz-origin-x","image-rendering","letter-spacing","lighting-color","marker-end","marker-mid","marker-start","overline-position","overline-thickness","paint-order","panose-1","pointer-events","rendering-intent","shape-rendering","stop-color","stop-opacity","strikethrough-position","strikethrough-thickness","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-anchor","text-decoration","text-rendering","underline-position","underline-thickness","unicode-bidi","unicode-range","units-per-em","v-alphabetic","v-hanging","v-ideographic","v-mathematical","vector-effect","vert-adv-y","vert-origin-x","vert-origin-y","word-spacing","writing-mode","xmlns:xlink","x-height"].forEach(function(e){var t=e.replace(qs,Gs);ut[t]=new Rt(t,Xn,!1,e,null,!1,!1)}),["xlink:actuate","xlink:arcrole","xlink:role","xlink:show","xlink:title","xlink:type"].forEach(function(e){var t=e.replace(qs,Gs);ut[t]=new Rt(t,Xn,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(qs,Gs);ut[t]=new Rt(t,Xn,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){ut[e]=new Rt(e,Xn,!1,e.toLowerCase(),null,!1,!1)});var Fb="xlinkHref";ut[Fb]=new Rt("xlinkHref",Xn,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){ut[e]=new Rt(e,Xn,!1,e.toLowerCase(),null,!0,!0)});var Vb=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*\:/i,Rp=!1;function Tp(e){!Rp&&Vb.test(e)&&(Rp=!0,s("A future version of React will block javascript: URLs as a security precaution. Use event handlers instead if you can. If you need to generate unsafe HTML try using dangerouslySetInnerHTML instead. React was passed %s.",JSON.stringify(e)))}function Bb(e,t,n,a){if(a.mustUseProperty){var r=a.propertyName;return e[r]}else{ga(n,t),a.sanitizeURL&&Tp(""+n);var i=a.attributeName,l=null;if(a.type===Sa){if(e.hasAttribute(i)){var u=e.getAttribute(i);return u===""?!0:$e(t,n,a,!1)?u:u===""+n?n:u}}else if(e.hasAttribute(i)){if($e(t,n,a,!1))return e.getAttribute(i);if(a.type===en)return n;l=e.getAttribute(i)}return $e(t,n,a,!1)?l===null?n:l:l===""+n?n:l}}function xp(e,t,n,a){{if(!Nt(t))return;if(!e.hasAttribute(t))return n===void 0?void 0:null;var r=e.getAttribute(t);return ga(n,t),r===""+n?n:r}}function Qs(e,t,n,a){var r=ba(t);if(!lt(t,r,a)){if($e(t,n,r,a)&&(n=null),a||r===null){if(Nt(t)){var i=t;n===null?e.removeAttribute(i):(ga(n,t),e.setAttribute(i,""+n))}return}var l=r.mustUseProperty;if(l){var u=r.propertyName;if(n===null){var o=r.type;e[u]=o===en?!1:""}else e[u]=n;return}var c=r.attributeName,d=r.attributeNamespace;if(n===null)e.removeAttribute(c);else{var h=r.type,p;h===en||h===Sa&&n===!0?p="":(ga(n,c),p=""+n,r.sanitizeURL&&Tp(p.toString())),d?e.setAttributeNS(d,c,p):e.setAttribute(c,p)}}}var _r=Symbol.for("react.element"),Pa=Symbol.for("react.portal"),Lr=Symbol.for("react.fragment"),Xs=Symbol.for("react.strict_mode"),Js=Symbol.for("react.profiler"),Ks=Symbol.for("react.provider"),Ps=Symbol.for("react.context"),Mr=Symbol.for("react.forward_ref"),Ru=Symbol.for("react.suspense"),Tu=Symbol.for("react.suspense_list"),Ai=Symbol.for("react.memo"),Tt=Symbol.for("react.lazy"),jb=Symbol.for("react.scope"),$b=Symbol.for("react.debug_trace_mode"),Dp=Symbol.for("react.offscreen"),Yb=Symbol.for("react.legacy_hidden"),qb=Symbol.for("react.cache"),Gb=Symbol.for("react.tracing_marker"),wp=Symbol.iterator,Qb="@@iterator";function Wa(e){if(e===null||typeof e!="object")return null;var t=wp&&e[wp]||e[Qb];return typeof t=="function"?t:null}var he=Object.assign,Ni=0,Op,_p,Lp,Mp,Up,Ap,Np;function kp(){}kp.__reactDisabledLog=!0;function Xb(){{if(Ni===0){Op=console.log,_p=console.info,Lp=console.warn,Mp=console.error,Up=console.group,Ap=console.groupCollapsed,Np=console.groupEnd;var e={configurable:!0,enumerable:!0,value:kp,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}Ni++}}function Jb(){{if(Ni--,Ni===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:he({},e,{value:Op}),info:he({},e,{value:_p}),warn:he({},e,{value:Lp}),error:he({},e,{value:Mp}),group:he({},e,{value:Up}),groupCollapsed:he({},e,{value:Ap}),groupEnd:he({},e,{value:Np})})}Ni<0&&s("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var Ws=v.ReactCurrentDispatcher,Zs;function Ca(e,t,n){{if(Zs===void 0)try{throw Error()}catch(r){var a=r.stack.trim().match(/\n( *(at )?)/);Zs=a&&a[1]||""}return` +`+Zs+e}}var Is=!1,xu;{var Kb=typeof WeakMap=="function"?WeakMap:Map;xu=new Kb}function ec(e,t){if(!e||Is)return"";{var n=xu.get(e);if(n!==void 0)return n}var a;Is=!0;var r=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var i;i=Ws.current,Ws.current=null,Xb();try{if(t){var l=function(){throw Error()};if(Object.defineProperty(l.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(l,[])}catch(b){a=b}Reflect.construct(e,[],l)}else{try{l.call()}catch(b){a=b}e.call(l.prototype)}}else{try{throw Error()}catch(b){a=b}e()}}catch(b){if(b&&a&&typeof b.stack=="string"){for(var u=b.stack.split(` +`),o=a.stack.split(` +`),c=u.length-1,d=o.length-1;c>=1&&d>=0&&u[c]!==o[d];)d--;for(;c>=1&&d>=0;c--,d--)if(u[c]!==o[d]){if(c!==1||d!==1)do if(c--,d--,d<0||u[c]!==o[d]){var h=` +`+u[c].replace(" at new "," at ");return e.displayName&&h.includes("")&&(h=h.replace("",e.displayName)),typeof e=="function"&&xu.set(e,h),h}while(c>=1&&d>=0);break}}}finally{Is=!1,Ws.current=i,Jb(),Error.prepareStackTrace=r}var p=e?e.displayName||e.name:"",S=p?Ca(p):"";return typeof e=="function"&&xu.set(e,S),S}function Pb(e,t,n){return ec(e,!0)}function tc(e,t,n){return ec(e,!1)}function Wb(e){var t=e.prototype;return!!(t&&t.isReactComponent)}function nc(e,t,n){if(e==null)return"";if(typeof e=="function")return ec(e,Wb(e));if(typeof e=="string")return Ca(e);switch(e){case Ru:return Ca("Suspense");case Tu:return Ca("SuspenseList")}if(typeof e=="object")switch(e.$$typeof){case Mr:return tc(e.render);case Ai:return nc(e.type,t,n);case Tt:{var a=e,r=a._payload,i=a._init;try{return nc(i(r),t,n)}catch{}}}return""}function Zb(e){switch(e._debugOwner&&e._debugOwner.type,e._debugSource,e.tag){case z:return Ca(e.type);case xe:return Ca("Lazy");case X:return Ca("Suspense");case Se:return Ca("SuspenseList");case N:case k:case Q:return tc(e.type);case P:return tc(e.type.render);case L:return Pb(e.type);default:return""}}function zp(e){try{var t="",n=e;do t+=Zb(n),n=n.return;while(n);return t}catch(a){return` +Error generating stack: `+a.message+` +`+a.stack}}function Ib(e,t,n){var a=e.displayName;if(a)return a;var r=t.displayName||t.name||"";return r!==""?n+"("+r+")":n}function Hp(e){return e.displayName||"Context"}function Ne(e){if(e==null)return null;if(typeof e.tag=="number"&&s("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Lr:return"Fragment";case Pa:return"Portal";case Js:return"Profiler";case Xs:return"StrictMode";case Ru:return"Suspense";case Tu:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Ps:var t=e;return Hp(t)+".Consumer";case Ks:var n=e;return Hp(n._context)+".Provider";case Mr:return Ib(e,e.render,"ForwardRef");case Ai:var a=e.displayName||null;return a!==null?a:Ne(e.type)||"Memo";case Tt:{var r=e,i=r._payload,l=r._init;try{return Ne(l(i))}catch{return null}}}return null}function eC(e,t,n){var a=t.displayName||t.name||"";return e.displayName||(a!==""?n+"("+a+")":n)}function Fp(e){return e.displayName||"Context"}function le(e){var t=e.tag,n=e.type;switch(t){case ma:return"Cache";case Me:var a=n;return Fp(a)+".Consumer";case ie:var r=n;return Fp(r._context)+".Provider";case Re:return"DehydratedFragment";case P:return eC(n,n.render,"ForwardRef");case Le:return"Fragment";case z:return n;case A:return"Portal";case x:return"Root";case G:return"Text";case xe:return Ne(n);case ye:return n===Xs?"StrictMode":"Mode";case re:return"Offscreen";case se:return"Profiler";case Zt:return"Scope";case X:return"Suspense";case Se:return"SuspenseList";case cn:return"TracingMarker";case L:case N:case ge:case k:case ce:case Q:if(typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n;break}return null}var Vp=v.ReactDebugCurrentFrame,$t=null,ki=!1;function zi(){{if($t===null)return null;var e=$t._debugOwner;if(e!==null&&typeof e<"u")return le(e)}return null}function tC(){return $t===null?"":zp($t)}function xt(){Vp.getCurrentStack=null,$t=null,ki=!1}function Be(e){Vp.getCurrentStack=e===null?null:tC,$t=e,ki=!1}function nC(){return $t}function Mn(e){ki=e}function tn(e){return""+e}function Ea(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return _n(e),e;default:return""}}var aC={button:!0,checkbox:!0,image:!0,hidden:!0,radio:!0,reset:!0,submit:!0};function ac(e,t){aC[t.type]||t.onChange||t.onInput||t.readOnly||t.disabled||t.value==null||s("You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`."),t.onChange||t.readOnly||t.disabled||t.checked==null||s("You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`.")}function Bp(e){var t=e.type,n=e.nodeName;return n&&n.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function jp(e){return e._valueTracker}function rC(e){e._valueTracker=null}function iC(e){var t="";return e&&(Bp(e)?t=e.checked?"true":"false":t=e.value),t}function lC(e){var t=Bp(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);_n(e[t]);var a=""+e[t];if(!(e.hasOwnProperty(t)||typeof n>"u"||typeof n.get!="function"||typeof n.set!="function")){var r=n.get,i=n.set;Object.defineProperty(e,t,{configurable:!0,get:function(){return r.call(this)},set:function(u){_n(u),a=""+u,i.call(this,u)}}),Object.defineProperty(e,t,{enumerable:n.enumerable});var l={getValue:function(){return a},setValue:function(u){_n(u),a=""+u},stopTracking:function(){rC(e),delete e[t]}};return l}}function Du(e){jp(e)||(e._valueTracker=lC(e))}function $p(e){if(!e)return!1;var t=jp(e);if(!t)return!0;var n=t.getValue(),a=iC(e);return a!==n?(t.setValue(a),!0):!1}function wu(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var Yp=!1,qp=!1,Gp=!1,Qp=!1;function Xp(e){var t=e.type==="checkbox"||e.type==="radio";return t?e.checked!=null:e.value!=null}function rc(e,t){var n=e,a=t.checked,r=he({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:a??n._wrapperState.initialChecked});return r}function Jp(e,t){ac("input",t),t.checked!==void 0&&t.defaultChecked!==void 0&&!qp&&(s("%s contains an input of type %s with both checked and defaultChecked props. Input elements must be either controlled or uncontrolled (specify either the checked prop, or the defaultChecked prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://reactjs.org/link/controlled-components",zi()||"A component",t.type),qp=!0),t.value!==void 0&&t.defaultValue!==void 0&&!Yp&&(s("%s contains an input of type %s with both value and defaultValue props. Input elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://reactjs.org/link/controlled-components",zi()||"A component",t.type),Yp=!0);var n=e,a=t.defaultValue==null?"":t.defaultValue;n._wrapperState={initialChecked:t.checked!=null?t.checked:t.defaultChecked,initialValue:Ea(t.value!=null?t.value:a),controlled:Xp(t)}}function Kp(e,t){var n=e,a=t.checked;a!=null&&Qs(n,"checked",a,!1)}function ic(e,t){var n=e;{var a=Xp(t);!n._wrapperState.controlled&&a&&!Qp&&(s("A component is changing an uncontrolled input to be controlled. This is likely caused by the value changing from undefined to a defined value, which should not happen. Decide between using a controlled or uncontrolled input element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components"),Qp=!0),n._wrapperState.controlled&&!a&&!Gp&&(s("A component is changing a controlled input to be uncontrolled. This is likely caused by the value changing from a defined to undefined, which should not happen. Decide between using a controlled or uncontrolled input element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components"),Gp=!0)}Kp(e,t);var r=Ea(t.value),i=t.type;if(r!=null)i==="number"?(r===0&&n.value===""||n.value!=r)&&(n.value=tn(r)):n.value!==tn(r)&&(n.value=tn(r));else if(i==="submit"||i==="reset"){n.removeAttribute("value");return}t.hasOwnProperty("value")?lc(n,t.type,r):t.hasOwnProperty("defaultValue")&&lc(n,t.type,Ea(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(n.defaultChecked=!!t.defaultChecked)}function Pp(e,t,n){var a=e;if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type,i=r==="submit"||r==="reset";if(i&&(t.value===void 0||t.value===null))return;var l=tn(a._wrapperState.initialValue);n||l!==a.value&&(a.value=l),a.defaultValue=l}var u=a.name;u!==""&&(a.name=""),a.defaultChecked=!a.defaultChecked,a.defaultChecked=!!a._wrapperState.initialChecked,u!==""&&(a.name=u)}function uC(e,t){var n=e;ic(n,t),oC(n,t)}function oC(e,t){var n=t.name;if(t.type==="radio"&&n!=null){for(var a=e;a.parentNode;)a=a.parentNode;ga(n,"name");for(var r=a.querySelectorAll("input[name="+JSON.stringify(""+n)+'][type="radio"]'),i=0;i.")))}):t.dangerouslySetInnerHTML!=null&&(Ip||(Ip=!0,s("Pass a `value` prop if you set dangerouslyInnerHTML so React knows which value should be selected.")))),t.selected!=null&&!Wp&&(s("Use the `defaultValue` or `value` props on must be a scalar value if `multiple` is false.%s",n,th())}}}}function Ur(e,t,n,a){var r=e.options;if(t){for(var i=n,l={},u=0;u.");var a=he({},t,{value:void 0,defaultValue:void 0,children:tn(n._wrapperState.initialValue)});return a}function ih(e,t){var n=e;ac("textarea",t),t.value!==void 0&&t.defaultValue!==void 0&&!rh&&(s("%s contains a textarea with both value and defaultValue props. Textarea elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled textarea and remove one of these props. More info: https://reactjs.org/link/controlled-components",zi()||"A component"),rh=!0);var a=t.value;if(a==null){var r=t.children,i=t.defaultValue;if(r!=null){s("Use the `defaultValue` or `value` props instead of setting children on