diff --git a/.gitattributes b/.gitattributes index c7707166..f7f5bc04 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,2 @@ -lightrag/api/webui/** -diff +lightrag/api/webui/** binary +lightrag/api/webui/** linguist-generated diff --git a/README.md b/README.md index c9a35260..eb2575e7 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,7 @@ This repository hosts the code of LightRAG. The structure of this code is based 🎉 News +- [X] [2025.03.18]🎯📢LightRAG now supports citation functionality. - [X] [2025.02.05]🎯📢Our team has released [VideoRAG](https://github.com/HKUDS/VideoRAG) understanding extremely long-context videos. - [X] [2025.01.13]🎯📢Our team has released [MiniRAG](https://github.com/HKUDS/MiniRAG) making RAG simpler with small models. - [X] [2025.01.06]🎯📢You can now [use PostgreSQL for Storage](#using-postgresql-for-storage). @@ -673,6 +674,22 @@ rag.insert(text_content.decode('utf-8')) +
+ Citation Functionality + +By providing file paths, the system ensures that sources can be traced back to their original documents. + +```python +# Define documents and their file paths +documents = ["Document content 1", "Document content 2"] +file_paths = ["path/to/doc1.txt", "path/to/doc2.txt"] + +# Insert documents with file paths +rag.insert(documents, file_paths=file_paths) +``` + +
+ ## Storage
diff --git a/env.example b/env.example index 66d209ad..fffa89a4 100644 --- a/env.example +++ b/env.example @@ -73,6 +73,8 @@ LLM_BINDING_HOST=http://localhost:11434 ### Embedding Configuration (Use valid host. For local services installed with docker, you can use host.docker.internal) EMBEDDING_MODEL=bge-m3:latest EMBEDDING_DIM=1024 +EMBEDDING_BATCH_NUM=32 +EMBEDDING_FUNC_MAX_ASYNC=16 # EMBEDDING_BINDING_API_KEY=your_api_key ### ollama example EMBEDDING_BINDING=ollama @@ -151,9 +153,9 @@ QDRANT_URL=http://localhost:16333 ### Redis REDIS_URI=redis://localhost:6379 -# For jwt auth -AUTH_USERNAME=admin # login name -AUTH_PASSWORD=admin123 # password -TOKEN_SECRET=your-key # JWT key -TOKEN_EXPIRE_HOURS=4 # expire duration +### For JWTt Auth +AUTH_USERNAME=admin # login name +AUTH_PASSWORD=admin123 # password +TOKEN_SECRET=your-key-for-LightRAG-API-Server # JWT key +TOKEN_EXPIRE_HOURS=4 # expire duration WHITELIST_PATHS=/login,/health # white list diff --git a/lightrag/__init__.py b/lightrag/__init__.py index 89475dca..f7dee888 100644 --- a/lightrag/__init__.py +++ b/lightrag/__init__.py @@ -1,5 +1,5 @@ from .lightrag import LightRAG as LightRAG, QueryParam as QueryParam -__version__ = "1.2.6" +__version__ = "1.2.7" __author__ = "Zirui Guo" __url__ = "https://github.com/HKUDS/LightRAG" diff --git a/lightrag/api/auth.py b/lightrag/api/auth.py index 4d905de8..5d9b00ac 100644 --- a/lightrag/api/auth.py +++ b/lightrag/api/auth.py @@ -3,11 +3,16 @@ from datetime import datetime, timedelta import jwt from fastapi import HTTPException, status from pydantic import BaseModel +from dotenv import load_dotenv + +load_dotenv() class TokenPayload(BaseModel): - sub: str - exp: datetime + sub: str # Username + exp: datetime # Expiration time + role: str = "user" # User role, default is regular user + metadata: dict = {} # Additional metadata class AuthHandler: @@ -15,13 +20,60 @@ class AuthHandler: self.secret = os.getenv("TOKEN_SECRET", "4f85ds4f56dsf46") self.algorithm = "HS256" self.expire_hours = int(os.getenv("TOKEN_EXPIRE_HOURS", 4)) + self.guest_expire_hours = int( + os.getenv("GUEST_TOKEN_EXPIRE_HOURS", 2) + ) # Guest token default expiration time + + def create_token( + self, + username: str, + role: str = "user", + custom_expire_hours: int = None, + metadata: dict = None, + ) -> str: + """ + Create JWT token + + Args: + username: Username + role: User role, default is "user", guest is "guest" + custom_expire_hours: Custom expiration time (hours), if None use default value + metadata: Additional metadata + + Returns: + str: Encoded JWT token + """ + # Choose default expiration time based on role + if custom_expire_hours is None: + if role == "guest": + expire_hours = self.guest_expire_hours + else: + expire_hours = self.expire_hours + else: + expire_hours = custom_expire_hours + + expire = datetime.utcnow() + timedelta(hours=expire_hours) + + # Create payload + payload = TokenPayload( + sub=username, exp=expire, role=role, metadata=metadata or {} + ) - def create_token(self, username: str) -> str: - expire = datetime.utcnow() + timedelta(hours=self.expire_hours) - payload = TokenPayload(sub=username, exp=expire) return jwt.encode(payload.dict(), self.secret, algorithm=self.algorithm) - def validate_token(self, token: str) -> str: + def validate_token(self, token: str) -> dict: + """ + Validate JWT token + + Args: + token: JWT token + + Returns: + dict: Dictionary containing user information + + Raises: + HTTPException: If token is invalid or expired + """ try: payload = jwt.decode(token, self.secret, algorithms=[self.algorithm]) expire_timestamp = payload["exp"] @@ -31,7 +83,14 @@ class AuthHandler: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Token expired" ) - return payload["sub"] + + # Return complete payload instead of just username + return { + "username": payload["sub"], + "role": payload.get("role", "user"), + "metadata": payload.get("metadata", {}), + "exp": expire_time, + } except jwt.PyJWTError: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid token" diff --git a/lightrag/api/gunicorn_config.py b/lightrag/api/gunicorn_config.py index 23e46807..0aef108e 100644 --- a/lightrag/api/gunicorn_config.py +++ b/lightrag/api/gunicorn_config.py @@ -29,7 +29,9 @@ preload_app = True worker_class = "uvicorn.workers.UvicornWorker" # Other Gunicorn configurations -timeout = int(os.getenv("TIMEOUT", 150)) # Default 150s to match run_with_gunicorn.py +timeout = int( + os.getenv("TIMEOUT", 150 * 2) +) # Default 150s *2 to match run_with_gunicorn.py keepalive = int(os.getenv("KEEPALIVE", 5)) # Default 5s # Logging configuration diff --git a/lightrag/api/lightrag_server.py b/lightrag/api/lightrag_server.py index ca4425e5..6c8d11f1 100644 --- a/lightrag/api/lightrag_server.py +++ b/lightrag/api/lightrag_server.py @@ -10,6 +10,7 @@ import logging.config import uvicorn import pipmaster as pm from fastapi.staticfiles import StaticFiles +from fastapi.responses import RedirectResponse from pathlib import Path import configparser from ascii_colors import ASCIIColors @@ -48,7 +49,7 @@ from .auth import auth_handler # Load environment variables # Updated to use the .env that is inside the current folder # This update allows the user to put a different.env file for each lightrag folder -load_dotenv(".env", override=True) +load_dotenv() # Initialize config parser config = configparser.ConfigParser() @@ -341,25 +342,62 @@ def create_app(args): ollama_api = OllamaAPI(rag, top_k=args.top_k) app.include_router(ollama_api.router, prefix="/api") - @app.post("/login") + @app.get("/") + async def redirect_to_webui(): + """Redirect root path to /webui""" + return RedirectResponse(url="/webui") + + @app.get("/auth-status", dependencies=[Depends(optional_api_key)]) + async def get_auth_status(): + """Get authentication status and guest token if auth is not configured""" + username = os.getenv("AUTH_USERNAME") + password = os.getenv("AUTH_PASSWORD") + + if not (username and password): + # Authentication not configured, return guest token + guest_token = auth_handler.create_token( + username="guest", role="guest", metadata={"auth_mode": "disabled"} + ) + return { + "auth_configured": False, + "access_token": guest_token, + "token_type": "bearer", + "auth_mode": "disabled", + "message": "Authentication is disabled. Using guest access.", + } + + return {"auth_configured": True, "auth_mode": "enabled"} + + @app.post("/login", dependencies=[Depends(optional_api_key)]) async def login(form_data: OAuth2PasswordRequestForm = Depends()): username = os.getenv("AUTH_USERNAME") password = os.getenv("AUTH_PASSWORD") if not (username and password): - raise HTTPException( - status_code=status.HTTP_501_NOT_IMPLEMENTED, - detail="Authentication not configured", + # Authentication not configured, return guest token + guest_token = auth_handler.create_token( + username="guest", role="guest", metadata={"auth_mode": "disabled"} ) + return { + "access_token": guest_token, + "token_type": "bearer", + "auth_mode": "disabled", + "message": "Authentication is disabled. Using guest access.", + } if form_data.username != username or form_data.password != password: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Incorrect credentials" ) + # Regular user login + user_token = auth_handler.create_token( + username=username, role="user", metadata={"auth_mode": "enabled"} + ) return { - "access_token": auth_handler.create_token(username), + "access_token": user_token, "token_type": "bearer", + "auth_mode": "enabled", } @app.get("/health", dependencies=[Depends(optional_api_key)]) diff --git a/lightrag/api/routers/document_routes.py b/lightrag/api/routers/document_routes.py index 7b6f11c1..e0c8f545 100644 --- a/lightrag/api/routers/document_routes.py +++ b/lightrag/api/routers/document_routes.py @@ -405,7 +405,7 @@ async def pipeline_index_file(rag: LightRAG, file_path: Path): async def pipeline_index_files(rag: LightRAG, file_paths: List[Path]): - """Index multiple files concurrently + """Index multiple files sequentially to avoid high CPU load Args: rag: LightRAG instance @@ -416,12 +416,12 @@ async def pipeline_index_files(rag: LightRAG, file_paths: List[Path]): try: enqueued = False - if len(file_paths) == 1: - enqueued = await pipeline_enqueue_file(rag, file_paths[0]) - else: - tasks = [pipeline_enqueue_file(rag, path) for path in file_paths] - enqueued = any(await asyncio.gather(*tasks)) + # Process files sequentially + for file_path in file_paths: + if await pipeline_enqueue_file(rag, file_path): + enqueued = True + # Process the queue only if at least one file was successfully enqueued if enqueued: await rag.apipeline_process_enqueue_documents() except Exception as e: @@ -472,14 +472,34 @@ async def run_scanning_process(rag: LightRAG, doc_manager: DocumentManager): total_files = len(new_files) logger.info(f"Found {total_files} new files to index.") - for idx, file_path in enumerate(new_files): - try: - await pipeline_index_file(rag, file_path) - except Exception as e: - logger.error(f"Error indexing file {file_path}: {str(e)}") + if not new_files: + return + + # Get MAX_PARALLEL_INSERT from global_args + max_parallel = global_args["max_parallel_insert"] + # Calculate batch size as 2 * MAX_PARALLEL_INSERT + batch_size = 2 * max_parallel + + # Process files in batches + for i in range(0, total_files, batch_size): + batch_files = new_files[i : i + batch_size] + batch_num = i // batch_size + 1 + total_batches = (total_files + batch_size - 1) // batch_size + + logger.info( + f"Processing batch {batch_num}/{total_batches} with {len(batch_files)} files" + ) + await pipeline_index_files(rag, batch_files) + + # Log progress + processed = min(i + batch_size, total_files) + logger.info( + f"Processed {processed}/{total_files} files ({processed/total_files*100:.1f}%)" + ) except Exception as e: logger.error(f"Error during scanning process: {str(e)}") + logger.error(traceback.format_exc()) def create_document_routes( diff --git a/lightrag/api/run_with_gunicorn.py b/lightrag/api/run_with_gunicorn.py index cf9b3b91..126d772d 100644 --- a/lightrag/api/run_with_gunicorn.py +++ b/lightrag/api/run_with_gunicorn.py @@ -13,7 +13,7 @@ from dotenv import load_dotenv # Updated to use the .env that is inside the current folder # This update allows the user to put a different.env file for each lightrag folder -load_dotenv(".env") +load_dotenv() def check_and_install_dependencies(): @@ -140,7 +140,7 @@ def main(): # Timeout configuration prioritizes command line arguments gunicorn_config.timeout = ( - args.timeout if args.timeout else int(os.getenv("TIMEOUT", 150)) + args.timeout if args.timeout * 2 else int(os.getenv("TIMEOUT", 150 * 2)) ) # Keepalive configuration diff --git a/lightrag/api/utils_api.py b/lightrag/api/utils_api.py index 88a0132c..25136bd2 100644 --- a/lightrag/api/utils_api.py +++ b/lightrag/api/utils_api.py @@ -9,14 +9,14 @@ import sys import logging from ascii_colors import ASCIIColors from lightrag.api import __api_version__ -from fastapi import HTTPException, Security, Depends, Request +from fastapi import HTTPException, Security, Depends, Request, status from dotenv import load_dotenv from fastapi.security import APIKeyHeader, OAuth2PasswordBearer from starlette.status import HTTP_403_FORBIDDEN from .auth import auth_handler # Load environment variables -load_dotenv(override=True) +load_dotenv() global_args = {"main_args": None} @@ -35,19 +35,46 @@ ollama_server_infos = OllamaServerInfos() def get_auth_dependency(): - whitelist = os.getenv("WHITELIST_PATHS", "").split(",") + # Set default whitelist paths + whitelist = os.getenv("WHITELIST_PATHS", "/login,/health").split(",") async def dependency( request: Request, token: str = Depends(OAuth2PasswordBearer(tokenUrl="login", auto_error=False)), ): + # Check if authentication is configured + auth_configured = bool( + os.getenv("AUTH_USERNAME") and os.getenv("AUTH_PASSWORD") + ) + + # If authentication is not configured, skip all validation + if not auth_configured: + return + + # For configured auth, allow whitelist paths without token if request.url.path in whitelist: return - if not (os.getenv("AUTH_USERNAME") and os.getenv("AUTH_PASSWORD")): - return + # Require token for all other paths when auth is configured + if not token: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, detail="Token required" + ) - auth_handler.validate_token(token) + try: + token_info = auth_handler.validate_token(token) + # Reject guest tokens when authentication is configured + if token_info.get("role") == "guest": + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Authentication required. Guest access not allowed when authentication is configured.", + ) + except Exception: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid token" + ) + + return return dependency @@ -338,6 +365,9 @@ def parse_args(is_uvicorn_mode: bool = False) -> argparse.Namespace: "LIGHTRAG_VECTOR_STORAGE", DefaultRAGStorageConfig.VECTOR_STORAGE ) + # Get MAX_PARALLEL_INSERT from environment + global_args["max_parallel_insert"] = get_env_value("MAX_PARALLEL_INSERT", 2, int) + # Handle openai-ollama special case if args.llm_binding == "openai-ollama": args.llm_binding = "openai" @@ -414,8 +444,8 @@ def display_splash_screen(args: argparse.Namespace) -> None: ASCIIColors.yellow(f"{args.log_level}") ASCIIColors.white(" ├─ Verbose Debug: ", end="") ASCIIColors.yellow(f"{args.verbose}") - ASCIIColors.white(" ├─ Timeout: ", end="") - ASCIIColors.yellow(f"{args.timeout if args.timeout else 'None (infinite)'}") + ASCIIColors.white(" ├─ History Turns: ", end="") + ASCIIColors.yellow(f"{args.history_turns}") ASCIIColors.white(" └─ API Key: ", end="") ASCIIColors.yellow("Set" if args.key else "Not Set") @@ -432,8 +462,10 @@ def display_splash_screen(args: argparse.Namespace) -> None: ASCIIColors.yellow(f"{args.llm_binding}") ASCIIColors.white(" ├─ Host: ", end="") ASCIIColors.yellow(f"{args.llm_binding_host}") - ASCIIColors.white(" └─ Model: ", end="") + ASCIIColors.white(" ├─ Model: ", end="") ASCIIColors.yellow(f"{args.llm_model}") + ASCIIColors.white(" └─ Timeout: ", end="") + ASCIIColors.yellow(f"{args.timeout if args.timeout else 'None (infinite)'}") # Embedding Configuration ASCIIColors.magenta("\n📊 Embedding Configuration:") @@ -448,8 +480,10 @@ def display_splash_screen(args: argparse.Namespace) -> None: # RAG Configuration ASCIIColors.magenta("\n⚙️ RAG Configuration:") - ASCIIColors.white(" ├─ Max Async Operations: ", end="") + ASCIIColors.white(" ├─ Max Async for LLM: ", end="") ASCIIColors.yellow(f"{args.max_async}") + ASCIIColors.white(" ├─ Max Parallel Insert: ", end="") + ASCIIColors.yellow(f"{global_args['max_parallel_insert']}") ASCIIColors.white(" ├─ Max Tokens: ", end="") ASCIIColors.yellow(f"{args.max_tokens}") ASCIIColors.white(" ├─ Max Embed Tokens: ", end="") @@ -458,8 +492,6 @@ def display_splash_screen(args: argparse.Namespace) -> None: ASCIIColors.yellow(f"{args.chunk_size}") ASCIIColors.white(" ├─ Chunk Overlap Size: ", end="") ASCIIColors.yellow(f"{args.chunk_overlap_size}") - ASCIIColors.white(" ├─ History Turns: ", end="") - ASCIIColors.yellow(f"{args.history_turns}") ASCIIColors.white(" ├─ Cosine Threshold: ", end="") ASCIIColors.yellow(f"{args.cosine_threshold}") ASCIIColors.white(" ├─ Top-K: ", end="") diff --git a/lightrag/api/webui/assets/index-DwcJE583.js b/lightrag/api/webui/assets/index-4I5HV9Fr.js similarity index 51% rename from lightrag/api/webui/assets/index-DwcJE583.js rename to lightrag/api/webui/assets/index-4I5HV9Fr.js index a0023133..297c5542 100644 --- a/lightrag/api/webui/assets/index-DwcJE583.js +++ b/lightrag/api/webui/assets/index-4I5HV9Fr.js @@ -1,4 +1,4 @@ -var J6=Object.defineProperty;var e$=(e,t,n)=>t in e?J6(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Ta=(e,t,n)=>e$(e,typeof t!="symbol"?t+"":t,n);function t$(e,t){for(var n=0;nr[a]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))r(a);new MutationObserver(a=>{for(const i of a)if(i.type==="childList")for(const s of i.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function n(a){const i={};return a.integrity&&(i.integrity=a.integrity),a.referrerPolicy&&(i.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?i.credentials="include":a.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(a){if(a.ep)return;a.ep=!0;const i=n(a);fetch(a.href,i)}})();var Gd=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ln(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function n$(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function r(){return this instanceof r?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}),n}var Sh={exports:{}},Ul={};/** +var l9=Object.defineProperty;var u9=(e,t,n)=>t in e?l9(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Xr=(e,t,n)=>u9(e,typeof t!="symbol"?t+"":t,n);function c9(e,t){for(var n=0;nr[a]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))r(a);new MutationObserver(a=>{for(const o of a)if(o.type==="childList")for(const s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function n(a){const o={};return a.integrity&&(o.integrity=a.integrity),a.referrerPolicy&&(o.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?o.credentials="include":a.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(a){if(a.ep)return;a.ep=!0;const o=n(a);fetch(a.href,o)}})();var df=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function un(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function d9(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function r(){return this instanceof r?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}),n}var $h={exports:{}},Xl={};/** * @license React * react-jsx-runtime.production.js * @@ -6,15 +6,7 @@ var J6=Object.defineProperty;var e$=(e,t,n)=>t in e?J6(e,t,{enumerable:!0,config * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var dR;function r$(){if(dR)return Ul;dR=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function n(r,a,i){var s=null;if(i!==void 0&&(s=""+i),a.key!==void 0&&(s=""+a.key),"key"in a){i={};for(var u in a)u!=="key"&&(i[u]=a[u])}else i=a;return a=i.ref,{$$typeof:e,type:r,key:s,ref:a!==void 0?a:null,props:i}}return Ul.Fragment=t,Ul.jsx=n,Ul.jsxs=n,Ul}var fR;function a$(){return fR||(fR=1,Sh.exports=r$()),Sh.exports}var E=a$(),Eh={exports:{}},jl={},wh={exports:{}},xh={};/** - * @license React - * scheduler.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var pR;function i$(){return pR||(pR=1,function(e){function t(j,G){var z=j.length;j.push(G);e:for(;0>>1,D=j[K];if(0>>1;Ka(M,z))Xa(Q,M)?(j[K]=Q,j[X]=z,K=X):(j[K]=M,j[B]=z,K=B);else if(Xa(Q,z))j[K]=Q,j[X]=z,K=X;else break e}}return G}function a(j,G){var z=j.sortIndex-G.sortIndex;return z!==0?z:j.id-G.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var i=performance;e.unstable_now=function(){return i.now()}}else{var s=Date,u=s.now();e.unstable_now=function(){return s.now()-u}}var c=[],d=[],p=1,g=null,m=3,b=!1,S=!1,v=!1,k=typeof setTimeout=="function"?setTimeout:null,R=typeof clearTimeout=="function"?clearTimeout:null,x=typeof setImmediate<"u"?setImmediate:null;function A(j){for(var G=n(d);G!==null;){if(G.callback===null)r(d);else if(G.startTime<=j)r(d),G.sortIndex=G.expirationTime,t(c,G);else break;G=n(d)}}function N(j){if(v=!1,A(j),!S)if(n(c)!==null)S=!0,W();else{var G=n(d);G!==null&&Y(N,G.startTime-j)}}var O=!1,_=-1,C=5,F=-1;function I(){return!(e.unstable_now()-Fj&&I());){var K=g.callback;if(typeof K=="function"){g.callback=null,m=g.priorityLevel;var D=K(g.expirationTime<=j);if(j=e.unstable_now(),typeof D=="function"){g.callback=D,A(j),G=!0;break t}g===n(c)&&r(c),A(j)}else r(c);g=n(c)}if(g!==null)G=!0;else{var V=n(d);V!==null&&Y(N,V.startTime-j),G=!1}}break e}finally{g=null,m=z,b=!1}G=void 0}}finally{G?H():O=!1}}}var H;if(typeof x=="function")H=function(){x(L)};else if(typeof MessageChannel<"u"){var $=new MessageChannel,U=$.port2;$.port1.onmessage=L,H=function(){U.postMessage(null)}}else H=function(){k(L,0)};function W(){O||(O=!0,H())}function Y(j,G){_=k(function(){j(e.unstable_now())},G)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(j){j.callback=null},e.unstable_continueExecution=function(){S||b||(S=!0,W())},e.unstable_forceFrameRate=function(j){0>j||125K?(j.sortIndex=z,t(d,j),n(c)===null&&j===n(d)&&(v?(R(_),_=-1):v=!0,Y(N,z-K))):(j.sortIndex=D,t(c,j),S||b||(S=!0,W())),j},e.unstable_shouldYield=I,e.unstable_wrapCallback=function(j){var G=m;return function(){var z=m;m=G;try{return j.apply(this,arguments)}finally{m=z}}}}(xh)),xh}var gR;function o$(){return gR||(gR=1,wh.exports=i$()),wh.exports}var kh={exports:{}},ot={};/** + */var q_;function f9(){if(q_)return Xl;q_=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function n(r,a,o){var s=null;if(o!==void 0&&(s=""+o),a.key!==void 0&&(s=""+a.key),"key"in a){o={};for(var u in a)u!=="key"&&(o[u]=a[u])}else o=a;return a=o.ref,{$$typeof:e,type:r,key:s,ref:a!==void 0?a:null,props:o}}return Xl.Fragment=t,Xl.jsx=n,Xl.jsxs=n,Xl}var V_;function p9(){return V_||(V_=1,$h.exports=f9()),$h.exports}var w=p9(),qh={exports:{}},it={};/** * @license React * react.production.js * @@ -22,7 +14,15 @@ var J6=Object.defineProperty;var e$=(e,t,n)=>t in e?J6(e,t,{enumerable:!0,config * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var hR;function s$(){if(hR)return ot;hR=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),i=Symbol.for("react.consumer"),s=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),g=Symbol.iterator;function m(D){return D===null||typeof D!="object"?null:(D=g&&D[g]||D["@@iterator"],typeof D=="function"?D:null)}var b={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},S=Object.assign,v={};function k(D,V,B){this.props=D,this.context=V,this.refs=v,this.updater=B||b}k.prototype.isReactComponent={},k.prototype.setState=function(D,V){if(typeof D!="object"&&typeof D!="function"&&D!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,D,V,"setState")},k.prototype.forceUpdate=function(D){this.updater.enqueueForceUpdate(this,D,"forceUpdate")};function R(){}R.prototype=k.prototype;function x(D,V,B){this.props=D,this.context=V,this.refs=v,this.updater=B||b}var A=x.prototype=new R;A.constructor=x,S(A,k.prototype),A.isPureReactComponent=!0;var N=Array.isArray,O={H:null,A:null,T:null,S:null},_=Object.prototype.hasOwnProperty;function C(D,V,B,M,X,Q){return B=Q.ref,{$$typeof:e,type:D,key:V,ref:B!==void 0?B:null,props:Q}}function F(D,V){return C(D.type,V,void 0,void 0,void 0,D.props)}function I(D){return typeof D=="object"&&D!==null&&D.$$typeof===e}function L(D){var V={"=":"=0",":":"=2"};return"$"+D.replace(/[=:]/g,function(B){return V[B]})}var H=/\/+/g;function $(D,V){return typeof D=="object"&&D!==null&&D.key!=null?L(""+D.key):V.toString(36)}function U(){}function W(D){switch(D.status){case"fulfilled":return D.value;case"rejected":throw D.reason;default:switch(typeof D.status=="string"?D.then(U,U):(D.status="pending",D.then(function(V){D.status==="pending"&&(D.status="fulfilled",D.value=V)},function(V){D.status==="pending"&&(D.status="rejected",D.reason=V)})),D.status){case"fulfilled":return D.value;case"rejected":throw D.reason}}throw D}function Y(D,V,B,M,X){var Q=typeof D;(Q==="undefined"||Q==="boolean")&&(D=null);var le=!1;if(D===null)le=!0;else switch(Q){case"bigint":case"string":case"number":le=!0;break;case"object":switch(D.$$typeof){case e:case t:le=!0;break;case p:return le=D._init,Y(le(D._payload),V,B,M,X)}}if(le)return X=X(D),le=M===""?"."+$(D,0):M,N(X)?(B="",le!=null&&(B=le.replace(H,"$&/")+"/"),Y(X,V,B,"",function(Te){return Te})):X!=null&&(I(X)&&(X=F(X,B+(X.key==null||D&&D.key===X.key?"":(""+X.key).replace(H,"$&/")+"/")+le)),V.push(X)),1;le=0;var re=M===""?".":M+":";if(N(D))for(var se=0;se>>1,D=j[K];if(0>>1;Ka(M,z))Wa(Q,M)?(j[K]=Q,j[W]=z,K=W):(j[K]=M,j[B]=z,K=B);else if(Wa(Q,z))j[K]=Q,j[W]=z,K=W;else break e}}return G}function a(j,G){var z=j.sortIndex-G.sortIndex;return z!==0?z:j.id-G.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var s=Date,u=s.now();e.unstable_now=function(){return s.now()-u}}var c=[],d=[],p=1,g=null,m=3,b=!1,y=!1,S=!1,x=typeof setTimeout=="function"?setTimeout:null,R=typeof clearTimeout=="function"?clearTimeout:null,k=typeof setImmediate<"u"?setImmediate:null;function A(j){for(var G=n(d);G!==null;){if(G.callback===null)r(d);else if(G.startTime<=j)r(d),G.sortIndex=G.expirationTime,t(c,G);else break;G=n(d)}}function C(j){if(S=!1,A(j),!y)if(n(c)!==null)y=!0,Y();else{var G=n(d);G!==null&&Z(C,G.startTime-j)}}var N=!1,_=-1,O=5,F=-1;function L(){return!(e.unstable_now()-Fj&&L());){var K=g.callback;if(typeof K=="function"){g.callback=null,m=g.priorityLevel;var D=K(g.expirationTime<=j);if(j=e.unstable_now(),typeof D=="function"){g.callback=D,A(j),G=!0;break t}g===n(c)&&r(c),A(j)}else r(c);g=n(c)}if(g!==null)G=!0;else{var V=n(d);V!==null&&Z(C,V.startTime-j),G=!1}}break e}finally{g=null,m=z,b=!1}G=void 0}}finally{G?H():N=!1}}}var H;if(typeof k=="function")H=function(){k(I)};else if(typeof MessageChannel<"u"){var $=new MessageChannel,U=$.port2;$.port1.onmessage=I,H=function(){U.postMessage(null)}}else H=function(){x(I,0)};function Y(){N||(N=!0,H())}function Z(j,G){_=x(function(){j(e.unstable_now())},G)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(j){j.callback=null},e.unstable_continueExecution=function(){y||b||(y=!0,Y())},e.unstable_forceFrameRate=function(j){0>j||125K?(j.sortIndex=z,t(d,j),n(c)===null&&j===n(d)&&(S?(R(_),_=-1):S=!0,Z(C,z-K))):(j.sortIndex=D,t(c,j),y||b||(y=!0,Y())),j},e.unstable_shouldYield=L,e.unstable_wrapCallback=function(j){var G=m;return function(){var z=m;m=G;try{return j.apply(this,arguments)}finally{m=z}}}}(Yh)),Yh}var X_;function b9(){return X_||(X_=1,Wh.exports=m9()),Wh.exports}var Kh={exports:{}},wn={};/** * @license React * react-dom.production.js * @@ -30,7 +30,7 @@ var J6=Object.defineProperty;var e$=(e,t,n)=>t in e?J6(e,t,{enumerable:!0,config * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var bR;function l$(){if(bR)return Sn;bR=1;var e=wf();function t(c){var d="https://react.dev/errors/"+c;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),Th.exports=l$(),Th.exports}/** + */var Z_;function y9(){if(Z_)return wn;Z_=1;var e=$f();function t(c){var d="https://react.dev/errors/"+c;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),Kh.exports=y9(),Kh.exports}/** * @license React * react-dom-client.production.js * @@ -38,231 +38,230 @@ var J6=Object.defineProperty;var e$=(e,t,n)=>t in e?J6(e,t,{enumerable:!0,config * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var vR;function u$(){if(vR)return jl;vR=1;var e=o$(),t=wf(),n=ZP();function r(o){var l="https://react.dev/errors/"+o;if(1)":-1y||Z[h]!==ne[y]){var be=` -`+Z[h].replace(" at new "," at ");return o.displayName&&be.includes("")&&(be=be.replace("",o.displayName)),be}while(1<=h&&0<=y);break}}}finally{W=!1,Error.prepareStackTrace=f}return(f=o?o.displayName||o.name:"")?U(f):""}function j(o){switch(o.tag){case 26:case 27:case 5:return U(o.type);case 16:return U("Lazy");case 13:return U("Suspense");case 19:return U("SuspenseList");case 0:case 15:return o=Y(o.type,!1),o;case 11:return o=Y(o.type.render,!1),o;case 1:return o=Y(o.type,!0),o;default:return""}}function G(o){try{var l="";do l+=j(o),o=o.return;while(o);return l}catch(f){return` +`);for(v=h=0;hv||X[h]!==ne[v]){var be=` +`+X[h].replace(" at new "," at ");return i.displayName&&be.includes("")&&(be=be.replace("",i.displayName)),be}while(1<=h&&0<=v);break}}}finally{Y=!1,Error.prepareStackTrace=f}return(f=i?i.displayName||i.name:"")?U(f):""}function j(i){switch(i.tag){case 26:case 27:case 5:return U(i.type);case 16:return U("Lazy");case 13:return U("Suspense");case 19:return U("SuspenseList");case 0:case 15:return i=Z(i.type,!1),i;case 11:return i=Z(i.type.render,!1),i;case 1:return i=Z(i.type,!0),i;default:return""}}function G(i){try{var l="";do l+=j(i),i=i.return;while(i);return l}catch(f){return` Error generating stack: `+f.message+` -`+f.stack}}function z(o){var l=o,f=o;if(o.alternate)for(;l.return;)l=l.return;else{o=l;do l=o,l.flags&4098&&(f=l.return),o=l.return;while(o)}return l.tag===3?f:null}function K(o){if(o.tag===13){var l=o.memoizedState;if(l===null&&(o=o.alternate,o!==null&&(l=o.memoizedState)),l!==null)return l.dehydrated}return null}function D(o){if(z(o)!==o)throw Error(r(188))}function V(o){var l=o.alternate;if(!l){if(l=z(o),l===null)throw Error(r(188));return l!==o?null:o}for(var f=o,h=l;;){var y=f.return;if(y===null)break;var w=y.alternate;if(w===null){if(h=y.return,h!==null){f=h;continue}break}if(y.child===w.child){for(w=y.child;w;){if(w===f)return D(y),o;if(w===h)return D(y),l;w=w.sibling}throw Error(r(188))}if(f.return!==h.return)f=y,h=w;else{for(var P=!1,q=y.child;q;){if(q===f){P=!0,f=y,h=w;break}if(q===h){P=!0,h=y,f=w;break}q=q.sibling}if(!P){for(q=w.child;q;){if(q===f){P=!0,f=w,h=y;break}if(q===h){P=!0,h=w,f=y;break}q=q.sibling}if(!P)throw Error(r(189))}}if(f.alternate!==h)throw Error(r(190))}if(f.tag!==3)throw Error(r(188));return f.stateNode.current===f?o:l}function B(o){var l=o.tag;if(l===5||l===26||l===27||l===6)return o;for(o=o.child;o!==null;){if(l=B(o),l!==null)return l;o=o.sibling}return null}var M=Array.isArray,X=n.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Q={pending:!1,data:null,method:null,action:null},le=[],re=-1;function se(o){return{current:o}}function Te(o){0>re||(o.current=le[re],le[re]=null,re--)}function ae(o,l){re++,le[re]=o.current,o.current=l}var we=se(null),xe=se(null),Ie=se(null),Ce=se(null);function Ee(o,l){switch(ae(Ie,l),ae(xe,o),ae(we,null),o=l.nodeType,o){case 9:case 11:l=(l=l.documentElement)&&(l=l.namespaceURI)?U_(l):0;break;default:if(o=o===8?l.parentNode:l,l=o.tagName,o=o.namespaceURI)o=U_(o),l=j_(o,l);else switch(l){case"svg":l=1;break;case"math":l=2;break;default:l=0}}Te(we),ae(we,l)}function J(){Te(we),Te(xe),Te(Ie)}function fe(o){o.memoizedState!==null&&ae(Ce,o);var l=we.current,f=j_(l,o.type);l!==f&&(ae(xe,o),ae(we,f))}function ke(o){xe.current===o&&(Te(we),Te(xe)),Ce.current===o&&(Te(Ce),Ml._currentValue=Q)}var me=Object.prototype.hasOwnProperty,ve=e.unstable_scheduleCallback,oe=e.unstable_cancelCallback,Pe=e.unstable_shouldYield,ze=e.unstable_requestPaint,he=e.unstable_now,Ne=e.unstable_getCurrentPriorityLevel,ee=e.unstable_ImmediatePriority,ce=e.unstable_UserBlockingPriority,Re=e.unstable_NormalPriority,Fe=e.unstable_LowPriority,Ve=e.unstable_IdlePriority,yt=e.log,wt=e.unstable_setDisableYieldValue,ht=null,et=null;function xt(o){if(et&&typeof et.onCommitFiberRoot=="function")try{et.onCommitFiberRoot(ht,o,void 0,(o.current.flags&128)===128)}catch{}}function it(o){if(typeof yt=="function"&&wt(o),et&&typeof et.setStrictMode=="function")try{et.setStrictMode(ht,o)}catch{}}var vt=Math.clz32?Math.clz32:Ft,jt=Math.log,dn=Math.LN2;function Ft(o){return o>>>=0,o===0?32:31-(jt(o)/dn|0)|0}var ar=128,jr=4194304;function Qt(o){var l=o&42;if(l!==0)return l;switch(o&-o){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return o&4194176;case 4194304:case 8388608:case 16777216:case 33554432:return o&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return o}}function oa(o,l){var f=o.pendingLanes;if(f===0)return 0;var h=0,y=o.suspendedLanes,w=o.pingedLanes,P=o.warmLanes;o=o.finishedLanes!==0;var q=f&134217727;return q!==0?(f=q&~y,f!==0?h=Qt(f):(w&=q,w!==0?h=Qt(w):o||(P=q&~P,P!==0&&(h=Qt(P))))):(q=f&~y,q!==0?h=Qt(q):w!==0?h=Qt(w):o||(P=f&~P,P!==0&&(h=Qt(P)))),h===0?0:l!==0&&l!==h&&!(l&y)&&(y=h&-h,P=l&-l,y>=P||y===32&&(P&4194176)!==0)?l:h}function Ke(o,l){return(o.pendingLanes&~(o.suspendedLanes&~o.pingedLanes)&l)===0}function mt(o,l){switch(o){case 1:case 2:case 4:case 8:return l+250;case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return l+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Rt(){var o=ar;return ar<<=1,!(ar&4194176)&&(ar=128),o}function On(){var o=jr;return jr<<=1,!(jr&62914560)&&(jr=4194304),o}function _n(o){for(var l=[],f=0;31>f;f++)l.push(o);return l}function Dn(o,l){o.pendingLanes|=l,l!==268435456&&(o.suspendedLanes=0,o.pingedLanes=0,o.warmLanes=0)}function sa(o,l,f,h,y,w){var P=o.pendingLanes;o.pendingLanes=f,o.suspendedLanes=0,o.pingedLanes=0,o.warmLanes=0,o.expiredLanes&=f,o.entangledLanes&=f,o.errorRecoveryDisabledLanes&=f,o.shellSuspendCounter=0;var q=o.entanglements,Z=o.expirationTimes,ne=o.hiddenUpdates;for(f=P&~f;0"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),VG=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),jT={},GT={};function WG(o){return me.call(GT,o)?!0:me.call(jT,o)?!1:VG.test(o)?GT[o]=!0:(jT[o]=!0,!1)}function Gu(o,l,f){if(WG(l))if(f===null)o.removeAttribute(l);else{switch(typeof f){case"undefined":case"function":case"symbol":o.removeAttribute(l);return;case"boolean":var h=l.toLowerCase().slice(0,5);if(h!=="data-"&&h!=="aria-"){o.removeAttribute(l);return}}o.setAttribute(l,""+f)}}function Hu(o,l,f){if(f===null)o.removeAttribute(l);else{switch(typeof f){case"undefined":case"function":case"symbol":case"boolean":o.removeAttribute(l);return}o.setAttribute(l,""+f)}}function ua(o,l,f,h){if(h===null)o.removeAttribute(f);else{switch(typeof h){case"undefined":case"function":case"symbol":case"boolean":o.removeAttribute(f);return}o.setAttributeNS(l,f,""+h)}}function ir(o){switch(typeof o){case"bigint":case"boolean":case"number":case"string":case"undefined":return o;case"object":return o;default:return""}}function HT(o){var l=o.type;return(o=o.nodeName)&&o.toLowerCase()==="input"&&(l==="checkbox"||l==="radio")}function YG(o){var l=HT(o)?"checked":"value",f=Object.getOwnPropertyDescriptor(o.constructor.prototype,l),h=""+o[l];if(!o.hasOwnProperty(l)&&typeof f<"u"&&typeof f.get=="function"&&typeof f.set=="function"){var y=f.get,w=f.set;return Object.defineProperty(o,l,{configurable:!0,get:function(){return y.call(this)},set:function(P){h=""+P,w.call(this,P)}}),Object.defineProperty(o,l,{enumerable:f.enumerable}),{getValue:function(){return h},setValue:function(P){h=""+P},stopTracking:function(){o._valueTracker=null,delete o[l]}}}}function $u(o){o._valueTracker||(o._valueTracker=YG(o))}function $T(o){if(!o)return!1;var l=o._valueTracker;if(!l)return!0;var f=l.getValue(),h="";return o&&(h=HT(o)?o.checked?"true":"false":o.value),o=h,o!==f?(l.setValue(o),!0):!1}function qu(o){if(o=o||(typeof document<"u"?document:void 0),typeof o>"u")return null;try{return o.activeElement||o.body}catch{return o.body}}var KG=/[\n"\\]/g;function or(o){return o.replace(KG,function(l){return"\\"+l.charCodeAt(0).toString(16)+" "})}function yp(o,l,f,h,y,w,P,q){o.name="",P!=null&&typeof P!="function"&&typeof P!="symbol"&&typeof P!="boolean"?o.type=P:o.removeAttribute("type"),l!=null?P==="number"?(l===0&&o.value===""||o.value!=l)&&(o.value=""+ir(l)):o.value!==""+ir(l)&&(o.value=""+ir(l)):P!=="submit"&&P!=="reset"||o.removeAttribute("value"),l!=null?vp(o,P,ir(l)):f!=null?vp(o,P,ir(f)):h!=null&&o.removeAttribute("value"),y==null&&w!=null&&(o.defaultChecked=!!w),y!=null&&(o.checked=y&&typeof y!="function"&&typeof y!="symbol"),q!=null&&typeof q!="function"&&typeof q!="symbol"&&typeof q!="boolean"?o.name=""+ir(q):o.removeAttribute("name")}function qT(o,l,f,h,y,w,P,q){if(w!=null&&typeof w!="function"&&typeof w!="symbol"&&typeof w!="boolean"&&(o.type=w),l!=null||f!=null){if(!(w!=="submit"&&w!=="reset"||l!=null))return;f=f!=null?""+ir(f):"",l=l!=null?""+ir(l):f,q||l===o.value||(o.value=l),o.defaultValue=l}h=h??y,h=typeof h!="function"&&typeof h!="symbol"&&!!h,o.checked=q?o.checked:!!h,o.defaultChecked=!!h,P!=null&&typeof P!="function"&&typeof P!="symbol"&&typeof P!="boolean"&&(o.name=P)}function vp(o,l,f){l==="number"&&qu(o.ownerDocument)===o||o.defaultValue===""+f||(o.defaultValue=""+f)}function wo(o,l,f,h){if(o=o.options,l){l={};for(var y=0;y=Js),aA=" ",iA=!1;function oA(o,l){switch(o){case"keyup":return xH.indexOf(l.keyCode)!==-1;case"keydown":return l.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function sA(o){return o=o.detail,typeof o=="object"&&"data"in o?o.data:null}var Ao=!1;function TH(o,l){switch(o){case"compositionend":return sA(l);case"keypress":return l.which!==32?null:(iA=!0,aA);case"textInput":return o=l.data,o===aA&&iA?null:o;default:return null}}function AH(o,l){if(Ao)return o==="compositionend"||!Np&&oA(o,l)?(o=QT(),Wu=Tp=Ga=null,Ao=!1,o):null;switch(o){case"paste":return null;case"keypress":if(!(l.ctrlKey||l.altKey||l.metaKey)||l.ctrlKey&&l.altKey){if(l.char&&1=l)return{node:f,offset:l-o};o=h}e:{for(;f;){if(f.nextSibling){f=f.nextSibling;break e}f=f.parentNode}f=void 0}f=hA(f)}}function bA(o,l){return o&&l?o===l?!0:o&&o.nodeType===3?!1:l&&l.nodeType===3?bA(o,l.parentNode):"contains"in o?o.contains(l):o.compareDocumentPosition?!!(o.compareDocumentPosition(l)&16):!1:!1}function yA(o){o=o!=null&&o.ownerDocument!=null&&o.ownerDocument.defaultView!=null?o.ownerDocument.defaultView:window;for(var l=qu(o.document);l instanceof o.HTMLIFrameElement;){try{var f=typeof l.contentWindow.location.href=="string"}catch{f=!1}if(f)o=l.contentWindow;else break;l=qu(o.document)}return l}function Ip(o){var l=o&&o.nodeName&&o.nodeName.toLowerCase();return l&&(l==="input"&&(o.type==="text"||o.type==="search"||o.type==="tel"||o.type==="url"||o.type==="password")||l==="textarea"||o.contentEditable==="true")}function LH(o,l){var f=yA(l);l=o.focusedElem;var h=o.selectionRange;if(f!==l&&l&&l.ownerDocument&&bA(l.ownerDocument.documentElement,l)){if(h!==null&&Ip(l)){if(o=h.start,f=h.end,f===void 0&&(f=o),"selectionStart"in l)l.selectionStart=o,l.selectionEnd=Math.min(f,l.value.length);else if(f=(o=l.ownerDocument||document)&&o.defaultView||window,f.getSelection){f=f.getSelection();var y=l.textContent.length,w=Math.min(h.start,y);h=h.end===void 0?w:Math.min(h.end,y),!f.extend&&w>h&&(y=h,h=w,w=y),y=mA(l,w);var P=mA(l,h);y&&P&&(f.rangeCount!==1||f.anchorNode!==y.node||f.anchorOffset!==y.offset||f.focusNode!==P.node||f.focusOffset!==P.offset)&&(o=o.createRange(),o.setStart(y.node,y.offset),f.removeAllRanges(),w>h?(f.addRange(o),f.extend(P.node,P.offset)):(o.setEnd(P.node,P.offset),f.addRange(o)))}}for(o=[],f=l;f=f.parentNode;)f.nodeType===1&&o.push({element:f,left:f.scrollLeft,top:f.scrollTop});for(typeof l.focus=="function"&&l.focus(),l=0;l=document.documentMode,_o=null,Lp=null,rl=null,Mp=!1;function vA(o,l,f){var h=f.window===f?f.document:f.nodeType===9?f:f.ownerDocument;Mp||_o==null||_o!==qu(h)||(h=_o,"selectionStart"in h&&Ip(h)?h={start:h.selectionStart,end:h.selectionEnd}:(h=(h.ownerDocument&&h.ownerDocument.defaultView||window).getSelection(),h={anchorNode:h.anchorNode,anchorOffset:h.anchorOffset,focusNode:h.focusNode,focusOffset:h.focusOffset}),rl&&nl(rl,h)||(rl=h,h=Lc(Lp,"onSelect"),0>=P,y-=P,ca=1<<32-vt(l)+y|f<Qe?(on=We,We=null):on=We.sibling;var Et=de(ie,We,ue[Qe],Se);if(Et===null){We===null&&(We=on);break}o&&We&&Et.alternate===null&&l(ie,We),te=w(Et,te,Qe),lt===null?Ue=Et:lt.sibling=Et,lt=Et,We=on}if(Qe===ue.length)return f(ie,We),St&&Mi(ie,Qe),Ue;if(We===null){for(;QeQe?(on=We,We=null):on=We.sibling;var li=de(ie,We,Et.value,Se);if(li===null){We===null&&(We=on);break}o&&We&&li.alternate===null&&l(ie,We),te=w(li,te,Qe),lt===null?Ue=li:lt.sibling=li,lt=li,We=on}if(Et.done)return f(ie,We),St&&Mi(ie,Qe),Ue;if(We===null){for(;!Et.done;Qe++,Et=ue.next())Et=Ae(ie,Et.value,Se),Et!==null&&(te=w(Et,te,Qe),lt===null?Ue=Et:lt.sibling=Et,lt=Et);return St&&Mi(ie,Qe),Ue}for(We=h(We);!Et.done;Qe++,Et=ue.next())Et=ge(We,ie,Qe,Et.value,Se),Et!==null&&(o&&Et.alternate!==null&&We.delete(Et.key===null?Qe:Et.key),te=w(Et,te,Qe),lt===null?Ue=Et:lt.sibling=Et,lt=Et);return o&&We.forEach(function(Q6){return l(ie,Q6)}),St&&Mi(ie,Qe),Ue}function $t(ie,te,ue,Se){if(typeof ue=="object"&&ue!==null&&ue.type===c&&ue.key===null&&(ue=ue.props.children),typeof ue=="object"&&ue!==null){switch(ue.$$typeof){case s:e:{for(var Ue=ue.key;te!==null;){if(te.key===Ue){if(Ue=ue.type,Ue===c){if(te.tag===7){f(ie,te.sibling),Se=y(te,ue.props.children),Se.return=ie,ie=Se;break e}}else if(te.elementType===Ue||typeof Ue=="object"&&Ue!==null&&Ue.$$typeof===x&&FA(Ue)===te.type){f(ie,te.sibling),Se=y(te,ue.props),cl(Se,ue),Se.return=ie,ie=Se;break e}f(ie,te);break}else l(ie,te);te=te.sibling}ue.type===c?(Se=Vi(ue.props.children,ie.mode,Se,ue.key),Se.return=ie,ie=Se):(Se=kc(ue.type,ue.key,ue.props,null,ie.mode,Se),cl(Se,ue),Se.return=ie,ie=Se)}return P(ie);case u:e:{for(Ue=ue.key;te!==null;){if(te.key===Ue)if(te.tag===4&&te.stateNode.containerInfo===ue.containerInfo&&te.stateNode.implementation===ue.implementation){f(ie,te.sibling),Se=y(te,ue.children||[]),Se.return=ie,ie=Se;break e}else{f(ie,te);break}else l(ie,te);te=te.sibling}Se=Pg(ue,ie.mode,Se),Se.return=ie,ie=Se}return P(ie);case x:return Ue=ue._init,ue=Ue(ue._payload),$t(ie,te,ue,Se)}if(M(ue))return $e(ie,te,ue,Se);if(_(ue)){if(Ue=_(ue),typeof Ue!="function")throw Error(r(150));return ue=Ue.call(ue),nt(ie,te,ue,Se)}if(typeof ue.then=="function")return $t(ie,te,ic(ue),Se);if(ue.$$typeof===b)return $t(ie,te,Ec(ie,ue),Se);oc(ie,ue)}return typeof ue=="string"&&ue!==""||typeof ue=="number"||typeof ue=="bigint"?(ue=""+ue,te!==null&&te.tag===6?(f(ie,te.sibling),Se=y(te,ue),Se.return=ie,ie=Se):(f(ie,te),Se=Fg(ue,ie.mode,Se),Se.return=ie,ie=Se),P(ie)):f(ie,te)}return function(ie,te,ue,Se){try{ul=0;var Ue=$t(ie,te,ue,Se);return Io=null,Ue}catch(We){if(We===sl)throw We;var lt=gr(29,We,null,ie.mode);return lt.lanes=Se,lt.return=ie,lt}finally{}}}var Pi=PA(!0),zA=PA(!1),Lo=se(null),sc=se(0);function BA(o,l){o=wa,ae(sc,o),ae(Lo,l),wa=o|l.baseLanes}function Hp(){ae(sc,wa),ae(Lo,Lo.current)}function $p(){wa=sc.current,Te(Lo),Te(sc)}var dr=se(null),Hr=null;function $a(o){var l=o.alternate;ae(Jt,Jt.current&1),ae(dr,o),Hr===null&&(l===null||Lo.current!==null||l.memoizedState!==null)&&(Hr=o)}function UA(o){if(o.tag===22){if(ae(Jt,Jt.current),ae(dr,o),Hr===null){var l=o.alternate;l!==null&&l.memoizedState!==null&&(Hr=o)}}else qa()}function qa(){ae(Jt,Jt.current),ae(dr,dr.current)}function fa(o){Te(dr),Hr===o&&(Hr=null),Te(Jt)}var Jt=se(0);function lc(o){for(var l=o;l!==null;){if(l.tag===13){var f=l.memoizedState;if(f!==null&&(f=f.dehydrated,f===null||f.data==="$?"||f.data==="$!"))return l}else if(l.tag===19&&l.memoizedProps.revealOrder!==void 0){if(l.flags&128)return l}else if(l.child!==null){l.child.return=l,l=l.child;continue}if(l===o)break;for(;l.sibling===null;){if(l.return===null||l.return===o)return null;l=l.return}l.sibling.return=l.return,l=l.sibling}return null}var BH=typeof AbortController<"u"?AbortController:function(){var o=[],l=this.signal={aborted:!1,addEventListener:function(f,h){o.push(h)}};this.abort=function(){l.aborted=!0,o.forEach(function(f){return f()})}},UH=e.unstable_scheduleCallback,jH=e.unstable_NormalPriority,en={$$typeof:b,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function qp(){return{controller:new BH,data:new Map,refCount:0}}function dl(o){o.refCount--,o.refCount===0&&UH(jH,function(){o.controller.abort()})}var fl=null,Vp=0,Mo=0,Fo=null;function GH(o,l){if(fl===null){var f=fl=[];Vp=0,Mo=Qg(),Fo={status:"pending",value:void 0,then:function(h){f.push(h)}}}return Vp++,l.then(jA,jA),l}function jA(){if(--Vp===0&&fl!==null){Fo!==null&&(Fo.status="fulfilled");var o=fl;fl=null,Mo=0,Fo=null;for(var l=0;lw?w:8;var P=I.T,q={};I.T=q,ug(o,!1,l,f);try{var Z=y(),ne=I.S;if(ne!==null&&ne(q,Z),Z!==null&&typeof Z=="object"&&typeof Z.then=="function"){var be=HH(Z,h);hl(o,l,be,Zn(o))}else hl(o,l,h,Zn(o))}catch(Ae){hl(o,l,{then:function(){},status:"rejected",reason:Ae},Zn())}finally{X.p=w,I.T=P}}function YH(){}function sg(o,l,f,h){if(o.tag!==5)throw Error(r(476));var y=y1(o).queue;b1(o,y,l,Q,f===null?YH:function(){return v1(o),f(h)})}function y1(o){var l=o.memoizedState;if(l!==null)return l;l={memoizedState:Q,baseState:Q,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:pa,lastRenderedState:Q},next:null};var f={};return l.next={memoizedState:f,baseState:f,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:pa,lastRenderedState:f},next:null},o.memoizedState=l,o=o.alternate,o!==null&&(o.memoizedState=l),l}function v1(o){var l=y1(o).next.queue;hl(o,l,{},Zn())}function lg(){return vn(Ml)}function S1(){return Yt().memoizedState}function E1(){return Yt().memoizedState}function KH(o){for(var l=o.return;l!==null;){switch(l.tag){case 24:case 3:var f=Zn();o=Xa(f);var h=Za(l,o,f);h!==null&&(Cn(h,l,f),yl(h,l,f)),l={cache:qp()},o.payload=l;return}l=l.return}}function XH(o,l,f){var h=Zn();f={lane:h,revertLane:0,action:f,hasEagerState:!1,eagerState:null,next:null},bc(o)?x1(l,f):(f=zp(o,l,f,h),f!==null&&(Cn(f,o,h),k1(f,l,h)))}function w1(o,l,f){var h=Zn();hl(o,l,f,h)}function hl(o,l,f,h){var y={lane:h,revertLane:0,action:f,hasEagerState:!1,eagerState:null,next:null};if(bc(o))x1(l,y);else{var w=o.alternate;if(o.lanes===0&&(w===null||w.lanes===0)&&(w=l.lastRenderedReducer,w!==null))try{var P=l.lastRenderedState,q=w(P,f);if(y.hasEagerState=!0,y.eagerState=q,Wn(q,P))return ec(o,l,y,0),Dt===null&&Ju(),!1}catch{}finally{}if(f=zp(o,l,y,h),f!==null)return Cn(f,o,h),k1(f,l,h),!0}return!1}function ug(o,l,f,h){if(h={lane:2,revertLane:Qg(),action:h,hasEagerState:!1,eagerState:null,next:null},bc(o)){if(l)throw Error(r(479))}else l=zp(o,f,h,2),l!==null&&Cn(l,o,2)}function bc(o){var l=o.alternate;return o===st||l!==null&&l===st}function x1(o,l){Po=cc=!0;var f=o.pending;f===null?l.next=l:(l.next=f.next,f.next=l),o.pending=l}function k1(o,l,f){if(f&4194176){var h=l.lanes;h&=o.pendingLanes,f|=h,l.lanes=f,kr(o,f)}}var $r={readContext:vn,use:pc,useCallback:qt,useContext:qt,useEffect:qt,useImperativeHandle:qt,useLayoutEffect:qt,useInsertionEffect:qt,useMemo:qt,useReducer:qt,useRef:qt,useState:qt,useDebugValue:qt,useDeferredValue:qt,useTransition:qt,useSyncExternalStore:qt,useId:qt};$r.useCacheRefresh=qt,$r.useMemoCache=qt,$r.useHostTransitionStatus=qt,$r.useFormState=qt,$r.useActionState=qt,$r.useOptimistic=qt;var Ui={readContext:vn,use:pc,useCallback:function(o,l){return Fn().memoizedState=[o,l===void 0?null:l],o},useContext:vn,useEffect:u1,useImperativeHandle:function(o,l,f){f=f!=null?f.concat([o]):null,hc(4194308,4,f1.bind(null,l,o),f)},useLayoutEffect:function(o,l){return hc(4194308,4,o,l)},useInsertionEffect:function(o,l){hc(4,2,o,l)},useMemo:function(o,l){var f=Fn();l=l===void 0?null:l;var h=o();if(Bi){it(!0);try{o()}finally{it(!1)}}return f.memoizedState=[h,l],h},useReducer:function(o,l,f){var h=Fn();if(f!==void 0){var y=f(l);if(Bi){it(!0);try{f(l)}finally{it(!1)}}}else y=l;return h.memoizedState=h.baseState=y,o={pending:null,lanes:0,dispatch:null,lastRenderedReducer:o,lastRenderedState:y},h.queue=o,o=o.dispatch=XH.bind(null,st,o),[h.memoizedState,o]},useRef:function(o){var l=Fn();return o={current:o},l.memoizedState=o},useState:function(o){o=ng(o);var l=o.queue,f=w1.bind(null,st,l);return l.dispatch=f,[o.memoizedState,f]},useDebugValue:ig,useDeferredValue:function(o,l){var f=Fn();return og(f,o,l)},useTransition:function(){var o=ng(!1);return o=b1.bind(null,st,o.queue,!0,!1),Fn().memoizedState=o,[!1,o]},useSyncExternalStore:function(o,l,f){var h=st,y=Fn();if(St){if(f===void 0)throw Error(r(407));f=f()}else{if(f=l(),Dt===null)throw Error(r(349));bt&60||WA(h,l,f)}y.memoizedState=f;var w={value:f,getSnapshot:l};return y.queue=w,u1(KA.bind(null,h,w,o),[o]),h.flags|=2048,Bo(9,YA.bind(null,h,w,f,l),{destroy:void 0},null),f},useId:function(){var o=Fn(),l=Dt.identifierPrefix;if(St){var f=da,h=ca;f=(h&~(1<<32-vt(h)-1)).toString(32)+f,l=":"+l+"R"+f,f=dc++,0 title"))),gn(w,h,f),w[yn]=o,nn(w),h=w;break e;case"link":var P=Z_("link","href",y).get(h+(f.href||""));if(P){for(var q=0;q<\/script>",o=o.removeChild(o.firstChild);break;case"select":o=typeof h.is=="string"?y.createElement("select",{is:h.is}):y.createElement("select"),h.multiple?o.multiple=!0:h.size&&(o.size=h.size);break;default:o=typeof h.is=="string"?y.createElement(f,{is:h.is}):y.createElement(f)}}o[yn]=l,o[Ln]=h;e:for(y=l.child;y!==null;){if(y.tag===5||y.tag===6)o.appendChild(y.stateNode);else if(y.tag!==4&&y.tag!==27&&y.child!==null){y.child.return=y,y=y.child;continue}if(y===l)break e;for(;y.sibling===null;){if(y.return===null||y.return===l)break e;y=y.return}y.sibling.return=y.return,y=y.sibling}l.stateNode=o;e:switch(gn(o,f,h),f){case"button":case"input":case"select":case"textarea":o=!!h.autoFocus;break e;case"img":o=!0;break e;default:o=!1}o&&Sa(l)}}return Pt(l),l.flags&=-16777217,null;case 6:if(o&&l.stateNode!=null)o.memoizedProps!==h&&Sa(l);else{if(typeof h!="string"&&l.stateNode===null)throw Error(r(166));if(o=Ie.current,al(l)){if(o=l.stateNode,f=l.memoizedProps,h=null,y=Rn,y!==null)switch(y.tag){case 27:case 5:h=y.memoizedProps}o[yn]=l,o=!!(o.nodeValue===f||h!==null&&h.suppressHydrationWarning===!0||B_(o.nodeValue,f)),o||Fi(l)}else o=Fc(o).createTextNode(h),o[yn]=l,l.stateNode=o}return Pt(l),null;case 13:if(h=l.memoizedState,o===null||o.memoizedState!==null&&o.memoizedState.dehydrated!==null){if(y=al(l),h!==null&&h.dehydrated!==null){if(o===null){if(!y)throw Error(r(318));if(y=l.memoizedState,y=y!==null?y.dehydrated:null,!y)throw Error(r(317));y[yn]=l}else il(),!(l.flags&128)&&(l.memoizedState=null),l.flags|=4;Pt(l),y=!1}else Ar!==null&&(qg(Ar),Ar=null),y=!0;if(!y)return l.flags&256?(fa(l),l):(fa(l),null)}if(fa(l),l.flags&128)return l.lanes=f,l;if(f=h!==null,o=o!==null&&o.memoizedState!==null,f){h=l.child,y=null,h.alternate!==null&&h.alternate.memoizedState!==null&&h.alternate.memoizedState.cachePool!==null&&(y=h.alternate.memoizedState.cachePool.pool);var w=null;h.memoizedState!==null&&h.memoizedState.cachePool!==null&&(w=h.memoizedState.cachePool.pool),w!==y&&(h.flags|=2048)}return f!==o&&f&&(l.child.flags|=8192),Tc(l,l.updateQueue),Pt(l),null;case 4:return J(),o===null&&nh(l.stateNode.containerInfo),Pt(l),null;case 10:return ma(l.type),Pt(l),null;case 19:if(Te(Jt),y=l.memoizedState,y===null)return Pt(l),null;if(h=(l.flags&128)!==0,w=y.rendering,w===null)if(h)Tl(y,!1);else{if(Ht!==0||o!==null&&o.flags&128)for(o=l.child;o!==null;){if(w=lc(o),w!==null){for(l.flags|=128,Tl(y,!1),o=w.updateQueue,l.updateQueue=o,Tc(l,o),l.subtreeFlags=0,o=f,f=l.child;f!==null;)p_(f,o),f=f.sibling;return ae(Jt,Jt.current&1|2),l.child}o=o.sibling}y.tail!==null&&he()>Ac&&(l.flags|=128,h=!0,Tl(y,!1),l.lanes=4194304)}else{if(!h)if(o=lc(w),o!==null){if(l.flags|=128,h=!0,o=o.updateQueue,l.updateQueue=o,Tc(l,o),Tl(y,!0),y.tail===null&&y.tailMode==="hidden"&&!w.alternate&&!St)return Pt(l),null}else 2*he()-y.renderingStartTime>Ac&&f!==536870912&&(l.flags|=128,h=!0,Tl(y,!1),l.lanes=4194304);y.isBackwards?(w.sibling=l.child,l.child=w):(o=y.last,o!==null?o.sibling=w:l.child=w,y.last=w)}return y.tail!==null?(l=y.tail,y.rendering=l,y.tail=l.sibling,y.renderingStartTime=he(),l.sibling=null,o=Jt.current,ae(Jt,h?o&1|2:o&1),l):(Pt(l),null);case 22:case 23:return fa(l),$p(),h=l.memoizedState!==null,o!==null?o.memoizedState!==null!==h&&(l.flags|=8192):h&&(l.flags|=8192),h?f&536870912&&!(l.flags&128)&&(Pt(l),l.subtreeFlags&6&&(l.flags|=8192)):Pt(l),f=l.updateQueue,f!==null&&Tc(l,f.retryQueue),f=null,o!==null&&o.memoizedState!==null&&o.memoizedState.cachePool!==null&&(f=o.memoizedState.cachePool.pool),h=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(h=l.memoizedState.cachePool.pool),h!==f&&(l.flags|=2048),o!==null&&Te(zi),null;case 24:return f=null,o!==null&&(f=o.memoizedState.cache),l.memoizedState.cache!==f&&(l.flags|=2048),ma(en),Pt(l),null;case 25:return null}throw Error(r(156,l.tag))}function r6(o,l){switch(Up(l),l.tag){case 1:return o=l.flags,o&65536?(l.flags=o&-65537|128,l):null;case 3:return ma(en),J(),o=l.flags,o&65536&&!(o&128)?(l.flags=o&-65537|128,l):null;case 26:case 27:case 5:return ke(l),null;case 13:if(fa(l),o=l.memoizedState,o!==null&&o.dehydrated!==null){if(l.alternate===null)throw Error(r(340));il()}return o=l.flags,o&65536?(l.flags=o&-65537|128,l):null;case 19:return Te(Jt),null;case 4:return J(),null;case 10:return ma(l.type),null;case 22:case 23:return fa(l),$p(),o!==null&&Te(zi),o=l.flags,o&65536?(l.flags=o&-65537|128,l):null;case 24:return ma(en),null;case 25:return null;default:return null}}function m_(o,l){switch(Up(l),l.tag){case 3:ma(en),J();break;case 26:case 27:case 5:ke(l);break;case 4:J();break;case 13:fa(l);break;case 19:Te(Jt);break;case 10:ma(l.type);break;case 22:case 23:fa(l),$p(),o!==null&&Te(zi);break;case 24:ma(en)}}var a6={getCacheForType:function(o){var l=vn(en),f=l.data.get(o);return f===void 0&&(f=o(),l.data.set(o,f)),f}},i6=typeof WeakMap=="function"?WeakMap:Map,zt=0,Dt=null,ct=null,bt=0,It=0,Xn=null,Ea=!1,Ho=!1,zg=!1,wa=0,Ht=0,ni=0,Wi=0,Bg=0,hr=0,$o=0,Al=null,qr=null,Ug=!1,jg=0,Ac=1/0,_c=null,ri=null,Rc=!1,Yi=null,_l=0,Gg=0,Hg=null,Rl=0,$g=null;function Zn(){if(zt&2&&bt!==0)return bt&-bt;if(I.T!==null){var o=Mo;return o!==0?o:Qg()}return PT()}function b_(){hr===0&&(hr=!(bt&536870912)||St?Rt():536870912);var o=dr.current;return o!==null&&(o.flags|=32),hr}function Cn(o,l,f){(o===Dt&&It===2||o.cancelPendingCommit!==null)&&(qo(o,0),xa(o,bt,hr,!1)),Dn(o,f),(!(zt&2)||o!==Dt)&&(o===Dt&&(!(zt&2)&&(Wi|=f),Ht===4&&xa(o,bt,hr,!1)),Vr(o))}function y_(o,l,f){if(zt&6)throw Error(r(327));var h=!f&&(l&60)===0&&(l&o.expiredLanes)===0||Ke(o,l),y=h?l6(o,l):Yg(o,l,!0),w=h;do{if(y===0){Ho&&!h&&xa(o,l,0,!1);break}else if(y===6)xa(o,l,0,!Ea);else{if(f=o.current.alternate,w&&!o6(f)){y=Yg(o,l,!1),w=!1;continue}if(y===2){if(w=l,o.errorRecoveryDisabledLanes&w)var P=0;else P=o.pendingLanes&-536870913,P=P!==0?P:P&536870912?536870912:0;if(P!==0){l=P;e:{var q=o;y=Al;var Z=q.current.memoizedState.isDehydrated;if(Z&&(qo(q,P).flags|=256),P=Yg(q,P,!1),P!==2){if(zg&&!Z){q.errorRecoveryDisabledLanes|=w,Wi|=w,y=4;break e}w=qr,qr=y,w!==null&&qg(w)}y=P}if(w=!1,y!==2)continue}}if(y===1){qo(o,0),xa(o,l,0,!0);break}e:{switch(h=o,y){case 0:case 1:throw Error(r(345));case 4:if((l&4194176)===l){xa(h,l,hr,!Ea);break e}break;case 2:qr=null;break;case 3:case 5:break;default:throw Error(r(329))}if(h.finishedWork=f,h.finishedLanes=l,(l&62914560)===l&&(w=jg+300-he(),10f?32:f,I.T=null,Yi===null)var w=!1;else{f=Hg,Hg=null;var P=Yi,q=_l;if(Yi=null,_l=0,zt&6)throw Error(r(331));var Z=zt;if(zt|=4,d_(P.current),l_(P,P.current,q,f),zt=Z,Cl(0,!1),et&&typeof et.onPostCommitFiberRoot=="function")try{et.onPostCommitFiberRoot(ht,P)}catch{}w=!0}return w}finally{X.p=y,I.T=h,__(o,l)}}return!1}function R_(o,l,f){l=lr(f,l),l=fg(o.stateNode,l,2),o=Za(o,l,2),o!==null&&(Dn(o,2),Vr(o))}function Ct(o,l,f){if(o.tag===3)R_(o,o,f);else for(;l!==null;){if(l.tag===3){R_(l,o,f);break}else if(l.tag===1){var h=l.stateNode;if(typeof l.type.getDerivedStateFromError=="function"||typeof h.componentDidCatch=="function"&&(ri===null||!ri.has(h))){o=lr(f,o),f=O1(2),h=Za(l,f,2),h!==null&&(D1(f,h,l,o),Dn(h,2),Vr(h));break}}l=l.return}}function Kg(o,l,f){var h=o.pingCache;if(h===null){h=o.pingCache=new i6;var y=new Set;h.set(l,y)}else y=h.get(l),y===void 0&&(y=new Set,h.set(l,y));y.has(f)||(zg=!0,y.add(f),o=d6.bind(null,o,l,f),l.then(o,o))}function d6(o,l,f){var h=o.pingCache;h!==null&&h.delete(l),o.pingedLanes|=o.suspendedLanes&f,o.warmLanes&=~f,Dt===o&&(bt&f)===f&&(Ht===4||Ht===3&&(bt&62914560)===bt&&300>he()-jg?!(zt&2)&&qo(o,0):Bg|=f,$o===bt&&($o=0)),Vr(o)}function C_(o,l){l===0&&(l=On()),o=Ha(o,l),o!==null&&(Dn(o,l),Vr(o))}function f6(o){var l=o.memoizedState,f=0;l!==null&&(f=l.retryLane),C_(o,f)}function p6(o,l){var f=0;switch(o.tag){case 13:var h=o.stateNode,y=o.memoizedState;y!==null&&(f=y.retryLane);break;case 19:h=o.stateNode;break;case 22:h=o.stateNode._retryCache;break;default:throw Error(r(314))}h!==null&&h.delete(l),C_(o,f)}function g6(o,l){return ve(o,l)}var Oc=null,Yo=null,Xg=!1,Dc=!1,Zg=!1,Ki=0;function Vr(o){o!==Yo&&o.next===null&&(Yo===null?Oc=Yo=o:Yo=Yo.next=o),Dc=!0,Xg||(Xg=!0,m6(h6))}function Cl(o,l){if(!Zg&&Dc){Zg=!0;do for(var f=!1,h=Oc;h!==null;){if(o!==0){var y=h.pendingLanes;if(y===0)var w=0;else{var P=h.suspendedLanes,q=h.pingedLanes;w=(1<<31-vt(42|o)+1)-1,w&=y&~(P&~q),w=w&201326677?w&201326677|1:w?w|2:0}w!==0&&(f=!0,D_(h,w))}else w=bt,w=oa(h,h===Dt?w:0),!(w&3)||Ke(h,w)||(f=!0,D_(h,w));h=h.next}while(f);Zg=!1}}function h6(){Dc=Xg=!1;var o=0;Ki!==0&&(k6()&&(o=Ki),Ki=0);for(var l=he(),f=null,h=Oc;h!==null;){var y=h.next,w=N_(h,l);w===0?(h.next=null,f===null?Oc=y:f.next=y,y===null&&(Yo=f)):(f=h,(o!==0||w&3)&&(Dc=!0)),h=y}Cl(o)}function N_(o,l){for(var f=o.suspendedLanes,h=o.pingedLanes,y=o.expirationTimes,w=o.pendingLanes&-62914561;0"u"?null:document;function W_(o,l,f){var h=Xo;if(h&&typeof l=="string"&&l){var y=or(l);y='link[rel="'+o+'"][href="'+y+'"]',typeof f=="string"&&(y+='[crossorigin="'+f+'"]'),V_.has(y)||(V_.add(y),o={rel:o,crossOrigin:f,href:l},h.querySelector(y)===null&&(l=h.createElement("link"),gn(l,"link",o),nn(l),h.head.appendChild(l)))}}function D6(o){ka.D(o),W_("dns-prefetch",o,null)}function I6(o,l){ka.C(o,l),W_("preconnect",o,l)}function L6(o,l,f){ka.L(o,l,f);var h=Xo;if(h&&o&&l){var y='link[rel="preload"][as="'+or(l)+'"]';l==="image"&&f&&f.imageSrcSet?(y+='[imagesrcset="'+or(f.imageSrcSet)+'"]',typeof f.imageSizes=="string"&&(y+='[imagesizes="'+or(f.imageSizes)+'"]')):y+='[href="'+or(o)+'"]';var w=y;switch(l){case"style":w=Zo(o);break;case"script":w=Qo(o)}mr.has(w)||(o=L({rel:"preload",href:l==="image"&&f&&f.imageSrcSet?void 0:o,as:l},f),mr.set(w,o),h.querySelector(y)!==null||l==="style"&&h.querySelector(Dl(w))||l==="script"&&h.querySelector(Il(w))||(l=h.createElement("link"),gn(l,"link",o),nn(l),h.head.appendChild(l)))}}function M6(o,l){ka.m(o,l);var f=Xo;if(f&&o){var h=l&&typeof l.as=="string"?l.as:"script",y='link[rel="modulepreload"][as="'+or(h)+'"][href="'+or(o)+'"]',w=y;switch(h){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":w=Qo(o)}if(!mr.has(w)&&(o=L({rel:"modulepreload",href:o},l),mr.set(w,o),f.querySelector(y)===null)){switch(h){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(f.querySelector(Il(w)))return}h=f.createElement("link"),gn(h,"link",o),nn(h),f.head.appendChild(h)}}}function F6(o,l,f){ka.S(o,l,f);var h=Xo;if(h&&o){var y=So(h).hoistableStyles,w=Zo(o);l=l||"default";var P=y.get(w);if(!P){var q={loading:0,preload:null};if(P=h.querySelector(Dl(w)))q.loading=5;else{o=L({rel:"stylesheet",href:o,"data-precedence":l},f),(f=mr.get(w))&&dh(o,f);var Z=P=h.createElement("link");nn(Z),gn(Z,"link",o),Z._p=new Promise(function(ne,be){Z.onload=ne,Z.onerror=be}),Z.addEventListener("load",function(){q.loading|=1}),Z.addEventListener("error",function(){q.loading|=2}),q.loading|=4,zc(P,l,h)}P={type:"stylesheet",instance:P,count:1,state:q},y.set(w,P)}}}function P6(o,l){ka.X(o,l);var f=Xo;if(f&&o){var h=So(f).hoistableScripts,y=Qo(o),w=h.get(y);w||(w=f.querySelector(Il(y)),w||(o=L({src:o,async:!0},l),(l=mr.get(y))&&fh(o,l),w=f.createElement("script"),nn(w),gn(w,"link",o),f.head.appendChild(w)),w={type:"script",instance:w,count:1,state:null},h.set(y,w))}}function z6(o,l){ka.M(o,l);var f=Xo;if(f&&o){var h=So(f).hoistableScripts,y=Qo(o),w=h.get(y);w||(w=f.querySelector(Il(y)),w||(o=L({src:o,async:!0,type:"module"},l),(l=mr.get(y))&&fh(o,l),w=f.createElement("script"),nn(w),gn(w,"link",o),f.head.appendChild(w)),w={type:"script",instance:w,count:1,state:null},h.set(y,w))}}function Y_(o,l,f,h){var y=(y=Ie.current)?Pc(y):null;if(!y)throw Error(r(446));switch(o){case"meta":case"title":return null;case"style":return typeof f.precedence=="string"&&typeof f.href=="string"?(l=Zo(f.href),f=So(y).hoistableStyles,h=f.get(l),h||(h={type:"style",instance:null,count:0,state:null},f.set(l,h)),h):{type:"void",instance:null,count:0,state:null};case"link":if(f.rel==="stylesheet"&&typeof f.href=="string"&&typeof f.precedence=="string"){o=Zo(f.href);var w=So(y).hoistableStyles,P=w.get(o);if(P||(y=y.ownerDocument||y,P={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},w.set(o,P),(w=y.querySelector(Dl(o)))&&!w._p&&(P.instance=w,P.state.loading=5),mr.has(o)||(f={rel:"preload",as:"style",href:f.href,crossOrigin:f.crossOrigin,integrity:f.integrity,media:f.media,hrefLang:f.hrefLang,referrerPolicy:f.referrerPolicy},mr.set(o,f),w||B6(y,o,f,P.state))),l&&h===null)throw Error(r(528,""));return P}if(l&&h!==null)throw Error(r(529,""));return null;case"script":return l=f.async,f=f.src,typeof f=="string"&&l&&typeof l!="function"&&typeof l!="symbol"?(l=Qo(f),f=So(y).hoistableScripts,h=f.get(l),h||(h={type:"script",instance:null,count:0,state:null},f.set(l,h)),h):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,o))}}function Zo(o){return'href="'+or(o)+'"'}function Dl(o){return'link[rel="stylesheet"]['+o+"]"}function K_(o){return L({},o,{"data-precedence":o.precedence,precedence:null})}function B6(o,l,f,h){o.querySelector('link[rel="preload"][as="style"]['+l+"]")?h.loading=1:(l=o.createElement("link"),h.preload=l,l.addEventListener("load",function(){return h.loading|=1}),l.addEventListener("error",function(){return h.loading|=2}),gn(l,"link",f),nn(l),o.head.appendChild(l))}function Qo(o){return'[src="'+or(o)+'"]'}function Il(o){return"script[async]"+o}function X_(o,l,f){if(l.count++,l.instance===null)switch(l.type){case"style":var h=o.querySelector('style[data-href~="'+or(f.href)+'"]');if(h)return l.instance=h,nn(h),h;var y=L({},f,{"data-href":f.href,"data-precedence":f.precedence,href:null,precedence:null});return h=(o.ownerDocument||o).createElement("style"),nn(h),gn(h,"style",y),zc(h,f.precedence,o),l.instance=h;case"stylesheet":y=Zo(f.href);var w=o.querySelector(Dl(y));if(w)return l.state.loading|=4,l.instance=w,nn(w),w;h=K_(f),(y=mr.get(y))&&dh(h,y),w=(o.ownerDocument||o).createElement("link"),nn(w);var P=w;return P._p=new Promise(function(q,Z){P.onload=q,P.onerror=Z}),gn(w,"link",h),l.state.loading|=4,zc(w,f.precedence,o),l.instance=w;case"script":return w=Qo(f.src),(y=o.querySelector(Il(w)))?(l.instance=y,nn(y),y):(h=f,(y=mr.get(w))&&(h=L({},f),fh(h,y)),o=o.ownerDocument||o,y=o.createElement("script"),nn(y),gn(y,"link",h),o.head.appendChild(y),l.instance=y);case"void":return null;default:throw Error(r(443,l.type))}else l.type==="stylesheet"&&!(l.state.loading&4)&&(h=l.instance,l.state.loading|=4,zc(h,f.precedence,o));return l.instance}function zc(o,l,f){for(var h=f.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),y=h.length?h[h.length-1]:null,w=y,P=0;P title"):null)}function U6(o,l,f){if(f===1||l.itemProp!=null)return!1;switch(o){case"meta":case"title":return!0;case"style":if(typeof l.precedence!="string"||typeof l.href!="string"||l.href==="")break;return!0;case"link":if(typeof l.rel!="string"||typeof l.href!="string"||l.href===""||l.onLoad||l.onError)break;switch(l.rel){case"stylesheet":return o=l.disabled,typeof l.precedence=="string"&&o==null;default:return!0}case"script":if(l.async&&typeof l.async!="function"&&typeof l.async!="symbol"&&!l.onLoad&&!l.onError&&l.src&&typeof l.src=="string")return!0}return!1}function J_(o){return!(o.type==="stylesheet"&&!(o.state.loading&3))}var Ll=null;function j6(){}function G6(o,l,f){if(Ll===null)throw Error(r(475));var h=Ll;if(l.type==="stylesheet"&&(typeof f.media!="string"||matchMedia(f.media).matches!==!1)&&!(l.state.loading&4)){if(l.instance===null){var y=Zo(f.href),w=o.querySelector(Dl(y));if(w){o=w._p,o!==null&&typeof o=="object"&&typeof o.then=="function"&&(h.count++,h=Uc.bind(h),o.then(h,h)),l.state.loading|=4,l.instance=w,nn(w);return}w=o.ownerDocument||o,f=K_(f),(y=mr.get(y))&&dh(f,y),w=w.createElement("link"),nn(w);var P=w;P._p=new Promise(function(q,Z){P.onload=q,P.onerror=Z}),gn(w,"link",f),l.instance=w}h.stylesheets===null&&(h.stylesheets=new Map),h.stylesheets.set(l,o),(o=l.state.preload)&&!(l.state.loading&3)&&(h.count++,l=Uc.bind(h),o.addEventListener("load",l),o.addEventListener("error",l))}}function H6(){if(Ll===null)throw Error(r(475));var o=Ll;return o.stylesheets&&o.count===0&&ph(o,o.stylesheets),0"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),Eh.exports=u$(),Eh.exports}var d$=c$(),T=wf();const ye=ln(T),f$=t$({__proto__:null,default:ye},[T]),tt=e=>typeof e=="string",Gl=()=>{let e,t;const n=new Promise((r,a)=>{e=r,t=a});return n.resolve=e,n.reject=t,n},ER=e=>e==null?"":""+e,p$=(e,t,n)=>{e.forEach(r=>{t[r]&&(n[r]=t[r])})},g$=/###/g,wR=e=>e&&e.indexOf("###")>-1?e.replace(g$,"."):e,xR=e=>!e||tt(e),nu=(e,t,n)=>{const r=tt(t)?t.split("."):t;let a=0;for(;a{const{obj:r,k:a}=nu(e,t,Object);if(r!==void 0||t.length===1){r[a]=n;return}let i=t[t.length-1],s=t.slice(0,t.length-1),u=nu(e,s,Object);for(;u.obj===void 0&&s.length;)i=`${s[s.length-1]}.${i}`,s=s.slice(0,s.length-1),u=nu(e,s,Object),u!=null&&u.obj&&typeof u.obj[`${u.k}.${i}`]<"u"&&(u.obj=void 0);u.obj[`${u.k}.${i}`]=n},h$=(e,t,n,r)=>{const{obj:a,k:i}=nu(e,t,Object);a[i]=a[i]||[],a[i].push(n)},Hd=(e,t)=>{const{obj:n,k:r}=nu(e,t);if(n&&Object.prototype.hasOwnProperty.call(n,r))return n[r]},m$=(e,t,n)=>{const r=Hd(e,n);return r!==void 0?r:Hd(t,n)},QP=(e,t,n)=>{for(const r in t)r!=="__proto__"&&r!=="constructor"&&(r in e?tt(e[r])||e[r]instanceof String||tt(t[r])||t[r]instanceof String?n&&(e[r]=t[r]):QP(e[r],t[r],n):e[r]=t[r]);return e},Jo=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var b$={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};const y$=e=>tt(e)?e.replace(/[&<>"'\/]/g,t=>b$[t]):e;class v${constructor(t){this.capacity=t,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(t){const n=this.regExpMap.get(t);if(n!==void 0)return n;const r=new RegExp(t);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(t,r),this.regExpQueue.push(t),r}}const S$=[" ",",","?","!",";"],E$=new v$(20),w$=(e,t,n)=>{t=t||"",n=n||"";const r=S$.filter(s=>t.indexOf(s)<0&&n.indexOf(s)<0);if(r.length===0)return!0;const a=E$.getRegExp(`(${r.map(s=>s==="?"?"\\?":s).join("|")})`);let i=!a.test(e);if(!i){const s=e.indexOf(n);s>0&&!a.test(e.substring(0,s))&&(i=!0)}return i},Ox=function(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:".";if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;const r=t.split(n);let a=e;for(let i=0;i-1&&ce==null?void 0:e.replace("_","-"),x$={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,t){var n,r;(r=(n=console==null?void 0:console[e])==null?void 0:n.apply)==null||r.call(n,console,t)}};class qd{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.init(t,n)}init(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.prefix=n.prefix||"i18next:",this.logger=t||x$,this.options=n,this.debug=n.debug}log(){for(var t=arguments.length,n=new Array(t),r=0;r{this.observers[r]||(this.observers[r]=new Map);const a=this.observers[r].get(n)||0;this.observers[r].set(n,a+1)}),this}off(t,n){if(this.observers[t]){if(!n){delete this.observers[t];return}this.observers[t].delete(n)}}emit(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a{let[u,c]=s;for(let d=0;d{let[u,c]=s;for(let d=0;d1&&arguments[1]!==void 0?arguments[1]:{ns:["translation"],defaultNS:"translation"};super(),this.data=t||{},this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(t){this.options.ns.indexOf(t)<0&&this.options.ns.push(t)}removeNamespaces(t){const n=this.options.ns.indexOf(t);n>-1&&this.options.ns.splice(n,1)}getResource(t,n,r){var d,p;let a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const i=a.keySeparator!==void 0?a.keySeparator:this.options.keySeparator,s=a.ignoreJSONStructure!==void 0?a.ignoreJSONStructure:this.options.ignoreJSONStructure;let u;t.indexOf(".")>-1?u=t.split("."):(u=[t,n],r&&(Array.isArray(r)?u.push(...r):tt(r)&&i?u.push(...r.split(i)):u.push(r)));const c=Hd(this.data,u);return!c&&!n&&!r&&t.indexOf(".")>-1&&(t=u[0],n=u[1],r=u.slice(2).join(".")),c||!s||!tt(r)?c:Ox((p=(d=this.data)==null?void 0:d[t])==null?void 0:p[n],r,i)}addResource(t,n,r,a){let i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{silent:!1};const s=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator;let u=[t,n];r&&(u=u.concat(s?r.split(s):r)),t.indexOf(".")>-1&&(u=t.split("."),a=n,n=u[1]),this.addNamespaces(n),kR(this.data,u,a),i.silent||this.emit("added",t,n,r,a)}addResources(t,n,r){let a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{silent:!1};for(const i in r)(tt(r[i])||Array.isArray(r[i]))&&this.addResource(t,n,i,r[i],{silent:!0});a.silent||this.emit("added",t,n,r)}addResourceBundle(t,n,r,a,i){let s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{silent:!1,skipCopy:!1},u=[t,n];t.indexOf(".")>-1&&(u=t.split("."),a=r,r=n,n=u[1]),this.addNamespaces(n);let c=Hd(this.data,u)||{};s.skipCopy||(r=JSON.parse(JSON.stringify(r))),a?QP(c,r,i):c={...c,...r},kR(this.data,u,c),s.silent||this.emit("added",t,n,r)}removeResourceBundle(t,n){this.hasResourceBundle(t,n)&&delete this.data[t][n],this.removeNamespaces(n),this.emit("removed",t,n)}hasResourceBundle(t,n){return this.getResource(t,n)!==void 0}getResourceBundle(t,n){return n||(n=this.options.defaultNS),this.getResource(t,n)}getDataByLanguage(t){return this.data[t]}hasLanguageSomeTranslations(t){const n=this.getDataByLanguage(t);return!!(n&&Object.keys(n)||[]).find(a=>n[a]&&Object.keys(n[a]).length>0)}toJSON(){return this.data}}var JP={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,r,a){return e.forEach(i=>{var s;t=((s=this.processors[i])==null?void 0:s.process(t,n,r,a))??t}),t}};const AR={},_R=e=>!tt(e)&&typeof e!="boolean"&&typeof e!="number";class Vd extends xf{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),p$(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],t,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=Qr.create("translator")}changeLanguage(t){t&&(this.language=t)}exists(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};if(t==null)return!1;const r=this.resolve(t,n);return(r==null?void 0:r.res)!==void 0}extractFromKey(t,n){let r=n.nsSeparator!==void 0?n.nsSeparator:this.options.nsSeparator;r===void 0&&(r=":");const a=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator;let i=n.ns||this.options.defaultNS||[];const s=r&&t.indexOf(r)>-1,u=!this.options.userDefinedKeySeparator&&!n.keySeparator&&!this.options.userDefinedNsSeparator&&!n.nsSeparator&&!w$(t,r,a);if(s&&!u){const c=t.match(this.interpolator.nestingRegexp);if(c&&c.length>0)return{key:t,namespaces:tt(i)?[i]:i};const d=t.split(r);(r!==a||r===a&&this.options.ns.indexOf(d[0])>-1)&&(i=d.shift()),t=d.join(a)}return{key:t,namespaces:tt(i)?[i]:i}}translate(t,n,r){if(typeof n!="object"&&this.options.overloadTranslationOptionHandler&&(n=this.options.overloadTranslationOptionHandler(arguments)),typeof n=="object"&&(n={...n}),n||(n={}),t==null)return"";Array.isArray(t)||(t=[String(t)]);const a=n.returnDetails!==void 0?n.returnDetails:this.options.returnDetails,i=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator,{key:s,namespaces:u}=this.extractFromKey(t[t.length-1],n),c=u[u.length-1],d=n.lng||this.language,p=n.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if((d==null?void 0:d.toLowerCase())==="cimode"){if(p){const H=n.nsSeparator||this.options.nsSeparator;return a?{res:`${c}${H}${s}`,usedKey:s,exactUsedKey:s,usedLng:d,usedNS:c,usedParams:this.getUsedParamsDetails(n)}:`${c}${H}${s}`}return a?{res:s,usedKey:s,exactUsedKey:s,usedLng:d,usedNS:c,usedParams:this.getUsedParamsDetails(n)}:s}const g=this.resolve(t,n);let m=g==null?void 0:g.res;const b=(g==null?void 0:g.usedKey)||s,S=(g==null?void 0:g.exactUsedKey)||s,v=["[object Number]","[object Function]","[object RegExp]"],k=n.joinArrays!==void 0?n.joinArrays:this.options.joinArrays,R=!this.i18nFormat||this.i18nFormat.handleAsObject,x=n.count!==void 0&&!tt(n.count),A=Vd.hasDefaultValue(n),N=x?this.pluralResolver.getSuffix(d,n.count,n):"",O=n.ordinal&&x?this.pluralResolver.getSuffix(d,n.count,{ordinal:!1}):"",_=x&&!n.ordinal&&n.count===0,C=_&&n[`defaultValue${this.options.pluralSeparator}zero`]||n[`defaultValue${N}`]||n[`defaultValue${O}`]||n.defaultValue;let F=m;R&&!m&&A&&(F=C);const I=_R(F),L=Object.prototype.toString.apply(F);if(R&&F&&I&&v.indexOf(L)<0&&!(tt(k)&&Array.isArray(F))){if(!n.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const H=this.options.returnedObjectHandler?this.options.returnedObjectHandler(b,F,{...n,ns:u}):`key '${s} (${this.language})' returned an object instead of string.`;return a?(g.res=H,g.usedParams=this.getUsedParamsDetails(n),g):H}if(i){const H=Array.isArray(F),$=H?[]:{},U=H?S:b;for(const W in F)if(Object.prototype.hasOwnProperty.call(F,W)){const Y=`${U}${i}${W}`;A&&!m?$[W]=this.translate(Y,{...n,defaultValue:_R(C)?C[W]:void 0,joinArrays:!1,ns:u}):$[W]=this.translate(Y,{...n,joinArrays:!1,ns:u}),$[W]===Y&&($[W]=F[W])}m=$}}else if(R&&tt(k)&&Array.isArray(m))m=m.join(k),m&&(m=this.extendTranslation(m,t,n,r));else{let H=!1,$=!1;!this.isValidLookup(m)&&A&&(H=!0,m=C),this.isValidLookup(m)||($=!0,m=s);const W=(n.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&$?void 0:m,Y=A&&C!==m&&this.options.updateMissing;if($||H||Y){if(this.logger.log(Y?"updateKey":"missingKey",d,c,s,Y?C:m),i){const K=this.resolve(s,{...n,keySeparator:!1});K&&K.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let j=[];const G=this.languageUtils.getFallbackCodes(this.options.fallbackLng,n.lng||this.language);if(this.options.saveMissingTo==="fallback"&&G&&G[0])for(let K=0;K{var M;const B=A&&V!==m?V:W;this.options.missingKeyHandler?this.options.missingKeyHandler(K,c,D,B,Y,n):(M=this.backendConnector)!=null&&M.saveMissing&&this.backendConnector.saveMissing(K,c,D,B,Y,n),this.emit("missingKey",K,c,D,m)};this.options.saveMissing&&(this.options.saveMissingPlurals&&x?j.forEach(K=>{const D=this.pluralResolver.getSuffixes(K,n);_&&n[`defaultValue${this.options.pluralSeparator}zero`]&&D.indexOf(`${this.options.pluralSeparator}zero`)<0&&D.push(`${this.options.pluralSeparator}zero`),D.forEach(V=>{z([K],s+V,n[`defaultValue${V}`]||C)})}):z(j,s,C))}m=this.extendTranslation(m,t,n,g,r),$&&m===s&&this.options.appendNamespaceToMissingKey&&(m=`${c}:${s}`),($||H)&&this.options.parseMissingKeyHandler&&(m=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${c}:${s}`:s,H?m:void 0))}return a?(g.res=m,g.usedParams=this.getUsedParamsDetails(n),g):m}extendTranslation(t,n,r,a,i){var d,p;var s=this;if((d=this.i18nFormat)!=null&&d.parse)t=this.i18nFormat.parse(t,{...this.options.interpolation.defaultVariables,...r},r.lng||this.language||a.usedLng,a.usedNS,a.usedKey,{resolved:a});else if(!r.skipInterpolation){r.interpolation&&this.interpolator.init({...r,interpolation:{...this.options.interpolation,...r.interpolation}});const g=tt(t)&&(((p=r==null?void 0:r.interpolation)==null?void 0:p.skipOnVariables)!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let m;if(g){const S=t.match(this.interpolator.nestingRegexp);m=S&&S.length}let b=r.replace&&!tt(r.replace)?r.replace:r;if(this.options.interpolation.defaultVariables&&(b={...this.options.interpolation.defaultVariables,...b}),t=this.interpolator.interpolate(t,b,r.lng||this.language||a.usedLng,r),g){const S=t.match(this.interpolator.nestingRegexp),v=S&&S.length;m1&&arguments[1]!==void 0?arguments[1]:{},r,a,i,s,u;return tt(t)&&(t=[t]),t.forEach(c=>{if(this.isValidLookup(r))return;const d=this.extractFromKey(c,n),p=d.key;a=p;let g=d.namespaces;this.options.fallbackNS&&(g=g.concat(this.options.fallbackNS));const m=n.count!==void 0&&!tt(n.count),b=m&&!n.ordinal&&n.count===0,S=n.context!==void 0&&(tt(n.context)||typeof n.context=="number")&&n.context!=="",v=n.lngs?n.lngs:this.languageUtils.toResolveHierarchy(n.lng||this.language,n.fallbackLng);g.forEach(k=>{var R,x;this.isValidLookup(r)||(u=k,!AR[`${v[0]}-${k}`]&&((R=this.utils)!=null&&R.hasLoadedNamespace)&&!((x=this.utils)!=null&&x.hasLoadedNamespace(u))&&(AR[`${v[0]}-${k}`]=!0,this.logger.warn(`key "${a}" for languages "${v.join(", ")}" won't get resolved as namespace "${u}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),v.forEach(A=>{var _;if(this.isValidLookup(r))return;s=A;const N=[p];if((_=this.i18nFormat)!=null&&_.addLookupKeys)this.i18nFormat.addLookupKeys(N,p,A,k,n);else{let C;m&&(C=this.pluralResolver.getSuffix(A,n.count,n));const F=`${this.options.pluralSeparator}zero`,I=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(m&&(N.push(p+C),n.ordinal&&C.indexOf(I)===0&&N.push(p+C.replace(I,this.options.pluralSeparator)),b&&N.push(p+F)),S){const L=`${p}${this.options.contextSeparator}${n.context}`;N.push(L),m&&(N.push(L+C),n.ordinal&&C.indexOf(I)===0&&N.push(L+C.replace(I,this.options.pluralSeparator)),b&&N.push(L+F))}}let O;for(;O=N.pop();)this.isValidLookup(r)||(i=O,r=this.getResource(A,k,O,n))}))})}),{res:r,usedKey:a,exactUsedKey:i,usedLng:s,usedNS:u}}isValidLookup(t){return t!==void 0&&!(!this.options.returnNull&&t===null)&&!(!this.options.returnEmptyString&&t==="")}getResource(t,n,r){var i;let a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return(i=this.i18nFormat)!=null&&i.getResource?this.i18nFormat.getResource(t,n,r,a):this.resourceStore.getResource(t,n,r,a)}getUsedParamsDetails(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const n=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],r=t.replace&&!tt(t.replace);let a=r?t.replace:t;if(r&&typeof t.count<"u"&&(a.count=t.count),this.options.interpolation.defaultVariables&&(a={...this.options.interpolation.defaultVariables,...a}),!r){a={...a};for(const i of n)delete a[i]}return a}static hasDefaultValue(t){const n="defaultValue";for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)&&n===r.substring(0,n.length)&&t[r]!==void 0)return!0;return!1}}class RR{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Qr.create("languageUtils")}getScriptPartFromCode(t){if(t=$d(t),!t||t.indexOf("-")<0)return null;const n=t.split("-");return n.length===2||(n.pop(),n[n.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(n.join("-"))}getLanguagePartFromCode(t){if(t=$d(t),!t||t.indexOf("-")<0)return t;const n=t.split("-");return this.formatLanguageCode(n[0])}formatLanguageCode(t){if(tt(t)&&t.indexOf("-")>-1){let n;try{n=Intl.getCanonicalLocales(t)[0]}catch{}return n&&this.options.lowerCaseLng&&(n=n.toLowerCase()),n||(this.options.lowerCaseLng?t.toLowerCase():t)}return this.options.cleanCode||this.options.lowerCaseLng?t.toLowerCase():t}isSupportedCode(t){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(t=this.getLanguagePartFromCode(t)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(t)>-1}getBestMatchFromCodes(t){if(!t)return null;let n;return t.forEach(r=>{if(n)return;const a=this.formatLanguageCode(r);(!this.options.supportedLngs||this.isSupportedCode(a))&&(n=a)}),!n&&this.options.supportedLngs&&t.forEach(r=>{if(n)return;const a=this.getLanguagePartFromCode(r);if(this.isSupportedCode(a))return n=a;n=this.options.supportedLngs.find(i=>{if(i===a)return i;if(!(i.indexOf("-")<0&&a.indexOf("-")<0)&&(i.indexOf("-")>0&&a.indexOf("-")<0&&i.substring(0,i.indexOf("-"))===a||i.indexOf(a)===0&&a.length>1))return i})}),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n}getFallbackCodes(t,n){if(!t)return[];if(typeof t=="function"&&(t=t(n)),tt(t)&&(t=[t]),Array.isArray(t))return t;if(!n)return t.default||[];let r=t[n];return r||(r=t[this.getScriptPartFromCode(n)]),r||(r=t[this.formatLanguageCode(n)]),r||(r=t[this.getLanguagePartFromCode(n)]),r||(r=t.default),r||[]}toResolveHierarchy(t,n){const r=this.getFallbackCodes(n||this.options.fallbackLng||[],t),a=[],i=s=>{s&&(this.isSupportedCode(s)?a.push(s):this.logger.warn(`rejecting language code not found in supportedLngs: ${s}`))};return tt(t)&&(t.indexOf("-")>-1||t.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&i(this.formatLanguageCode(t)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&i(this.getScriptPartFromCode(t)),this.options.load!=="currentOnly"&&i(this.getLanguagePartFromCode(t))):tt(t)&&i(this.formatLanguageCode(t)),r.forEach(s=>{a.indexOf(s)<0&&i(this.formatLanguageCode(s))}),a}}const CR={zero:0,one:1,two:2,few:3,many:4,other:5},NR={select:e=>e===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class k${constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.languageUtils=t,this.options=n,this.logger=Qr.create("pluralResolver"),this.pluralRulesCache={}}addRule(t,n){this.rules[t]=n}clearCache(){this.pluralRulesCache={}}getRule(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r=$d(t==="dev"?"en":t),a=n.ordinal?"ordinal":"cardinal",i=JSON.stringify({cleanedCode:r,type:a});if(i in this.pluralRulesCache)return this.pluralRulesCache[i];let s;try{s=new Intl.PluralRules(r,{type:a})}catch{if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),NR;if(!t.match(/-|_/))return NR;const c=this.languageUtils.getLanguagePartFromCode(t);s=this.getRule(c,n)}return this.pluralRulesCache[i]=s,s}needsPlural(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=this.getRule(t,n);return r||(r=this.getRule("dev",n)),(r==null?void 0:r.resolvedOptions().pluralCategories.length)>1}getPluralFormsOfKey(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.getSuffixes(t,r).map(a=>`${n}${a}`)}getSuffixes(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=this.getRule(t,n);return r||(r=this.getRule("dev",n)),r?r.resolvedOptions().pluralCategories.sort((a,i)=>CR[a]-CR[i]).map(a=>`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${a}`):[]}getSuffix(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const a=this.getRule(t,r);return a?`${this.options.prepend}${r.ordinal?`ordinal${this.options.prepend}`:""}${a.select(n)}`:(this.logger.warn(`no plural rule found for: ${t}`),this.getSuffix("dev",n,r))}}const OR=function(e,t,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:".",a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,i=m$(e,t,n);return!i&&a&&tt(n)&&(i=Ox(e,n,r),i===void 0&&(i=Ox(t,n,r))),i},Ah=e=>e.replace(/\$/g,"$$$$");class T${constructor(){var n;let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=Qr.create("interpolator"),this.options=t,this.format=((n=t==null?void 0:t.interpolation)==null?void 0:n.format)||(r=>r),this.init(t)}init(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};t.interpolation||(t.interpolation={escapeValue:!0});const{escape:n,escapeValue:r,useRawValueToEscape:a,prefix:i,prefixEscaped:s,suffix:u,suffixEscaped:c,formatSeparator:d,unescapeSuffix:p,unescapePrefix:g,nestingPrefix:m,nestingPrefixEscaped:b,nestingSuffix:S,nestingSuffixEscaped:v,nestingOptionsSeparator:k,maxReplaces:R,alwaysFormat:x}=t.interpolation;this.escape=n!==void 0?n:y$,this.escapeValue=r!==void 0?r:!0,this.useRawValueToEscape=a!==void 0?a:!1,this.prefix=i?Jo(i):s||"{{",this.suffix=u?Jo(u):c||"}}",this.formatSeparator=d||",",this.unescapePrefix=p?"":g||"-",this.unescapeSuffix=this.unescapePrefix?"":p||"",this.nestingPrefix=m?Jo(m):b||Jo("$t("),this.nestingSuffix=S?Jo(S):v||Jo(")"),this.nestingOptionsSeparator=k||",",this.maxReplaces=R||1e3,this.alwaysFormat=x!==void 0?x:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const t=(n,r)=>(n==null?void 0:n.source)===r?(n.lastIndex=0,n):new RegExp(r,"g");this.regexp=t(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=t(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=t(this.nestingRegexp,`${this.nestingPrefix}(.+?)${this.nestingSuffix}`)}interpolate(t,n,r,a){var b;let i,s,u;const c=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},d=S=>{if(S.indexOf(this.formatSeparator)<0){const x=OR(n,c,S,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(x,void 0,r,{...a,...n,interpolationkey:S}):x}const v=S.split(this.formatSeparator),k=v.shift().trim(),R=v.join(this.formatSeparator).trim();return this.format(OR(n,c,k,this.options.keySeparator,this.options.ignoreJSONStructure),R,r,{...a,...n,interpolationkey:k})};this.resetRegExp();const p=(a==null?void 0:a.missingInterpolationHandler)||this.options.missingInterpolationHandler,g=((b=a==null?void 0:a.interpolation)==null?void 0:b.skipOnVariables)!==void 0?a.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:S=>Ah(S)},{regex:this.regexp,safeValue:S=>this.escapeValue?Ah(this.escape(S)):Ah(S)}].forEach(S=>{for(u=0;i=S.regex.exec(t);){const v=i[1].trim();if(s=d(v),s===void 0)if(typeof p=="function"){const R=p(t,i,a);s=tt(R)?R:""}else if(a&&Object.prototype.hasOwnProperty.call(a,v))s="";else if(g){s=i[0];continue}else this.logger.warn(`missed to pass in variable ${v} for interpolating ${t}`),s="";else!tt(s)&&!this.useRawValueToEscape&&(s=ER(s));const k=S.safeValue(s);if(t=t.replace(i[0],k),g?(S.regex.lastIndex+=s.length,S.regex.lastIndex-=i[0].length):S.regex.lastIndex=0,u++,u>=this.maxReplaces)break}}),t}nest(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a,i,s;const u=(c,d)=>{const p=this.nestingOptionsSeparator;if(c.indexOf(p)<0)return c;const g=c.split(new RegExp(`${p}[ ]*{`));let m=`{${g[1]}`;c=g[0],m=this.interpolate(m,s);const b=m.match(/'/g),S=m.match(/"/g);(((b==null?void 0:b.length)??0)%2===0&&!S||S.length%2!==0)&&(m=m.replace(/'/g,'"'));try{s=JSON.parse(m),d&&(s={...d,...s})}catch(v){return this.logger.warn(`failed parsing options string in nesting for key ${c}`,v),`${c}${p}${m}`}return s.defaultValue&&s.defaultValue.indexOf(this.prefix)>-1&&delete s.defaultValue,c};for(;a=this.nestingRegexp.exec(t);){let c=[];s={...r},s=s.replace&&!tt(s.replace)?s.replace:s,s.applyPostProcessor=!1,delete s.defaultValue;let d=!1;if(a[0].indexOf(this.formatSeparator)!==-1&&!/{.*}/.test(a[1])){const p=a[1].split(this.formatSeparator).map(g=>g.trim());a[1]=p.shift(),c=p,d=!0}if(i=n(u.call(this,a[1].trim(),s),s),i&&a[0]===t&&!tt(i))return i;tt(i)||(i=ER(i)),i||(this.logger.warn(`missed to resolve ${a[1]} for nesting ${t}`),i=""),d&&(i=c.reduce((p,g)=>this.format(p,g,r.lng,{...r,interpolationkey:a[1].trim()}),i.trim())),t=t.replace(a[0],i),this.regexp.lastIndex=0}return t}}const A$=e=>{let t=e.toLowerCase().trim();const n={};if(e.indexOf("(")>-1){const r=e.split("(");t=r[0].toLowerCase().trim();const a=r[1].substring(0,r[1].length-1);t==="currency"&&a.indexOf(":")<0?n.currency||(n.currency=a.trim()):t==="relativetime"&&a.indexOf(":")<0?n.range||(n.range=a.trim()):a.split(";").forEach(s=>{if(s){const[u,...c]=s.split(":"),d=c.join(":").trim().replace(/^'+|'+$/g,""),p=u.trim();n[p]||(n[p]=d),d==="false"&&(n[p]=!1),d==="true"&&(n[p]=!0),isNaN(d)||(n[p]=parseInt(d,10))}})}return{formatName:t,formatOptions:n}},es=e=>{const t={};return(n,r,a)=>{let i=a;a&&a.interpolationkey&&a.formatParams&&a.formatParams[a.interpolationkey]&&a[a.interpolationkey]&&(i={...i,[a.interpolationkey]:void 0});const s=r+JSON.stringify(i);let u=t[s];return u||(u=e($d(r),a),t[s]=u),u(n)}};class _${constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=Qr.create("formatter"),this.options=t,this.formats={number:es((n,r)=>{const a=new Intl.NumberFormat(n,{...r});return i=>a.format(i)}),currency:es((n,r)=>{const a=new Intl.NumberFormat(n,{...r,style:"currency"});return i=>a.format(i)}),datetime:es((n,r)=>{const a=new Intl.DateTimeFormat(n,{...r});return i=>a.format(i)}),relativetime:es((n,r)=>{const a=new Intl.RelativeTimeFormat(n,{...r});return i=>a.format(i,r.range||"day")}),list:es((n,r)=>{const a=new Intl.ListFormat(n,{...r});return i=>a.format(i)})},this.init(t)}init(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};this.formatSeparator=n.interpolation.formatSeparator||","}add(t,n){this.formats[t.toLowerCase().trim()]=n}addCached(t,n){this.formats[t.toLowerCase().trim()]=es(n)}format(t,n,r){let a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const i=n.split(this.formatSeparator);if(i.length>1&&i[0].indexOf("(")>1&&i[0].indexOf(")")<0&&i.find(u=>u.indexOf(")")>-1)){const u=i.findIndex(c=>c.indexOf(")")>-1);i[0]=[i[0],...i.splice(1,u)].join(this.formatSeparator)}return i.reduce((u,c)=>{var g;const{formatName:d,formatOptions:p}=A$(c);if(this.formats[d]){let m=u;try{const b=((g=a==null?void 0:a.formatParams)==null?void 0:g[a.interpolationkey])||{},S=b.locale||b.lng||a.locale||a.lng||r;m=this.formats[d](u,S,{...p,...a,...b})}catch(b){this.logger.warn(b)}return m}else this.logger.warn(`there was no format function for ${d}`);return u},t)}}const R$=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)};class C$ extends xf{constructor(t,n,r){var i,s;let a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};super(),this.backend=t,this.store=n,this.services=r,this.languageUtils=r.languageUtils,this.options=a,this.logger=Qr.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=a.maxParallelReads||10,this.readingCalls=0,this.maxRetries=a.maxRetries>=0?a.maxRetries:5,this.retryTimeout=a.retryTimeout>=1?a.retryTimeout:350,this.state={},this.queue=[],(s=(i=this.backend)==null?void 0:i.init)==null||s.call(i,r,a.backend,a)}queueLoad(t,n,r,a){const i={},s={},u={},c={};return t.forEach(d=>{let p=!0;n.forEach(g=>{const m=`${d}|${g}`;!r.reload&&this.store.hasResourceBundle(d,g)?this.state[m]=2:this.state[m]<0||(this.state[m]===1?s[m]===void 0&&(s[m]=!0):(this.state[m]=1,p=!1,s[m]===void 0&&(s[m]=!0),i[m]===void 0&&(i[m]=!0),c[g]===void 0&&(c[g]=!0)))}),p||(u[d]=!0)}),(Object.keys(i).length||Object.keys(s).length)&&this.queue.push({pending:s,pendingCount:Object.keys(s).length,loaded:{},errors:[],callback:a}),{toLoad:Object.keys(i),pending:Object.keys(s),toLoadLanguages:Object.keys(u),toLoadNamespaces:Object.keys(c)}}loaded(t,n,r){const a=t.split("|"),i=a[0],s=a[1];n&&this.emit("failedLoading",i,s,n),!n&&r&&this.store.addResourceBundle(i,s,r,void 0,void 0,{skipCopy:!0}),this.state[t]=n?-1:2,n&&r&&(this.state[t]=0);const u={};this.queue.forEach(c=>{h$(c.loaded,[i],s),R$(c,t),n&&c.errors.push(n),c.pendingCount===0&&!c.done&&(Object.keys(c.loaded).forEach(d=>{u[d]||(u[d]={});const p=c.loaded[d];p.length&&p.forEach(g=>{u[d][g]===void 0&&(u[d][g]=!0)})}),c.done=!0,c.errors.length?c.callback(c.errors):c.callback())}),this.emit("loaded",u),this.queue=this.queue.filter(c=>!c.done)}read(t,n,r){let a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:this.retryTimeout,s=arguments.length>5?arguments[5]:void 0;if(!t.length)return s(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:t,ns:n,fcName:r,tried:a,wait:i,callback:s});return}this.readingCalls++;const u=(d,p)=>{if(this.readingCalls--,this.waitingReads.length>0){const g=this.waitingReads.shift();this.read(g.lng,g.ns,g.fcName,g.tried,g.wait,g.callback)}if(d&&p&&a{this.read.call(this,t,n,r,a+1,i*2,s)},i);return}s(d,p)},c=this.backend[r].bind(this.backend);if(c.length===2){try{const d=c(t,n);d&&typeof d.then=="function"?d.then(p=>u(null,p)).catch(u):u(null,d)}catch(d){u(d)}return}return c(t,n,u)}prepareLoading(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),a&&a();tt(t)&&(t=this.languageUtils.toResolveHierarchy(t)),tt(n)&&(n=[n]);const i=this.queueLoad(t,n,r,a);if(!i.toLoad.length)return i.pending.length||a(),null;i.toLoad.forEach(s=>{this.loadOne(s)})}load(t,n,r){this.prepareLoading(t,n,{},r)}reload(t,n,r){this.prepareLoading(t,n,{reload:!0},r)}loadOne(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";const r=t.split("|"),a=r[0],i=r[1];this.read(a,i,"read",void 0,void 0,(s,u)=>{s&&this.logger.warn(`${n}loading namespace ${i} for language ${a} failed`,s),!s&&u&&this.logger.log(`${n}loaded namespace ${i} for language ${a}`,u),this.loaded(t,s,u)})}saveMissing(t,n,r,a,i){var c,d,p,g,m;let s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{},u=arguments.length>6&&arguments[6]!==void 0?arguments[6]:()=>{};if((d=(c=this.services)==null?void 0:c.utils)!=null&&d.hasLoadedNamespace&&!((g=(p=this.services)==null?void 0:p.utils)!=null&&g.hasLoadedNamespace(n))){this.logger.warn(`did not save key "${r}" as the namespace "${n}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(r==null||r==="")){if((m=this.backend)!=null&&m.create){const b={...s,isUpdate:i},S=this.backend.create.bind(this.backend);if(S.length<6)try{let v;S.length===5?v=S(t,n,r,a,b):v=S(t,n,r,a),v&&typeof v.then=="function"?v.then(k=>u(null,k)).catch(u):u(null,v)}catch(v){u(v)}else S(t,n,r,a,u,b)}!t||!t[0]||this.store.addResource(t[0],n,r,a)}}}const DR=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]=="object"&&(t=e[1]),tt(e[1])&&(t.defaultValue=e[1]),tt(e[2])&&(t.tDescription=e[2]),typeof e[2]=="object"||typeof e[3]=="object"){const n=e[3]||e[2];Object.keys(n).forEach(r=>{t[r]=n[r]})}return t},interpolation:{escapeValue:!0,format:e=>e,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}),IR=e=>{var t,n;return tt(e.ns)&&(e.ns=[e.ns]),tt(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),tt(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),((n=(t=e.supportedLngs)==null?void 0:t.indexOf)==null?void 0:n.call(t,"cimode"))<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),typeof e.initImmediate=="boolean"&&(e.initAsync=e.initImmediate),e},Kc=()=>{},N$=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(n=>{typeof e[n]=="function"&&(e[n]=e[n].bind(e))})};class lu extends xf{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;if(super(),this.options=IR(t),this.services={},this.logger=Qr,this.modules={external:[]},N$(this),n&&!this.isInitialized&&!t.isClone){if(!this.options.initAsync)return this.init(t,n),this;setTimeout(()=>{this.init(t,n)},0)}}init(){var t=this;let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0;this.isInitializing=!0,typeof n=="function"&&(r=n,n={}),n.defaultNS==null&&n.ns&&(tt(n.ns)?n.defaultNS=n.ns:n.ns.indexOf("translation")<0&&(n.defaultNS=n.ns[0]));const a=DR();this.options={...a,...this.options,...IR(n)},this.options.interpolation={...a.interpolation,...this.options.interpolation},n.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=n.keySeparator),n.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=n.nsSeparator);const i=p=>p?typeof p=="function"?new p:p:null;if(!this.options.isClone){this.modules.logger?Qr.init(i(this.modules.logger),this.options):Qr.init(null,this.options);let p;this.modules.formatter?p=this.modules.formatter:p=_$;const g=new RR(this.options);this.store=new TR(this.options.resources,this.options);const m=this.services;m.logger=Qr,m.resourceStore=this.store,m.languageUtils=g,m.pluralResolver=new k$(g,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),p&&(!this.options.interpolation.format||this.options.interpolation.format===a.interpolation.format)&&(m.formatter=i(p),m.formatter.init(m,this.options),this.options.interpolation.format=m.formatter.format.bind(m.formatter)),m.interpolator=new T$(this.options),m.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},m.backendConnector=new C$(i(this.modules.backend),m.resourceStore,m,this.options),m.backendConnector.on("*",function(b){for(var S=arguments.length,v=new Array(S>1?S-1:0),k=1;k1?S-1:0),k=1;k{b.init&&b.init(this)})}if(this.format=this.options.interpolation.format,r||(r=Kc),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const p=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);p.length>0&&p[0]!=="dev"&&(this.options.lng=p[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(p=>{this[p]=function(){return t.store[p](...arguments)}}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(p=>{this[p]=function(){return t.store[p](...arguments),t}});const c=Gl(),d=()=>{const p=(g,m)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),c.resolve(m),r(g,m)};if(this.languages&&!this.isInitialized)return p(null,this.t.bind(this));this.changeLanguage(this.options.lng,p)};return this.options.resources||!this.options.initAsync?d():setTimeout(d,0),c}loadResources(t){var i,s;let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Kc;const a=tt(t)?t:this.language;if(typeof t=="function"&&(r=t),!this.options.resources||this.options.partialBundledLanguages){if((a==null?void 0:a.toLowerCase())==="cimode"&&(!this.options.preload||this.options.preload.length===0))return r();const u=[],c=d=>{if(!d||d==="cimode")return;this.services.languageUtils.toResolveHierarchy(d).forEach(g=>{g!=="cimode"&&u.indexOf(g)<0&&u.push(g)})};a?c(a):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(p=>c(p)),(s=(i=this.options.preload)==null?void 0:i.forEach)==null||s.call(i,d=>c(d)),this.services.backendConnector.load(u,this.options.ns,d=>{!d&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),r(d)})}else r(null)}reloadResources(t,n,r){const a=Gl();return typeof t=="function"&&(r=t,t=void 0),typeof n=="function"&&(r=n,n=void 0),t||(t=this.languages),n||(n=this.options.ns),r||(r=Kc),this.services.backendConnector.reload(t,n,i=>{a.resolve(),r(i)}),a}use(t){if(!t)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!t.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return t.type==="backend"&&(this.modules.backend=t),(t.type==="logger"||t.log&&t.warn&&t.error)&&(this.modules.logger=t),t.type==="languageDetector"&&(this.modules.languageDetector=t),t.type==="i18nFormat"&&(this.modules.i18nFormat=t),t.type==="postProcessor"&&JP.addPostProcessor(t),t.type==="formatter"&&(this.modules.formatter=t),t.type==="3rdParty"&&this.modules.external.push(t),this}setResolvedLanguage(t){if(!(!t||!this.languages)&&!(["cimode","dev"].indexOf(t)>-1))for(let n=0;n-1)&&this.store.hasLanguageSomeTranslations(r)){this.resolvedLanguage=r;break}}}changeLanguage(t,n){var r=this;this.isLanguageChangingTo=t;const a=Gl();this.emit("languageChanging",t);const i=c=>{this.language=c,this.languages=this.services.languageUtils.toResolveHierarchy(c),this.resolvedLanguage=void 0,this.setResolvedLanguage(c)},s=(c,d)=>{d?(i(d),this.translator.changeLanguage(d),this.isLanguageChangingTo=void 0,this.emit("languageChanged",d),this.logger.log("languageChanged",d)):this.isLanguageChangingTo=void 0,a.resolve(function(){return r.t(...arguments)}),n&&n(c,function(){return r.t(...arguments)})},u=c=>{var p,g;!t&&!c&&this.services.languageDetector&&(c=[]);const d=tt(c)?c:this.services.languageUtils.getBestMatchFromCodes(c);d&&(this.language||i(d),this.translator.language||this.translator.changeLanguage(d),(g=(p=this.services.languageDetector)==null?void 0:p.cacheUserLanguage)==null||g.call(p,d)),this.loadResources(d,m=>{s(m,d)})};return!t&&this.services.languageDetector&&!this.services.languageDetector.async?u(this.services.languageDetector.detect()):!t&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(u):this.services.languageDetector.detect(u):u(t),a}getFixedT(t,n,r){var a=this;const i=function(s,u){let c;if(typeof u!="object"){for(var d=arguments.length,p=new Array(d>2?d-2:0),g=2;g`${c.keyPrefix}${m}${S}`):b=c.keyPrefix?`${c.keyPrefix}${m}${s}`:s,a.t(b,c)};return tt(t)?i.lng=t:i.lngs=t,i.ns=n,i.keyPrefix=r,i}t(){var a;for(var t=arguments.length,n=new Array(t),r=0;r1&&arguments[1]!==void 0?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const r=n.lng||this.resolvedLanguage||this.languages[0],a=this.options?this.options.fallbackLng:!1,i=this.languages[this.languages.length-1];if(r.toLowerCase()==="cimode")return!0;const s=(u,c)=>{const d=this.services.backendConnector.state[`${u}|${c}`];return d===-1||d===0||d===2};if(n.precheck){const u=n.precheck(this,s);if(u!==void 0)return u}return!!(this.hasResourceBundle(r,t)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||s(r,t)&&(!a||s(i,t)))}loadNamespaces(t,n){const r=Gl();return this.options.ns?(tt(t)&&(t=[t]),t.forEach(a=>{this.options.ns.indexOf(a)<0&&this.options.ns.push(a)}),this.loadResources(a=>{r.resolve(),n&&n(a)}),r):(n&&n(),Promise.resolve())}loadLanguages(t,n){const r=Gl();tt(t)&&(t=[t]);const a=this.options.preload||[],i=t.filter(s=>a.indexOf(s)<0&&this.services.languageUtils.isSupportedCode(s));return i.length?(this.options.preload=a.concat(i),this.loadResources(s=>{r.resolve(),n&&n(s)}),r):(n&&n(),Promise.resolve())}dir(t){var a,i;if(t||(t=this.resolvedLanguage||(((a=this.languages)==null?void 0:a.length)>0?this.languages[0]:this.language)),!t)return"rtl";const n=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],r=((i=this.services)==null?void 0:i.languageUtils)||new RR(DR());return n.indexOf(r.getLanguagePartFromCode(t))>-1||t.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;return new lu(t,n)}cloneInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Kc;const r=t.forkResourceStore;r&&delete t.forkResourceStore;const a={...this.options,...t,isClone:!0},i=new lu(a);if((t.debug!==void 0||t.prefix!==void 0)&&(i.logger=i.logger.clone(t)),["store","services","language"].forEach(u=>{i[u]=this[u]}),i.services={...this.services},i.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},r){const u=Object.keys(this.store.data).reduce((c,d)=>(c[d]={...this.store.data[d]},Object.keys(c[d]).reduce((p,g)=>(p[g]={...c[d][g]},p),{})),{});i.store=new TR(u,a),i.services.resourceStore=i.store}return i.translator=new Vd(i.services,a),i.translator.on("*",function(u){for(var c=arguments.length,d=new Array(c>1?c-1:0),p=1;p{var i,s,u,c;const a=[n,{code:t,...r||{}}];if((s=(i=e==null?void 0:e.services)==null?void 0:i.logger)!=null&&s.forward)return e.services.logger.forward(a,"warn","react-i18next::",!0);io(a[0])&&(a[0]=`react-i18next:: ${a[0]}`),(c=(u=e==null?void 0:e.services)==null?void 0:u.logger)!=null&&c.warn?e.services.logger.warn(...a):console!=null&&console.warn&&console.warn(...a)},LR={},Dx=(e,t,n,r)=>{io(n)&&LR[n]||(io(n)&&(LR[n]=new Date),D$(e,t,n,r))},ez=(e,t)=>()=>{if(e.isInitialized)t();else{const n=()=>{setTimeout(()=>{e.off("initialized",n)},0),t()};e.on("initialized",n)}},Ix=(e,t,n)=>{e.loadNamespaces(t,ez(e,n))},MR=(e,t,n,r)=>{if(io(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return Ix(e,n,r);n.forEach(a=>{e.options.ns.indexOf(a)<0&&e.options.ns.push(a)}),e.loadLanguages(t,ez(e,r))},I$=(e,t,n={})=>!t.languages||!t.languages.length?(Dx(t,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(r,a)=>{var i;if(((i=n.bindI18n)==null?void 0:i.indexOf("languageChanging"))>-1&&r.services.backendConnector.backend&&r.isLanguageChangingTo&&!a(r.isLanguageChangingTo,e))return!1}}),io=e=>typeof e=="string",L$=e=>typeof e=="object"&&e!==null,M$=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,F$={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},P$=e=>F$[e],z$=e=>e.replace(M$,P$);let Lx={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:z$};const B$=(e={})=>{Lx={...Lx,...e}},U$=()=>Lx;let tz;const j$=e=>{tz=e},G$=()=>tz,H$={type:"3rdParty",init(e){B$(e.options.react),j$(e)}},$$=T.createContext();class q${constructor(){this.usedNamespaces={}}addUsedNamespaces(t){t.forEach(n=>{this.usedNamespaces[n]||(this.usedNamespaces[n]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}const V$=(e,t)=>{const n=T.useRef();return T.useEffect(()=>{n.current=e},[e,t]),n.current},nz=(e,t,n,r)=>e.getFixedT(t,n,r),W$=(e,t,n,r)=>T.useCallback(nz(e,t,n,r),[e,t,n,r]),Ut=(e,t={})=>{var N,O,_,C;const{i18n:n}=t,{i18n:r,defaultNS:a}=T.useContext($$)||{},i=n||r||G$();if(i&&!i.reportNamespaces&&(i.reportNamespaces=new q$),!i){Dx(i,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const F=(L,H)=>io(H)?H:L$(H)&&io(H.defaultValue)?H.defaultValue:Array.isArray(L)?L[L.length-1]:L,I=[F,{},!1];return I.t=F,I.i18n={},I.ready=!1,I}(N=i.options.react)!=null&&N.wait&&Dx(i,"DEPRECATED_OPTION","useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");const s={...U$(),...i.options.react,...t},{useSuspense:u,keyPrefix:c}=s;let d=a||((O=i.options)==null?void 0:O.defaultNS);d=io(d)?[d]:d||["translation"],(C=(_=i.reportNamespaces).addUsedNamespaces)==null||C.call(_,d);const p=(i.isInitialized||i.initializedStoreOnce)&&d.every(F=>I$(F,i,s)),g=W$(i,t.lng||null,s.nsMode==="fallback"?d:d[0],c),m=()=>g,b=()=>nz(i,t.lng||null,s.nsMode==="fallback"?d:d[0],c),[S,v]=T.useState(m);let k=d.join();t.lng&&(k=`${t.lng}${k}`);const R=V$(k),x=T.useRef(!0);T.useEffect(()=>{const{bindI18n:F,bindI18nStore:I}=s;x.current=!0,!p&&!u&&(t.lng?MR(i,t.lng,d,()=>{x.current&&v(b)}):Ix(i,d,()=>{x.current&&v(b)})),p&&R&&R!==k&&x.current&&v(b);const L=()=>{x.current&&v(b)};return F&&(i==null||i.on(F,L)),I&&(i==null||i.store.on(I,L)),()=>{x.current=!1,i&&(F==null||F.split(" ").forEach(H=>i.off(H,L))),I&&i&&I.split(" ").forEach(H=>i.store.off(H,L))}},[i,k]),T.useEffect(()=>{x.current&&p&&v(m)},[i,c,p]);const A=[S,i,p];if(A.t=S,A.i18n=i,A.ready=p,p||!p&&!u)return A;throw new Promise(F=>{t.lng?MR(i,t.lng,d,()=>F()):Ix(i,d,()=>F())})},Y$="modulepreload",K$=function(e,t){return new URL(e,t).href},FR={},X$=function(t,n,r){let a=Promise.resolve();if(n&&n.length>0){const s=document.getElementsByTagName("link"),u=document.querySelector("meta[property=csp-nonce]"),c=(u==null?void 0:u.nonce)||(u==null?void 0:u.getAttribute("nonce"));a=Promise.allSettled(n.map(d=>{if(d=K$(d,r),d in FR)return;FR[d]=!0;const p=d.endsWith(".css"),g=p?'[rel="stylesheet"]':"";if(r)for(let b=s.length-1;b>=0;b--){const S=s[b];if(S.href===d&&(!p||S.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${d}"]${g}`))return;const m=document.createElement("link");if(m.rel=p?"stylesheet":Y$,p||(m.as="script"),m.crossOrigin="",m.href=d,c&&m.setAttribute("nonce",c),document.head.appendChild(m),p)return new Promise((b,S)=>{m.addEventListener("load",b),m.addEventListener("error",()=>S(new Error(`Unable to preload CSS for ${d}`)))})}))}function i(s){const u=new Event("vite:preloadError",{cancelable:!0});if(u.payload=s,window.dispatchEvent(u),!u.defaultPrevented)throw s}return a.then(s=>{for(const u of s||[])u.status==="rejected"&&i(u.reason);return t().catch(i)})},PR=e=>{let t;const n=new Set,r=(d,p)=>{const g=typeof d=="function"?d(t):d;if(!Object.is(g,t)){const m=t;t=p??(typeof g!="object"||g===null)?g:Object.assign({},t,g),n.forEach(b=>b(t,m))}},a=()=>t,u={setState:r,getState:a,getInitialState:()=>c,subscribe:d=>(n.add(d),()=>n.delete(d))},c=t=e(r,a,u);return u},Z$=e=>e?PR(e):PR,Q$=e=>e;function J$(e,t=Q$){const n=ye.useSyncExternalStore(e.subscribe,()=>t(e.getState()),()=>t(e.getInitialState()));return ye.useDebugValue(n),n}const e9=e=>{const t=Z$(e),n=r=>J$(t,r);return Object.assign(n,t),n},$k=e=>e9;function rz(e,t){let n;try{n=e()}catch{return}return{getItem:a=>{var i;const s=c=>c===null?null:JSON.parse(c,void 0),u=(i=n.getItem(a))!=null?i:null;return u instanceof Promise?u.then(s):s(u)},setItem:(a,i)=>n.setItem(a,JSON.stringify(i,void 0)),removeItem:a=>n.removeItem(a)}}const Mx=e=>t=>{try{const n=e(t);return n instanceof Promise?n:{then(r){return Mx(r)(n)},catch(r){return this}}}catch(n){return{then(r){return this},catch(r){return Mx(r)(n)}}}},t9=(e,t)=>(n,r,a)=>{let i={storage:rz(()=>localStorage),partialize:v=>v,version:0,merge:(v,k)=>({...k,...v}),...t},s=!1;const u=new Set,c=new Set;let d=i.storage;if(!d)return e((...v)=>{console.warn(`[zustand persist middleware] Unable to update item '${i.name}', the given storage is currently unavailable.`),n(...v)},r,a);const p=()=>{const v=i.partialize({...r()});return d.setItem(i.name,{state:v,version:i.version})},g=a.setState;a.setState=(v,k)=>{g(v,k),p()};const m=e((...v)=>{n(...v),p()},r,a);a.getInitialState=()=>m;let b;const S=()=>{var v,k;if(!d)return;s=!1,u.forEach(x=>{var A;return x((A=r())!=null?A:m)});const R=((k=i.onRehydrateStorage)==null?void 0:k.call(i,(v=r())!=null?v:m))||void 0;return Mx(d.getItem.bind(d))(i.name).then(x=>{if(x)if(typeof x.version=="number"&&x.version!==i.version){if(i.migrate){const A=i.migrate(x.state,x.version);return A instanceof Promise?A.then(N=>[!0,N]):[!0,A]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}else return[!1,x.state];return[!1,void 0]}).then(x=>{var A;const[N,O]=x;if(b=i.merge(O,(A=r())!=null?A:m),n(b,!0),N)return p()}).then(()=>{R==null||R(b,void 0),b=r(),s=!0,c.forEach(x=>x(b))}).catch(x=>{R==null||R(void 0,x)})};return a.persist={setOptions:v=>{i={...i,...v},v.storage&&(d=v.storage)},clearStorage:()=>{d==null||d.removeItem(i.name)},getOptions:()=>i,rehydrate:()=>S(),hasHydrated:()=>s,onHydrate:v=>(u.add(v),()=>{u.delete(v)}),onFinishHydration:v=>(c.add(v),()=>{c.delete(v)})},i.skipHydration||S(),b||m},n9=t9;function az(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var a=e.length;for(t=0;t{const t=i9(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:s=>{const u=s.split(qk);return u[0]===""&&u.length!==1&&u.shift(),oz(u,t)||a9(s)},getConflictingClassGroupIds:(s,u)=>{const c=n[s]||[];return u&&r[s]?[...c,...r[s]]:c}}},oz=(e,t)=>{var s;if(e.length===0)return t.classGroupId;const n=e[0],r=t.nextPart.get(n),a=r?oz(e.slice(1),r):void 0;if(a)return a;if(t.validators.length===0)return;const i=e.join(qk);return(s=t.validators.find(({validator:u})=>u(i)))==null?void 0:s.classGroupId},zR=/^\[(.+)\]$/,a9=e=>{if(zR.test(e)){const t=zR.exec(e)[1],n=t==null?void 0:t.substring(0,t.indexOf(":"));if(n)return"arbitrary.."+n}},i9=e=>{const{theme:t,classGroups:n}=e,r={nextPart:new Map,validators:[]};for(const a in n)Fx(n[a],r,a,t);return r},Fx=(e,t,n,r)=>{e.forEach(a=>{if(typeof a=="string"){const i=a===""?t:BR(t,a);i.classGroupId=n;return}if(typeof a=="function"){if(o9(a)){Fx(a(r),t,n,r);return}t.validators.push({validator:a,classGroupId:n});return}Object.entries(a).forEach(([i,s])=>{Fx(s,BR(t,i),n,r)})})},BR=(e,t)=>{let n=e;return t.split(qk).forEach(r=>{n.nextPart.has(r)||n.nextPart.set(r,{nextPart:new Map,validators:[]}),n=n.nextPart.get(r)}),n},o9=e=>e.isThemeGetter,s9=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=new Map,r=new Map;const a=(i,s)=>{n.set(i,s),t++,t>e&&(t=0,r=n,n=new Map)};return{get(i){let s=n.get(i);if(s!==void 0)return s;if((s=r.get(i))!==void 0)return a(i,s),s},set(i,s){n.has(i)?n.set(i,s):a(i,s)}}},Px="!",zx=":",l9=zx.length,u9=e=>{const{prefix:t,experimentalParseClassName:n}=e;let r=a=>{const i=[];let s=0,u=0,c=0,d;for(let S=0;Sc?d-c:void 0;return{modifiers:i,hasImportantModifier:m,baseClassName:g,maybePostfixModifierPosition:b}};if(t){const a=t+zx,i=r;r=s=>s.startsWith(a)?i(s.substring(a.length)):{isExternal:!0,modifiers:[],hasImportantModifier:!1,baseClassName:s,maybePostfixModifierPosition:void 0}}if(n){const a=r;r=i=>n({className:i,parseClassName:a})}return r},c9=e=>e.endsWith(Px)?e.substring(0,e.length-1):e.startsWith(Px)?e.substring(1):e,d9=e=>{const t=Object.fromEntries(e.orderSensitiveModifiers.map(r=>[r,!0]));return r=>{if(r.length<=1)return r;const a=[];let i=[];return r.forEach(s=>{s[0]==="["||t[s]?(a.push(...i.sort(),s),i=[]):i.push(s)}),a.push(...i.sort()),a}},f9=e=>({cache:s9(e.cacheSize),parseClassName:u9(e),sortModifiers:d9(e),...r9(e)}),p9=/\s+/,g9=(e,t)=>{const{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:a,sortModifiers:i}=t,s=[],u=e.trim().split(p9);let c="";for(let d=u.length-1;d>=0;d-=1){const p=u[d],{isExternal:g,modifiers:m,hasImportantModifier:b,baseClassName:S,maybePostfixModifierPosition:v}=n(p);if(g){c=p+(c.length>0?" "+c:c);continue}let k=!!v,R=r(k?S.substring(0,v):S);if(!R){if(!k){c=p+(c.length>0?" "+c:c);continue}if(R=r(S),!R){c=p+(c.length>0?" "+c:c);continue}k=!1}const x=i(m).join(":"),A=b?x+Px:x,N=A+R;if(s.includes(N))continue;s.push(N);const O=a(R,k);for(let _=0;_0?" "+c:c)}return c};function h9(){let e=0,t,n,r="";for(;e{if(typeof e=="string")return e;let t,n="";for(let r=0;rg(p),e());return n=f9(d),r=n.cache.get,a=n.cache.set,i=u,u(c)}function u(c){const d=r(c);if(d)return d;const p=g9(c,n);return a(c,p),p}return function(){return i(h9.apply(null,arguments))}}const sn=e=>{const t=n=>n[e]||[];return t.isThemeGetter=!0,t},lz=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,uz=/^\((?:(\w[\w-]*):)?(.+)\)$/i,b9=/^\d+\/\d+$/,y9=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,v9=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,S9=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,E9=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,w9=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ts=e=>b9.test(e),ft=e=>!!e&&!Number.isNaN(Number(e)),Xi=e=>!!e&&Number.isInteger(Number(e)),UR=e=>e.endsWith("%")&&ft(e.slice(0,-1)),ui=e=>y9.test(e),x9=()=>!0,k9=e=>v9.test(e)&&!S9.test(e),Vk=()=>!1,T9=e=>E9.test(e),A9=e=>w9.test(e),_9=e=>!Ge(e)&&!He(e),R9=e=>Ns(e,fz,Vk),Ge=e=>lz.test(e),Zi=e=>Ns(e,pz,k9),_h=e=>Ns(e,B9,ft),C9=e=>Ns(e,cz,Vk),N9=e=>Ns(e,dz,A9),O9=e=>Ns(e,Vk,T9),He=e=>uz.test(e),Xc=e=>Os(e,pz),D9=e=>Os(e,U9),I9=e=>Os(e,cz),L9=e=>Os(e,fz),M9=e=>Os(e,dz),F9=e=>Os(e,j9,!0),Ns=(e,t,n)=>{const r=lz.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},Os=(e,t,n=!1)=>{const r=uz.exec(e);return r?r[1]?t(r[1]):n:!1},cz=e=>e==="position",P9=new Set(["image","url"]),dz=e=>P9.has(e),z9=new Set(["length","size","percentage"]),fz=e=>z9.has(e),pz=e=>e==="length",B9=e=>e==="number",U9=e=>e==="family-name",j9=e=>e==="shadow",G9=()=>{const e=sn("color"),t=sn("font"),n=sn("text"),r=sn("font-weight"),a=sn("tracking"),i=sn("leading"),s=sn("breakpoint"),u=sn("container"),c=sn("spacing"),d=sn("radius"),p=sn("shadow"),g=sn("inset-shadow"),m=sn("drop-shadow"),b=sn("blur"),S=sn("perspective"),v=sn("aspect"),k=sn("ease"),R=sn("animate"),x=()=>["auto","avoid","all","avoid-page","page","left","right","column"],A=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],N=()=>["auto","hidden","clip","visible","scroll"],O=()=>["auto","contain","none"],_=()=>[He,Ge,c],C=()=>[ts,"full","auto",..._()],F=()=>[Xi,"none","subgrid",He,Ge],I=()=>["auto",{span:["full",Xi,He,Ge]},He,Ge],L=()=>[Xi,"auto",He,Ge],H=()=>["auto","min","max","fr",He,Ge],$=()=>["start","end","center","between","around","evenly","stretch","baseline"],U=()=>["start","end","center","stretch"],W=()=>["auto",..._()],Y=()=>[ts,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",..._()],j=()=>[e,He,Ge],G=()=>[UR,Zi],z=()=>["","none","full",d,He,Ge],K=()=>["",ft,Xc,Zi],D=()=>["solid","dashed","dotted","double"],V=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],B=()=>["","none",b,He,Ge],M=()=>["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",He,Ge],X=()=>["none",ft,He,Ge],Q=()=>["none",ft,He,Ge],le=()=>[ft,He,Ge],re=()=>[ts,"full",..._()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[ui],breakpoint:[ui],color:[x9],container:[ui],"drop-shadow":[ui],ease:["in","out","in-out"],font:[_9],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[ui],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[ui],shadow:[ui],spacing:["px",ft],text:[ui],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",ts,Ge,He,v]}],container:["container"],columns:[{columns:[ft,Ge,He,u]}],"break-after":[{"break-after":x()}],"break-before":[{"break-before":x()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...A(),Ge,He]}],overflow:[{overflow:N()}],"overflow-x":[{"overflow-x":N()}],"overflow-y":[{"overflow-y":N()}],overscroll:[{overscroll:O()}],"overscroll-x":[{"overscroll-x":O()}],"overscroll-y":[{"overscroll-y":O()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:C()}],"inset-x":[{"inset-x":C()}],"inset-y":[{"inset-y":C()}],start:[{start:C()}],end:[{end:C()}],top:[{top:C()}],right:[{right:C()}],bottom:[{bottom:C()}],left:[{left:C()}],visibility:["visible","invisible","collapse"],z:[{z:[Xi,"auto",He,Ge]}],basis:[{basis:[ts,"full","auto",u,..._()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[ft,ts,"auto","initial","none",Ge]}],grow:[{grow:["",ft,He,Ge]}],shrink:[{shrink:["",ft,He,Ge]}],order:[{order:[Xi,"first","last","none",He,Ge]}],"grid-cols":[{"grid-cols":F()}],"col-start-end":[{col:I()}],"col-start":[{"col-start":L()}],"col-end":[{"col-end":L()}],"grid-rows":[{"grid-rows":F()}],"row-start-end":[{row:I()}],"row-start":[{"row-start":L()}],"row-end":[{"row-end":L()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":H()}],"auto-rows":[{"auto-rows":H()}],gap:[{gap:_()}],"gap-x":[{"gap-x":_()}],"gap-y":[{"gap-y":_()}],"justify-content":[{justify:[...$(),"normal"]}],"justify-items":[{"justify-items":[...U(),"normal"]}],"justify-self":[{"justify-self":["auto",...U()]}],"align-content":[{content:["normal",...$()]}],"align-items":[{items:[...U(),"baseline"]}],"align-self":[{self:["auto",...U(),"baseline"]}],"place-content":[{"place-content":$()}],"place-items":[{"place-items":[...U(),"baseline"]}],"place-self":[{"place-self":["auto",...U()]}],p:[{p:_()}],px:[{px:_()}],py:[{py:_()}],ps:[{ps:_()}],pe:[{pe:_()}],pt:[{pt:_()}],pr:[{pr:_()}],pb:[{pb:_()}],pl:[{pl:_()}],m:[{m:W()}],mx:[{mx:W()}],my:[{my:W()}],ms:[{ms:W()}],me:[{me:W()}],mt:[{mt:W()}],mr:[{mr:W()}],mb:[{mb:W()}],ml:[{ml:W()}],"space-x":[{"space-x":_()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":_()}],"space-y-reverse":["space-y-reverse"],size:[{size:Y()}],w:[{w:[u,"screen",...Y()]}],"min-w":[{"min-w":[u,"screen","none",...Y()]}],"max-w":[{"max-w":[u,"screen","none","prose",{screen:[s]},...Y()]}],h:[{h:["screen",...Y()]}],"min-h":[{"min-h":["screen","none",...Y()]}],"max-h":[{"max-h":["screen",...Y()]}],"font-size":[{text:["base",n,Xc,Zi]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,He,_h]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",UR,Ge]}],"font-family":[{font:[D9,Ge,t]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[a,He,Ge]}],"line-clamp":[{"line-clamp":[ft,"none",He,_h]}],leading:[{leading:[i,..._()]}],"list-image":[{"list-image":["none",He,Ge]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",He,Ge]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:j()}],"text-color":[{text:j()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...D(),"wavy"]}],"text-decoration-thickness":[{decoration:[ft,"from-font","auto",He,Zi]}],"text-decoration-color":[{decoration:j()}],"underline-offset":[{"underline-offset":[ft,"auto",He,Ge]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:_()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",He,Ge]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",He,Ge]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...A(),I9,C9]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","space","round"]}]}],"bg-size":[{bg:["auto","cover","contain",L9,R9]}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Xi,He,Ge],radial:["",He,Ge],conic:[Xi,He,Ge]},M9,N9]}],"bg-color":[{bg:j()}],"gradient-from-pos":[{from:G()}],"gradient-via-pos":[{via:G()}],"gradient-to-pos":[{to:G()}],"gradient-from":[{from:j()}],"gradient-via":[{via:j()}],"gradient-to":[{to:j()}],rounded:[{rounded:z()}],"rounded-s":[{"rounded-s":z()}],"rounded-e":[{"rounded-e":z()}],"rounded-t":[{"rounded-t":z()}],"rounded-r":[{"rounded-r":z()}],"rounded-b":[{"rounded-b":z()}],"rounded-l":[{"rounded-l":z()}],"rounded-ss":[{"rounded-ss":z()}],"rounded-se":[{"rounded-se":z()}],"rounded-ee":[{"rounded-ee":z()}],"rounded-es":[{"rounded-es":z()}],"rounded-tl":[{"rounded-tl":z()}],"rounded-tr":[{"rounded-tr":z()}],"rounded-br":[{"rounded-br":z()}],"rounded-bl":[{"rounded-bl":z()}],"border-w":[{border:K()}],"border-w-x":[{"border-x":K()}],"border-w-y":[{"border-y":K()}],"border-w-s":[{"border-s":K()}],"border-w-e":[{"border-e":K()}],"border-w-t":[{"border-t":K()}],"border-w-r":[{"border-r":K()}],"border-w-b":[{"border-b":K()}],"border-w-l":[{"border-l":K()}],"divide-x":[{"divide-x":K()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":K()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...D(),"hidden","none"]}],"divide-style":[{divide:[...D(),"hidden","none"]}],"border-color":[{border:j()}],"border-color-x":[{"border-x":j()}],"border-color-y":[{"border-y":j()}],"border-color-s":[{"border-s":j()}],"border-color-e":[{"border-e":j()}],"border-color-t":[{"border-t":j()}],"border-color-r":[{"border-r":j()}],"border-color-b":[{"border-b":j()}],"border-color-l":[{"border-l":j()}],"divide-color":[{divide:j()}],"outline-style":[{outline:[...D(),"none","hidden"]}],"outline-offset":[{"outline-offset":[ft,He,Ge]}],"outline-w":[{outline:["",ft,Xc,Zi]}],"outline-color":[{outline:[e]}],shadow:[{shadow:["","none",p,F9,O9]}],"shadow-color":[{shadow:j()}],"inset-shadow":[{"inset-shadow":["none",He,Ge,g]}],"inset-shadow-color":[{"inset-shadow":j()}],"ring-w":[{ring:K()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:j()}],"ring-offset-w":[{"ring-offset":[ft,Zi]}],"ring-offset-color":[{"ring-offset":j()}],"inset-ring-w":[{"inset-ring":K()}],"inset-ring-color":[{"inset-ring":j()}],opacity:[{opacity:[ft,He,Ge]}],"mix-blend":[{"mix-blend":[...V(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":V()}],filter:[{filter:["","none",He,Ge]}],blur:[{blur:B()}],brightness:[{brightness:[ft,He,Ge]}],contrast:[{contrast:[ft,He,Ge]}],"drop-shadow":[{"drop-shadow":["","none",m,He,Ge]}],grayscale:[{grayscale:["",ft,He,Ge]}],"hue-rotate":[{"hue-rotate":[ft,He,Ge]}],invert:[{invert:["",ft,He,Ge]}],saturate:[{saturate:[ft,He,Ge]}],sepia:[{sepia:["",ft,He,Ge]}],"backdrop-filter":[{"backdrop-filter":["","none",He,Ge]}],"backdrop-blur":[{"backdrop-blur":B()}],"backdrop-brightness":[{"backdrop-brightness":[ft,He,Ge]}],"backdrop-contrast":[{"backdrop-contrast":[ft,He,Ge]}],"backdrop-grayscale":[{"backdrop-grayscale":["",ft,He,Ge]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[ft,He,Ge]}],"backdrop-invert":[{"backdrop-invert":["",ft,He,Ge]}],"backdrop-opacity":[{"backdrop-opacity":[ft,He,Ge]}],"backdrop-saturate":[{"backdrop-saturate":[ft,He,Ge]}],"backdrop-sepia":[{"backdrop-sepia":["",ft,He,Ge]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":_()}],"border-spacing-x":[{"border-spacing-x":_()}],"border-spacing-y":[{"border-spacing-y":_()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",He,Ge]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[ft,"initial",He,Ge]}],ease:[{ease:["linear","initial",k,He,Ge]}],delay:[{delay:[ft,He,Ge]}],animate:[{animate:["none",R,He,Ge]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[S,He,Ge]}],"perspective-origin":[{"perspective-origin":M()}],rotate:[{rotate:X()}],"rotate-x":[{"rotate-x":X()}],"rotate-y":[{"rotate-y":X()}],"rotate-z":[{"rotate-z":X()}],scale:[{scale:Q()}],"scale-x":[{"scale-x":Q()}],"scale-y":[{"scale-y":Q()}],"scale-z":[{"scale-z":Q()}],"scale-3d":["scale-3d"],skew:[{skew:le()}],"skew-x":[{"skew-x":le()}],"skew-y":[{"skew-y":le()}],transform:[{transform:[He,Ge,"","none","gpu","cpu"]}],"transform-origin":[{origin:M()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:re()}],"translate-x":[{"translate-x":re()}],"translate-y":[{"translate-y":re()}],"translate-z":[{"translate-z":re()}],"translate-none":["translate-none"],accent:[{accent:j()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:j()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",He,Ge]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":_()}],"scroll-mx":[{"scroll-mx":_()}],"scroll-my":[{"scroll-my":_()}],"scroll-ms":[{"scroll-ms":_()}],"scroll-me":[{"scroll-me":_()}],"scroll-mt":[{"scroll-mt":_()}],"scroll-mr":[{"scroll-mr":_()}],"scroll-mb":[{"scroll-mb":_()}],"scroll-ml":[{"scroll-ml":_()}],"scroll-p":[{"scroll-p":_()}],"scroll-px":[{"scroll-px":_()}],"scroll-py":[{"scroll-py":_()}],"scroll-ps":[{"scroll-ps":_()}],"scroll-pe":[{"scroll-pe":_()}],"scroll-pt":[{"scroll-pt":_()}],"scroll-pr":[{"scroll-pr":_()}],"scroll-pb":[{"scroll-pb":_()}],"scroll-pl":[{"scroll-pl":_()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",He,Ge]}],fill:[{fill:["none",...j()]}],"stroke-w":[{stroke:[ft,Xc,Zi,_h]}],stroke:[{stroke:["none",...j()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["before","after","placeholder","file","marker","selection","first-line","first-letter","backdrop","*","**"]}},H9=m9(G9);function Me(...e){return H9(iz(e))}function $9(){const e="0123456789abcdef";let t="#";for(let n=0;n<6;n++)t+=e.charAt(Math.floor(Math.random()*16));return t}function Lr(e){return e instanceof Error?e.message:`${e}`}const Wk=e=>{const t=e;t.use={};for(const n of Object.keys(t.getState()))t.use[n]=()=>t(r=>r[n]);return t},gz="",Ia="ghost",q9="#B2EBF2",V9="#000",W9="#E2E2E2",Y9="#EEEEEE",K9="#F57F17",X9="#969696",Z9="#F57F17",jR="#B2EBF2",Zc=50,GR=100,HR=4,Q9=20,J9=15,$R="*",eq={"text/plain":[".txt",".md",".html",".htm",".tex",".json",".xml",".yaml",".yml",".rtf",".odt",".epub",".csv",".log",".conf",".ini",".properties",".sql",".bat",".sh",".c",".cpp",".py",".java",".js",".ts",".swift",".go",".rb",".php",".css",".scss",".less"],"application/pdf":[".pdf"],"application/msword":[".doc"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":[".docx"],"application/vnd.openxmlformats-officedocument.presentationml.presentation":[".pptx"]},qR={name:"LightRAG",github:"https://github.com/HKUDS/LightRAG"},tq=$k()(n9(e=>({theme:"system",language:"en",showPropertyPanel:!0,showNodeSearchBar:!0,showNodeLabel:!0,enableNodeDrag:!0,showEdgeLabel:!1,enableHideUnselectedEdges:!0,enableEdgeEvents:!1,graphQueryMaxDepth:3,graphMinDegree:0,graphLayoutMaxIterations:15,queryLabel:$R,enableHealthCheck:!0,apiKey:null,currentTab:"documents",retrievalHistory:[],querySettings:{mode:"global",response_type:"Multiple Paragraphs",top_k:10,max_token_for_text_unit:4e3,max_token_for_global_context:4e3,max_token_for_local_context:4e3,only_need_context:!1,only_need_prompt:!1,stream:!0,history_turns:3,hl_keywords:[],ll_keywords:[]},setTheme:t=>e({theme:t}),setLanguage:t=>{e({language:t}),X$(async()=>{const{default:n}=await Promise.resolve().then(()=>O$);return{default:n}},void 0,import.meta.url).then(({default:n})=>{n.language!==t&&n.changeLanguage(t)})},setGraphLayoutMaxIterations:t=>e({graphLayoutMaxIterations:t}),setQueryLabel:t=>e({queryLabel:t}),setGraphQueryMaxDepth:t=>e({graphQueryMaxDepth:t}),setGraphMinDegree:t=>e({graphMinDegree:t}),setEnableHealthCheck:t=>e({enableHealthCheck:t}),setApiKey:t=>e({apiKey:t}),setCurrentTab:t=>e({currentTab:t}),setRetrievalHistory:t=>e({retrievalHistory:t}),updateQuerySettings:t=>e(n=>({querySettings:{...n.querySettings,...t}}))}),{name:"settings-storage",storage:rz(()=>localStorage),version:8,migrate:(e,t)=>(t<2&&(e.showEdgeLabel=!1),t<3&&(e.queryLabel=$R),t<4&&(e.showPropertyPanel=!0,e.showNodeSearchBar=!0,e.showNodeLabel=!0,e.enableHealthCheck=!0,e.apiKey=null),t<5&&(e.currentTab="documents"),t<6&&(e.querySettings={mode:"global",response_type:"Multiple Paragraphs",top_k:10,max_token_for_text_unit:4e3,max_token_for_global_context:4e3,max_token_for_local_context:4e3,only_need_context:!1,only_need_prompt:!1,stream:!0,history_turns:3,hl_keywords:[],ll_keywords:[]},e.retrievalHistory=[]),t<7&&(e.graphQueryMaxDepth=3,e.graphLayoutMaxIterations=15),t<8&&(e.graphMinDegree=0,e.language="en"),e)})),je=Wk(tq),nq={language:"Language",theme:"Theme",light:"Light",dark:"Dark",system:"System"},rq={documents:"Documents",knowledgeGraph:"Knowledge Graph",retrieval:"Retrieval",api:"API",projectRepository:"Project Repository",themeToggle:{switchToLight:"Switch to light theme",switchToDark:"Switch to dark theme"}},aq={clearDocuments:{button:"Clear",tooltip:"Clear documents",title:"Clear Documents",confirm:"Do you really want to clear all documents?",confirmButton:"YES",success:"Documents cleared successfully",failed:`Clear Documents Failed: -{{message}}`,error:`Clear Documents Failed: -{{error}}`},uploadDocuments:{button:"Upload",tooltip:"Upload documents",title:"Upload Documents",description:"Drag and drop your documents here or click to browse.",uploading:"Uploading {{name}}: {{percent}}%",success:`Upload Success: -{{name}} uploaded successfully`,failed:`Upload Failed: -{{name}} -{{message}}`,error:`Upload Failed: -{{name}} -{{error}}`,generalError:`Upload Failed -{{error}}`,fileTypes:"Supported types: TXT, MD, DOCX, PDF, PPTX, RTF, ODT, EPUB, HTML, HTM, TEX, JSON, XML, YAML, YML, CSV, LOG, CONF, INI, PROPERTIES, SQL, BAT, SH, C, CPP, PY, JAVA, JS, TS, SWIFT, GO, RB, PHP, CSS, SCSS, LESS"},documentManager:{title:"Document Management",scanButton:"Scan",scanTooltip:"Scan documents",uploadedTitle:"Uploaded Documents",uploadedDescription:"List of uploaded documents and their statuses.",emptyTitle:"No Documents",emptyDescription:"There are no uploaded documents yet.",columns:{id:"ID",summary:"Summary",status:"Status",length:"Length",chunks:"Chunks",created:"Created",updated:"Updated",metadata:"Metadata"},status:{completed:"Completed",processing:"Processing",pending:"Pending",failed:"Failed"},errors:{loadFailed:`Failed to load documents -{{error}}`,scanFailed:`Failed to scan documents -{{error}}`,scanProgressFailed:`Failed to get scan progress -{{error}}`}}},iq={sideBar:{settings:{settings:"Settings",healthCheck:"Health Check",showPropertyPanel:"Show Property Panel",showSearchBar:"Show Search Bar",showNodeLabel:"Show Node Label",nodeDraggable:"Node Draggable",showEdgeLabel:"Show Edge Label",hideUnselectedEdges:"Hide Unselected Edges",edgeEvents:"Edge Events",maxQueryDepth:"Max Query Depth",minDegree:"Minimum Degree",maxLayoutIterations:"Max Layout Iterations",depth:"Depth",degree:"Degree",apiKey:"API Key",enterYourAPIkey:"Enter your API key",save:"Save",refreshLayout:"Refresh Layout"},zoomControl:{zoomIn:"Zoom In",zoomOut:"Zoom Out",resetZoom:"Reset Zoom"},layoutsControl:{startAnimation:"Start the layout animation",stopAnimation:"Stop the layout animation",layoutGraph:"Layout Graph",layouts:{Circular:"Circular",Circlepack:"Circlepack",Random:"Random",Noverlaps:"Noverlaps","Force Directed":"Force Directed","Force Atlas":"Force Atlas"}},fullScreenControl:{fullScreen:"Full Screen",windowed:"Windowed"}},statusIndicator:{connected:"Connected",disconnected:"Disconnected"},statusCard:{unavailable:"Status information unavailable",storageInfo:"Storage Info",workingDirectory:"Working Directory",inputDirectory:"Input Directory",llmConfig:"LLM Configuration",llmBinding:"LLM Binding",llmBindingHost:"LLM Binding Host",llmModel:"LLM Model",maxTokens:"Max Tokens",embeddingConfig:"Embedding Configuration",embeddingBinding:"Embedding Binding",embeddingBindingHost:"Embedding Binding Host",embeddingModel:"Embedding Model",storageConfig:"Storage Configuration",kvStorage:"KV Storage",docStatusStorage:"Doc Status Storage",graphStorage:"Graph Storage",vectorStorage:"Vector Storage"},propertiesView:{node:{title:"Node",id:"ID",labels:"Labels",degree:"Degree",properties:"Properties",relationships:"Relationships",propertyNames:{description:"Description",entity_id:"Name",entity_type:"Type",source_id:"SrcID",Neighbour:"Neigh"}},edge:{title:"Relationship",id:"ID",type:"Type",source:"Source",target:"Target",properties:"Properties"}},search:{placeholder:"Search nodes...",message:"And {count} others"},graphLabels:{selectTooltip:"Select query label",noLabels:"No labels found",label:"Label",placeholder:"Search labels...",andOthers:"And {count} others"}},oq={chatMessage:{copyTooltip:"Copy to clipboard",copyError:"Failed to copy text to clipboard"},retrieval:{startPrompt:"Start a retrieval by typing your query below",clear:"Clear",send:"Send",placeholder:"Type your query...",error:"Error: Failed to get response"},querySettings:{parametersTitle:"Parameters",parametersDescription:"Configure your query parameters",queryMode:"Query Mode",queryModeTooltip:`Select the retrieval strategy: -• Naive: Basic search without advanced techniques -• Local: Context-dependent information retrieval -• Global: Utilizes global knowledge base -• Hybrid: Combines local and global retrieval -• Mix: Integrates knowledge graph with vector retrieval`,queryModeOptions:{naive:"Naive",local:"Local",global:"Global",hybrid:"Hybrid",mix:"Mix"},responseFormat:"Response Format",responseFormatTooltip:`Defines the response format. Examples: -• Multiple Paragraphs -• Single Paragraph -• Bullet Points`,responseFormatOptions:{multipleParagraphs:"Multiple Paragraphs",singleParagraph:"Single Paragraph",bulletPoints:"Bullet Points"},topK:"Top K Results",topKTooltip:"Number of top items to retrieve. Represents entities in 'local' mode and relationships in 'global' mode",topKPlaceholder:"Number of results",maxTokensTextUnit:"Max Tokens for Text Unit",maxTokensTextUnitTooltip:"Maximum number of tokens allowed for each retrieved text chunk",maxTokensGlobalContext:"Max Tokens for Global Context",maxTokensGlobalContextTooltip:"Maximum number of tokens allocated for relationship descriptions in global retrieval",maxTokensLocalContext:"Max Tokens for Local Context",maxTokensLocalContextTooltip:"Maximum number of tokens allocated for entity descriptions in local retrieval",historyTurns:"History Turns",historyTurnsTooltip:"Number of complete conversation turns (user-assistant pairs) to consider in the response context",historyTurnsPlaceholder:"Number of history turns",hlKeywords:"High-Level Keywords",hlKeywordsTooltip:"List of high-level keywords to prioritize in retrieval. Separate with commas",hlkeywordsPlaceHolder:"Enter keywords",llKeywords:"Low-Level Keywords",llKeywordsTooltip:"List of low-level keywords to refine retrieval focus. Separate with commas",onlyNeedContext:"Only Need Context",onlyNeedContextTooltip:"If True, only returns the retrieved context without generating a response",onlyNeedPrompt:"Only Need Prompt",onlyNeedPromptTooltip:"If True, only returns the generated prompt without producing a response",streamResponse:"Stream Response",streamResponseTooltip:"If True, enables streaming output for real-time responses"}},sq={loading:"Loading API Documentation..."},lq={settings:nq,header:rq,documentPanel:aq,graphPanel:iq,retrievePanel:oq,apiSite:sq},uq={language:"语言",theme:"主题",light:"浅色",dark:"深色",system:"系统"},cq={documents:"文档",knowledgeGraph:"知识图谱",retrieval:"检索",api:"API",projectRepository:"项目仓库",themeToggle:{switchToLight:"切换到浅色主题",switchToDark:"切换到深色主题"}},dq={clearDocuments:{button:"清空",tooltip:"清空文档",title:"清空文档",confirm:"确定要清空所有文档吗?",confirmButton:"确定",success:"文档清空成功",failed:`清空文档失败: -{{message}}`,error:`清空文档失败: -{{error}}`},uploadDocuments:{button:"上传",tooltip:"上传文档",title:"上传文档",description:"拖拽文件到此处或点击浏览",uploading:"正在上传 {{name}}:{{percent}}%",success:`上传成功: -{{name}} 上传完成`,failed:`上传失败: -{{name}} -{{message}}`,error:`上传失败: -{{name}} -{{error}}`,generalError:`上传失败 -{{error}}`,fileTypes:"支持的文件类型:TXT, MD, DOCX, PDF, PPTX, RTF, ODT, EPUB, HTML, HTM, TEX, JSON, XML, YAML, YML, CSV, LOG, CONF, INI, PROPERTIES, SQL, BAT, SH, C, CPP, PY, JAVA, JS, TS, SWIFT, GO, RB, PHP, CSS, SCSS, LESS"},documentManager:{title:"文档管理",scanButton:"扫描",scanTooltip:"扫描文档",uploadedTitle:"已上传文档",uploadedDescription:"已上传文档列表及其状态",emptyTitle:"无文档",emptyDescription:"还没有上传任何文档",columns:{id:"ID",summary:"摘要",status:"状态",length:"长度",chunks:"分块",created:"创建时间",updated:"更新时间",metadata:"元数据"},status:{completed:"已完成",processing:"处理中",pending:"等待中",failed:"失败"},errors:{loadFailed:`加载文档失败 -{{error}}`,scanFailed:`扫描文档失败 -{{error}}`,scanProgressFailed:`获取扫描进度失败 -{{error}}`}}},fq={sideBar:{settings:{settings:"设置",healthCheck:"健康检查",showPropertyPanel:"显示属性面板",showSearchBar:"显示搜索栏",showNodeLabel:"显示节点标签",nodeDraggable:"节点可拖动",showEdgeLabel:"显示边标签",hideUnselectedEdges:"隐藏未选中的边",edgeEvents:"边事件",maxQueryDepth:"最大查询深度",minDegree:"最小度数",maxLayoutIterations:"最大布局迭代次数",depth:"深度",degree:"邻边",apiKey:"API密钥",enterYourAPIkey:"输入您的API密钥",save:"保存",refreshLayout:"刷新布局"},zoomControl:{zoomIn:"放大",zoomOut:"缩小",resetZoom:"重置缩放"},layoutsControl:{startAnimation:"开始布局动画",stopAnimation:"停止布局动画",layoutGraph:"图布局",layouts:{Circular:"环形",Circlepack:"圆形打包",Random:"随机",Noverlaps:"无重叠","Force Directed":"力导向","Force Atlas":"力图"}},fullScreenControl:{fullScreen:"全屏",windowed:"窗口"}},statusIndicator:{connected:"已连接",disconnected:"未连接"},statusCard:{unavailable:"状态信息不可用",storageInfo:"存储信息",workingDirectory:"工作目录",inputDirectory:"输入目录",llmConfig:"LLM配置",llmBinding:"LLM绑定",llmBindingHost:"LLM绑定主机",llmModel:"LLM模型",maxTokens:"最大令牌数",embeddingConfig:"嵌入配置",embeddingBinding:"嵌入绑定",embeddingBindingHost:"嵌入绑定主机",embeddingModel:"嵌入模型",storageConfig:"存储配置",kvStorage:"KV存储",docStatusStorage:"文档状态存储",graphStorage:"图存储",vectorStorage:"向量存储"},propertiesView:{node:{title:"节点",id:"ID",labels:"标签",degree:"度数",properties:"属性",relationships:"关系",propertyNames:{description:"描述",entity_id:"名称",entity_type:"类型",source_id:"信源ID",Neighbour:"邻接"}},edge:{title:"关系",id:"ID",type:"类型",source:"源节点",target:"目标节点",properties:"属性"}},search:{placeholder:"搜索节点...",message:"还有 {count} 个"},graphLabels:{selectTooltip:"选择查询标签",noLabels:"未找到标签",label:"标签",placeholder:"搜索标签...",andOthers:"还有 {count} 个"}},pq={chatMessage:{copyTooltip:"复制到剪贴板",copyError:"复制文本到剪贴板失败"},retrieval:{startPrompt:"输入查询开始检索",clear:"清空",send:"发送",placeholder:"输入查询...",error:"错误:获取响应失败"},querySettings:{parametersTitle:"参数",parametersDescription:"配置查询参数",queryMode:"查询模式",queryModeTooltip:`选择检索策略: -• Naive:基础搜索,无高级技术 -• Local:上下文相关信息检索 -• Global:利用全局知识库 -• Hybrid:结合本地和全局检索 -• Mix:整合知识图谱和向量检索`,queryModeOptions:{naive:"朴素",local:"本地",global:"全局",hybrid:"混合",mix:"混合"},responseFormat:"响应格式",responseFormatTooltip:`定义响应格式。例如: -• 多段落 -• 单段落 -• 要点`,responseFormatOptions:{multipleParagraphs:"多段落",singleParagraph:"单段落",bulletPoints:"要点"},topK:"Top K结果",topKTooltip:"检索的顶部项目数。在'local'模式下表示实体,在'global'模式下表示关系",topKPlaceholder:"结果数量",maxTokensTextUnit:"文本单元最大令牌数",maxTokensTextUnitTooltip:"每个检索文本块允许的最大令牌数",maxTokensGlobalContext:"全局上下文最大令牌数",maxTokensGlobalContextTooltip:"全局检索中关系描述的最大令牌数",maxTokensLocalContext:"本地上下文最大令牌数",maxTokensLocalContextTooltip:"本地检索中实体描述的最大令牌数",historyTurns:"历史轮次",historyTurnsTooltip:"响应上下文中考虑的完整对话轮次(用户-助手对)数量",historyTurnsPlaceholder:"历史轮次数",hlKeywords:"高级关键词",hlKeywordsTooltip:"检索中优先考虑的高级关键词列表。用逗号分隔",hlkeywordsPlaceHolder:"输入关键词",llKeywords:"低级关键词",llKeywordsTooltip:"用于细化检索重点的低级关键词列表。用逗号分隔",onlyNeedContext:"仅需上下文",onlyNeedContextTooltip:"如果为True,仅返回检索到的上下文而不生成响应",onlyNeedPrompt:"仅需提示",onlyNeedPromptTooltip:"如果为True,仅返回生成的提示而不产生响应",streamResponse:"流式响应",streamResponseTooltip:"如果为True,启用实时流式输出响应"}},gq={loading:"正在加载 API 文档..."},hq={settings:uq,header:cq,documentPanel:dq,graphPanel:fq,retrievePanel:pq,apiSite:gq},mq=async()=>{const e=je.getState().language;return await Zt.use(H$).init({resources:{en:{translation:lq},zh:{translation:hq}},lng:e,fallbackLng:"en",interpolation:{escapeValue:!1}}),je.subscribe(t=>{const n=t.language;Zt.language!==n&&Zt.changeLanguage(n)}),Zt},bq={theme:"system",setTheme:()=>null},hz=T.createContext(bq);function yq({children:e,...t}){const n=je.use.theme(),r=je.use.setTheme();T.useEffect(()=>{const i=window.document.documentElement;if(i.classList.remove("light","dark"),n==="system"){const s=window.matchMedia("(prefers-color-scheme: dark)"),u=c=>{i.classList.remove("light","dark"),i.classList.add(c.matches?"dark":"light")};return i.classList.add(s.matches?"dark":"light"),s.addEventListener("change",u),()=>s.removeEventListener("change",u)}else i.classList.add(n)},[n]);const a={theme:n,setTheme:r};return E.jsx(hz.Provider,{...t,value:a,children:e})}const vq={visibleTabs:{},setTabVisibility:()=>{},isTabVisible:()=>!1},mz=T.createContext(vq),Sq=({children:e})=>{const t=je.use.currentTab(),[n,r]=T.useState(()=>({[t]:!0}));T.useEffect(()=>{r(i=>({...i,[t]:!0}))},[t]);const a=T.useMemo(()=>({visibleTabs:n,setTabVisibility:(i,s)=>{r(u=>({...u,[i]:s}))},isTabVisible:i=>!!n[i]}),[n]);return E.jsx(mz.Provider,{value:a,children:e})},VR=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,WR=iz,bz=(e,t)=>n=>{var r;if((t==null?void 0:t.variants)==null)return WR(e,n==null?void 0:n.class,n==null?void 0:n.className);const{variants:a,defaultVariants:i}=t,s=Object.keys(a).map(d=>{const p=n==null?void 0:n[d],g=i==null?void 0:i[d];if(p===null)return null;const m=VR(p)||VR(g);return a[d][m]}),u=n&&Object.entries(n).reduce((d,p)=>{let[g,m]=p;return m===void 0||(d[g]=m),d},{}),c=t==null||(r=t.compoundVariants)===null||r===void 0?void 0:r.reduce((d,p)=>{let{class:g,className:m,...b}=p;return Object.entries(b).every(S=>{let[v,k]=S;return Array.isArray(k)?k.includes({...i,...u}[v]):{...i,...u}[v]===k})?[...d,g,m]:d},[]);return WR(e,s,c,n==null?void 0:n.class,n==null?void 0:n.className)},Eq=bz("relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7",{variants:{variant:{default:"bg-background text-foreground",destructive:"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"}},defaultVariants:{variant:"default"}}),yz=T.forwardRef(({className:e,variant:t,...n},r)=>E.jsx("div",{ref:r,role:"alert",className:Me(Eq({variant:t}),e),...n}));yz.displayName="Alert";const vz=T.forwardRef(({className:e,...t},n)=>E.jsx("h5",{ref:n,className:Me("mb-1 leading-none font-medium tracking-tight",e),...t}));vz.displayName="AlertTitle";const Sz=T.forwardRef(({className:e,...t},n)=>E.jsx("div",{ref:n,className:Me("text-sm [&_p]:leading-relaxed",e),...t}));Sz.displayName="AlertDescription";function Ez(e,t){return function(){return e.apply(t,arguments)}}const{toString:wq}=Object.prototype,{getPrototypeOf:Yk}=Object,kf=(e=>t=>{const n=wq.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),zr=e=>(e=e.toLowerCase(),t=>kf(t)===e),Tf=e=>t=>typeof t===e,{isArray:Ds}=Array,uu=Tf("undefined");function xq(e){return e!==null&&!uu(e)&&e.constructor!==null&&!uu(e.constructor)&&er(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const wz=zr("ArrayBuffer");function kq(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&wz(e.buffer),t}const Tq=Tf("string"),er=Tf("function"),xz=Tf("number"),Af=e=>e!==null&&typeof e=="object",Aq=e=>e===!0||e===!1,Td=e=>{if(kf(e)!=="object")return!1;const t=Yk(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},_q=zr("Date"),Rq=zr("File"),Cq=zr("Blob"),Nq=zr("FileList"),Oq=e=>Af(e)&&er(e.pipe),Dq=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||er(e.append)&&((t=kf(e))==="formdata"||t==="object"&&er(e.toString)&&e.toString()==="[object FormData]"))},Iq=zr("URLSearchParams"),[Lq,Mq,Fq,Pq]=["ReadableStream","Request","Response","Headers"].map(zr),zq=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function xu(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,a;if(typeof e!="object"&&(e=[e]),Ds(e))for(r=0,a=e.length;r0;)if(a=n[r],t===a.toLowerCase())return a;return null}const ao=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,Tz=e=>!uu(e)&&e!==ao;function Bx(){const{caseless:e}=Tz(this)&&this||{},t={},n=(r,a)=>{const i=e&&kz(t,a)||a;Td(t[i])&&Td(r)?t[i]=Bx(t[i],r):Td(r)?t[i]=Bx({},r):Ds(r)?t[i]=r.slice():t[i]=r};for(let r=0,a=arguments.length;r(xu(t,(a,i)=>{n&&er(a)?e[i]=Ez(a,n):e[i]=a},{allOwnKeys:r}),e),Uq=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),jq=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},Gq=(e,t,n,r)=>{let a,i,s;const u={};if(t=t||{},e==null)return t;do{for(a=Object.getOwnPropertyNames(e),i=a.length;i-- >0;)s=a[i],(!r||r(s,e,t))&&!u[s]&&(t[s]=e[s],u[s]=!0);e=n!==!1&&Yk(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},Hq=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return r!==-1&&r===n},$q=e=>{if(!e)return null;if(Ds(e))return e;let t=e.length;if(!xz(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},qq=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&Yk(Uint8Array)),Vq=(e,t)=>{const r=(e&&e[Symbol.iterator]).call(e);let a;for(;(a=r.next())&&!a.done;){const i=a.value;t.call(e,i[0],i[1])}},Wq=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},Yq=zr("HTMLFormElement"),Kq=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,a){return r.toUpperCase()+a}),YR=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),Xq=zr("RegExp"),Az=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};xu(n,(a,i)=>{let s;(s=t(a,i,e))!==!1&&(r[i]=s||a)}),Object.defineProperties(e,r)},Zq=e=>{Az(e,(t,n)=>{if(er(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=e[n];if(er(r)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},Qq=(e,t)=>{const n={},r=a=>{a.forEach(i=>{n[i]=!0})};return Ds(e)?r(e):r(String(e).split(t)),n},Jq=()=>{},e8=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t,Rh="abcdefghijklmnopqrstuvwxyz",KR="0123456789",_z={DIGIT:KR,ALPHA:Rh,ALPHA_DIGIT:Rh+Rh.toUpperCase()+KR},t8=(e=16,t=_z.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n};function n8(e){return!!(e&&er(e.append)&&e[Symbol.toStringTag]==="FormData"&&e[Symbol.iterator])}const r8=e=>{const t=new Array(10),n=(r,a)=>{if(Af(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[a]=r;const i=Ds(r)?[]:{};return xu(r,(s,u)=>{const c=n(s,a+1);!uu(c)&&(i[u]=c)}),t[a]=void 0,i}}return r};return n(e,0)},a8=zr("AsyncFunction"),i8=e=>e&&(Af(e)||er(e))&&er(e.then)&&er(e.catch),Rz=((e,t)=>e?setImmediate:t?((n,r)=>(ao.addEventListener("message",({source:a,data:i})=>{a===ao&&i===n&&r.length&&r.shift()()},!1),a=>{r.push(a),ao.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",er(ao.postMessage)),o8=typeof queueMicrotask<"u"?queueMicrotask.bind(ao):typeof process<"u"&&process.nextTick||Rz,pe={isArray:Ds,isArrayBuffer:wz,isBuffer:xq,isFormData:Dq,isArrayBufferView:kq,isString:Tq,isNumber:xz,isBoolean:Aq,isObject:Af,isPlainObject:Td,isReadableStream:Lq,isRequest:Mq,isResponse:Fq,isHeaders:Pq,isUndefined:uu,isDate:_q,isFile:Rq,isBlob:Cq,isRegExp:Xq,isFunction:er,isStream:Oq,isURLSearchParams:Iq,isTypedArray:qq,isFileList:Nq,forEach:xu,merge:Bx,extend:Bq,trim:zq,stripBOM:Uq,inherits:jq,toFlatObject:Gq,kindOf:kf,kindOfTest:zr,endsWith:Hq,toArray:$q,forEachEntry:Vq,matchAll:Wq,isHTMLForm:Yq,hasOwnProperty:YR,hasOwnProp:YR,reduceDescriptors:Az,freezeMethods:Zq,toObjectSet:Qq,toCamelCase:Kq,noop:Jq,toFiniteNumber:e8,findKey:kz,global:ao,isContextDefined:Tz,ALPHABET:_z,generateString:t8,isSpecCompliantForm:n8,toJSONObject:r8,isAsyncFn:a8,isThenable:i8,setImmediate:Rz,asap:o8};function at(e,t,n,r,a){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),a&&(this.response=a,this.status=a.status?a.status:null)}pe.inherits(at,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:pe.toJSONObject(this.config),code:this.code,status:this.status}}});const Cz=at.prototype,Nz={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{Nz[e]={value:e}});Object.defineProperties(at,Nz);Object.defineProperty(Cz,"isAxiosError",{value:!0});at.from=(e,t,n,r,a,i)=>{const s=Object.create(Cz);return pe.toFlatObject(e,s,function(c){return c!==Error.prototype},u=>u!=="isAxiosError"),at.call(s,e.message,t,n,r,a),s.cause=e,s.name=e.name,i&&Object.assign(s,i),s};const s8=null;function Ux(e){return pe.isPlainObject(e)||pe.isArray(e)}function Oz(e){return pe.endsWith(e,"[]")?e.slice(0,-2):e}function XR(e,t,n){return e?e.concat(t).map(function(a,i){return a=Oz(a),!n&&i?"["+a+"]":a}).join(n?".":""):t}function l8(e){return pe.isArray(e)&&!e.some(Ux)}const u8=pe.toFlatObject(pe,{},null,function(t){return/^is[A-Z]/.test(t)});function _f(e,t,n){if(!pe.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=pe.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(v,k){return!pe.isUndefined(k[v])});const r=n.metaTokens,a=n.visitor||p,i=n.dots,s=n.indexes,c=(n.Blob||typeof Blob<"u"&&Blob)&&pe.isSpecCompliantForm(t);if(!pe.isFunction(a))throw new TypeError("visitor must be a function");function d(S){if(S===null)return"";if(pe.isDate(S))return S.toISOString();if(!c&&pe.isBlob(S))throw new at("Blob is not supported. Use a Buffer instead.");return pe.isArrayBuffer(S)||pe.isTypedArray(S)?c&&typeof Blob=="function"?new Blob([S]):Buffer.from(S):S}function p(S,v,k){let R=S;if(S&&!k&&typeof S=="object"){if(pe.endsWith(v,"{}"))v=r?v:v.slice(0,-2),S=JSON.stringify(S);else if(pe.isArray(S)&&l8(S)||(pe.isFileList(S)||pe.endsWith(v,"[]"))&&(R=pe.toArray(S)))return v=Oz(v),R.forEach(function(A,N){!(pe.isUndefined(A)||A===null)&&t.append(s===!0?XR([v],N,i):s===null?v:v+"[]",d(A))}),!1}return Ux(S)?!0:(t.append(XR(k,v,i),d(S)),!1)}const g=[],m=Object.assign(u8,{defaultVisitor:p,convertValue:d,isVisitable:Ux});function b(S,v){if(!pe.isUndefined(S)){if(g.indexOf(S)!==-1)throw Error("Circular reference detected in "+v.join("."));g.push(S),pe.forEach(S,function(R,x){(!(pe.isUndefined(R)||R===null)&&a.call(t,R,pe.isString(x)?x.trim():x,v,m))===!0&&b(R,v?v.concat(x):[x])}),g.pop()}}if(!pe.isObject(e))throw new TypeError("data must be an object");return b(e),t}function ZR(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function Kk(e,t){this._pairs=[],e&&_f(e,this,t)}const Dz=Kk.prototype;Dz.append=function(t,n){this._pairs.push([t,n])};Dz.toString=function(t){const n=t?function(r){return t.call(this,r,ZR)}:ZR;return this._pairs.map(function(a){return n(a[0])+"="+n(a[1])},"").join("&")};function c8(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Iz(e,t,n){if(!t)return e;const r=n&&n.encode||c8;pe.isFunction(n)&&(n={serialize:n});const a=n&&n.serialize;let i;if(a?i=a(t,n):i=pe.isURLSearchParams(t)?t.toString():new Kk(t,n).toString(r),i){const s=e.indexOf("#");s!==-1&&(e=e.slice(0,s)),e+=(e.indexOf("?")===-1?"?":"&")+i}return e}class QR{constructor(){this.handlers=[]}use(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){pe.forEach(this.handlers,function(r){r!==null&&t(r)})}}const Lz={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},d8=typeof URLSearchParams<"u"?URLSearchParams:Kk,f8=typeof FormData<"u"?FormData:null,p8=typeof Blob<"u"?Blob:null,g8={isBrowser:!0,classes:{URLSearchParams:d8,FormData:f8,Blob:p8},protocols:["http","https","file","blob","url","data"]},Xk=typeof window<"u"&&typeof document<"u",jx=typeof navigator=="object"&&navigator||void 0,h8=Xk&&(!jx||["ReactNative","NativeScript","NS"].indexOf(jx.product)<0),m8=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",b8=Xk&&window.location.href||"http://localhost",y8=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Xk,hasStandardBrowserEnv:h8,hasStandardBrowserWebWorkerEnv:m8,navigator:jx,origin:b8},Symbol.toStringTag,{value:"Module"})),En={...y8,...g8};function v8(e,t){return _f(e,new En.classes.URLSearchParams,Object.assign({visitor:function(n,r,a,i){return En.isNode&&pe.isBuffer(n)?(this.append(r,n.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)}},t))}function S8(e){return pe.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function E8(e){const t={},n=Object.keys(e);let r;const a=n.length;let i;for(r=0;r=n.length;return s=!s&&pe.isArray(a)?a.length:s,c?(pe.hasOwnProp(a,s)?a[s]=[a[s],r]:a[s]=r,!u):((!a[s]||!pe.isObject(a[s]))&&(a[s]=[]),t(n,r,a[s],i)&&pe.isArray(a[s])&&(a[s]=E8(a[s])),!u)}if(pe.isFormData(e)&&pe.isFunction(e.entries)){const n={};return pe.forEachEntry(e,(r,a)=>{t(S8(r),a,n,0)}),n}return null}function w8(e,t,n){if(pe.isString(e))try{return(t||JSON.parse)(e),pe.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}const ku={transitional:Lz,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const r=n.getContentType()||"",a=r.indexOf("application/json")>-1,i=pe.isObject(t);if(i&&pe.isHTMLForm(t)&&(t=new FormData(t)),pe.isFormData(t))return a?JSON.stringify(Mz(t)):t;if(pe.isArrayBuffer(t)||pe.isBuffer(t)||pe.isStream(t)||pe.isFile(t)||pe.isBlob(t)||pe.isReadableStream(t))return t;if(pe.isArrayBufferView(t))return t.buffer;if(pe.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let u;if(i){if(r.indexOf("application/x-www-form-urlencoded")>-1)return v8(t,this.formSerializer).toString();if((u=pe.isFileList(t))||r.indexOf("multipart/form-data")>-1){const c=this.env&&this.env.FormData;return _f(u?{"files[]":t}:t,c&&new c,this.formSerializer)}}return i||a?(n.setContentType("application/json",!1),w8(t)):t}],transformResponse:[function(t){const n=this.transitional||ku.transitional,r=n&&n.forcedJSONParsing,a=this.responseType==="json";if(pe.isResponse(t)||pe.isReadableStream(t))return t;if(t&&pe.isString(t)&&(r&&!this.responseType||a)){const s=!(n&&n.silentJSONParsing)&&a;try{return JSON.parse(t)}catch(u){if(s)throw u.name==="SyntaxError"?at.from(u,at.ERR_BAD_RESPONSE,this,null,this.response):u}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:En.classes.FormData,Blob:En.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};pe.forEach(["delete","get","head","post","put","patch"],e=>{ku.headers[e]={}});const x8=pe.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),k8=e=>{const t={};let n,r,a;return e&&e.split(` -`).forEach(function(s){a=s.indexOf(":"),n=s.substring(0,a).trim().toLowerCase(),r=s.substring(a+1).trim(),!(!n||t[n]&&x8[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t},JR=Symbol("internals");function Hl(e){return e&&String(e).trim().toLowerCase()}function Ad(e){return e===!1||e==null?e:pe.isArray(e)?e.map(Ad):String(e)}function T8(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const A8=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function Ch(e,t,n,r,a){if(pe.isFunction(r))return r.call(this,t,n);if(a&&(t=n),!!pe.isString(t)){if(pe.isString(r))return t.indexOf(r)!==-1;if(pe.isRegExp(r))return r.test(t)}}function _8(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function R8(e,t){const n=pe.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(a,i,s){return this[r].call(this,t,a,i,s)},configurable:!0})})}let jn=class{constructor(t){t&&this.set(t)}set(t,n,r){const a=this;function i(u,c,d){const p=Hl(c);if(!p)throw new Error("header name must be a non-empty string");const g=pe.findKey(a,p);(!g||a[g]===void 0||d===!0||d===void 0&&a[g]!==!1)&&(a[g||c]=Ad(u))}const s=(u,c)=>pe.forEach(u,(d,p)=>i(d,p,c));if(pe.isPlainObject(t)||t instanceof this.constructor)s(t,n);else if(pe.isString(t)&&(t=t.trim())&&!A8(t))s(k8(t),n);else if(pe.isHeaders(t))for(const[u,c]of t.entries())i(c,u,r);else t!=null&&i(n,t,r);return this}get(t,n){if(t=Hl(t),t){const r=pe.findKey(this,t);if(r){const a=this[r];if(!n)return a;if(n===!0)return T8(a);if(pe.isFunction(n))return n.call(this,a,r);if(pe.isRegExp(n))return n.exec(a);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=Hl(t),t){const r=pe.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||Ch(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let a=!1;function i(s){if(s=Hl(s),s){const u=pe.findKey(r,s);u&&(!n||Ch(r,r[u],u,n))&&(delete r[u],a=!0)}}return pe.isArray(t)?t.forEach(i):i(t),a}clear(t){const n=Object.keys(this);let r=n.length,a=!1;for(;r--;){const i=n[r];(!t||Ch(this,this[i],i,t,!0))&&(delete this[i],a=!0)}return a}normalize(t){const n=this,r={};return pe.forEach(this,(a,i)=>{const s=pe.findKey(r,i);if(s){n[s]=Ad(a),delete n[i];return}const u=t?_8(i):String(i).trim();u!==i&&delete n[i],n[u]=Ad(a),r[u]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return pe.forEach(this,(r,a)=>{r!=null&&r!==!1&&(n[a]=t&&pe.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(` -`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(a=>r.set(a)),r}static accessor(t){const r=(this[JR]=this[JR]={accessors:{}}).accessors,a=this.prototype;function i(s){const u=Hl(s);r[u]||(R8(a,s),r[u]=!0)}return pe.isArray(t)?t.forEach(i):i(t),this}};jn.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);pe.reduceDescriptors(jn.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});pe.freezeMethods(jn);function Nh(e,t){const n=this||ku,r=t||n,a=jn.from(r.headers);let i=r.data;return pe.forEach(e,function(u){i=u.call(n,i,a.normalize(),t?t.status:void 0)}),a.normalize(),i}function Fz(e){return!!(e&&e.__CANCEL__)}function Is(e,t,n){at.call(this,e??"canceled",at.ERR_CANCELED,t,n),this.name="CanceledError"}pe.inherits(Is,at,{__CANCEL__:!0});function Pz(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new at("Request failed with status code "+n.status,[at.ERR_BAD_REQUEST,at.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function C8(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function N8(e,t){e=e||10;const n=new Array(e),r=new Array(e);let a=0,i=0,s;return t=t!==void 0?t:1e3,function(c){const d=Date.now(),p=r[i];s||(s=d),n[a]=c,r[a]=d;let g=i,m=0;for(;g!==a;)m+=n[g++],g=g%e;if(a=(a+1)%e,a===i&&(i=(i+1)%e),d-s{n=p,a=null,i&&(clearTimeout(i),i=null),e.apply(null,d)};return[(...d)=>{const p=Date.now(),g=p-n;g>=r?s(d,p):(a=d,i||(i=setTimeout(()=>{i=null,s(a)},r-g)))},()=>a&&s(a)]}const Wd=(e,t,n=3)=>{let r=0;const a=N8(50,250);return O8(i=>{const s=i.loaded,u=i.lengthComputable?i.total:void 0,c=s-r,d=a(c),p=s<=u;r=s;const g={loaded:s,total:u,progress:u?s/u:void 0,bytes:c,rate:d||void 0,estimated:d&&u&&p?(u-s)/d:void 0,event:i,lengthComputable:u!=null,[t?"download":"upload"]:!0};e(g)},n)},eC=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},tC=e=>(...t)=>pe.asap(()=>e(...t)),D8=En.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,En.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(En.origin),En.navigator&&/(msie|trident)/i.test(En.navigator.userAgent)):()=>!0,I8=En.hasStandardBrowserEnv?{write(e,t,n,r,a,i){const s=[e+"="+encodeURIComponent(t)];pe.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),pe.isString(r)&&s.push("path="+r),pe.isString(a)&&s.push("domain="+a),i===!0&&s.push("secure"),document.cookie=s.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function L8(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function M8(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function zz(e,t){return e&&!L8(t)?M8(e,t):t}const nC=e=>e instanceof jn?{...e}:e;function so(e,t){t=t||{};const n={};function r(d,p,g,m){return pe.isPlainObject(d)&&pe.isPlainObject(p)?pe.merge.call({caseless:m},d,p):pe.isPlainObject(p)?pe.merge({},p):pe.isArray(p)?p.slice():p}function a(d,p,g,m){if(pe.isUndefined(p)){if(!pe.isUndefined(d))return r(void 0,d,g,m)}else return r(d,p,g,m)}function i(d,p){if(!pe.isUndefined(p))return r(void 0,p)}function s(d,p){if(pe.isUndefined(p)){if(!pe.isUndefined(d))return r(void 0,d)}else return r(void 0,p)}function u(d,p,g){if(g in t)return r(d,p);if(g in e)return r(void 0,d)}const c={url:i,method:i,data:i,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,withXSRFToken:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,beforeRedirect:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:u,headers:(d,p,g)=>a(nC(d),nC(p),g,!0)};return pe.forEach(Object.keys(Object.assign({},e,t)),function(p){const g=c[p]||a,m=g(e[p],t[p],p);pe.isUndefined(m)&&g!==u||(n[p]=m)}),n}const Bz=e=>{const t=so({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:a,xsrfCookieName:i,headers:s,auth:u}=t;t.headers=s=jn.from(s),t.url=Iz(zz(t.baseURL,t.url),e.params,e.paramsSerializer),u&&s.set("Authorization","Basic "+btoa((u.username||"")+":"+(u.password?unescape(encodeURIComponent(u.password)):"")));let c;if(pe.isFormData(n)){if(En.hasStandardBrowserEnv||En.hasStandardBrowserWebWorkerEnv)s.setContentType(void 0);else if((c=s.getContentType())!==!1){const[d,...p]=c?c.split(";").map(g=>g.trim()).filter(Boolean):[];s.setContentType([d||"multipart/form-data",...p].join("; "))}}if(En.hasStandardBrowserEnv&&(r&&pe.isFunction(r)&&(r=r(t)),r||r!==!1&&D8(t.url))){const d=a&&i&&I8.read(i);d&&s.set(a,d)}return t},F8=typeof XMLHttpRequest<"u",P8=F8&&function(e){return new Promise(function(n,r){const a=Bz(e);let i=a.data;const s=jn.from(a.headers).normalize();let{responseType:u,onUploadProgress:c,onDownloadProgress:d}=a,p,g,m,b,S;function v(){b&&b(),S&&S(),a.cancelToken&&a.cancelToken.unsubscribe(p),a.signal&&a.signal.removeEventListener("abort",p)}let k=new XMLHttpRequest;k.open(a.method.toUpperCase(),a.url,!0),k.timeout=a.timeout;function R(){if(!k)return;const A=jn.from("getAllResponseHeaders"in k&&k.getAllResponseHeaders()),O={data:!u||u==="text"||u==="json"?k.responseText:k.response,status:k.status,statusText:k.statusText,headers:A,config:e,request:k};Pz(function(C){n(C),v()},function(C){r(C),v()},O),k=null}"onloadend"in k?k.onloadend=R:k.onreadystatechange=function(){!k||k.readyState!==4||k.status===0&&!(k.responseURL&&k.responseURL.indexOf("file:")===0)||setTimeout(R)},k.onabort=function(){k&&(r(new at("Request aborted",at.ECONNABORTED,e,k)),k=null)},k.onerror=function(){r(new at("Network Error",at.ERR_NETWORK,e,k)),k=null},k.ontimeout=function(){let N=a.timeout?"timeout of "+a.timeout+"ms exceeded":"timeout exceeded";const O=a.transitional||Lz;a.timeoutErrorMessage&&(N=a.timeoutErrorMessage),r(new at(N,O.clarifyTimeoutError?at.ETIMEDOUT:at.ECONNABORTED,e,k)),k=null},i===void 0&&s.setContentType(null),"setRequestHeader"in k&&pe.forEach(s.toJSON(),function(N,O){k.setRequestHeader(O,N)}),pe.isUndefined(a.withCredentials)||(k.withCredentials=!!a.withCredentials),u&&u!=="json"&&(k.responseType=a.responseType),d&&([m,S]=Wd(d,!0),k.addEventListener("progress",m)),c&&k.upload&&([g,b]=Wd(c),k.upload.addEventListener("progress",g),k.upload.addEventListener("loadend",b)),(a.cancelToken||a.signal)&&(p=A=>{k&&(r(!A||A.type?new Is(null,e,k):A),k.abort(),k=null)},a.cancelToken&&a.cancelToken.subscribe(p),a.signal&&(a.signal.aborted?p():a.signal.addEventListener("abort",p)));const x=C8(a.url);if(x&&En.protocols.indexOf(x)===-1){r(new at("Unsupported protocol "+x+":",at.ERR_BAD_REQUEST,e));return}k.send(i||null)})},z8=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let r=new AbortController,a;const i=function(d){if(!a){a=!0,u();const p=d instanceof Error?d:this.reason;r.abort(p instanceof at?p:new Is(p instanceof Error?p.message:p))}};let s=t&&setTimeout(()=>{s=null,i(new at(`timeout ${t} of ms exceeded`,at.ETIMEDOUT))},t);const u=()=>{e&&(s&&clearTimeout(s),s=null,e.forEach(d=>{d.unsubscribe?d.unsubscribe(i):d.removeEventListener("abort",i)}),e=null)};e.forEach(d=>d.addEventListener("abort",i));const{signal:c}=r;return c.unsubscribe=()=>pe.asap(u),c}},B8=function*(e,t){let n=e.byteLength;if(n{const a=U8(e,t);let i=0,s,u=c=>{s||(s=!0,r&&r(c))};return new ReadableStream({async pull(c){try{const{done:d,value:p}=await a.next();if(d){u(),c.close();return}let g=p.byteLength;if(n){let m=i+=g;n(m)}c.enqueue(new Uint8Array(p))}catch(d){throw u(d),d}},cancel(c){return u(c),a.return()}},{highWaterMark:2})},Rf=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",Uz=Rf&&typeof ReadableStream=="function",G8=Rf&&(typeof TextEncoder=="function"?(e=>t=>e.encode(t))(new TextEncoder):async e=>new Uint8Array(await new Response(e).arrayBuffer())),jz=(e,...t)=>{try{return!!e(...t)}catch{return!1}},H8=Uz&&jz(()=>{let e=!1;const t=new Request(En.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),aC=64*1024,Gx=Uz&&jz(()=>pe.isReadableStream(new Response("").body)),Yd={stream:Gx&&(e=>e.body)};Rf&&(e=>{["text","arrayBuffer","blob","formData","stream"].forEach(t=>{!Yd[t]&&(Yd[t]=pe.isFunction(e[t])?n=>n[t]():(n,r)=>{throw new at(`Response type '${t}' is not supported`,at.ERR_NOT_SUPPORT,r)})})})(new Response);const $8=async e=>{if(e==null)return 0;if(pe.isBlob(e))return e.size;if(pe.isSpecCompliantForm(e))return(await new Request(En.origin,{method:"POST",body:e}).arrayBuffer()).byteLength;if(pe.isArrayBufferView(e)||pe.isArrayBuffer(e))return e.byteLength;if(pe.isURLSearchParams(e)&&(e=e+""),pe.isString(e))return(await G8(e)).byteLength},q8=async(e,t)=>{const n=pe.toFiniteNumber(e.getContentLength());return n??$8(t)},V8=Rf&&(async e=>{let{url:t,method:n,data:r,signal:a,cancelToken:i,timeout:s,onDownloadProgress:u,onUploadProgress:c,responseType:d,headers:p,withCredentials:g="same-origin",fetchOptions:m}=Bz(e);d=d?(d+"").toLowerCase():"text";let b=z8([a,i&&i.toAbortSignal()],s),S;const v=b&&b.unsubscribe&&(()=>{b.unsubscribe()});let k;try{if(c&&H8&&n!=="get"&&n!=="head"&&(k=await q8(p,r))!==0){let O=new Request(t,{method:"POST",body:r,duplex:"half"}),_;if(pe.isFormData(r)&&(_=O.headers.get("content-type"))&&p.setContentType(_),O.body){const[C,F]=eC(k,Wd(tC(c)));r=rC(O.body,aC,C,F)}}pe.isString(g)||(g=g?"include":"omit");const R="credentials"in Request.prototype;S=new Request(t,{...m,signal:b,method:n.toUpperCase(),headers:p.normalize().toJSON(),body:r,duplex:"half",credentials:R?g:void 0});let x=await fetch(S);const A=Gx&&(d==="stream"||d==="response");if(Gx&&(u||A&&v)){const O={};["status","statusText","headers"].forEach(I=>{O[I]=x[I]});const _=pe.toFiniteNumber(x.headers.get("content-length")),[C,F]=u&&eC(_,Wd(tC(u),!0))||[];x=new Response(rC(x.body,aC,C,()=>{F&&F(),v&&v()}),O)}d=d||"text";let N=await Yd[pe.findKey(Yd,d)||"text"](x,e);return!A&&v&&v(),await new Promise((O,_)=>{Pz(O,_,{data:N,headers:jn.from(x.headers),status:x.status,statusText:x.statusText,config:e,request:S})})}catch(R){throw v&&v(),R&&R.name==="TypeError"&&/fetch/i.test(R.message)?Object.assign(new at("Network Error",at.ERR_NETWORK,e,S),{cause:R.cause||R}):at.from(R,R&&R.code,e,S)}}),Hx={http:s8,xhr:P8,fetch:V8};pe.forEach(Hx,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const iC=e=>`- ${e}`,W8=e=>pe.isFunction(e)||e===null||e===!1,Gz={getAdapter:e=>{e=pe.isArray(e)?e:[e];const{length:t}=e;let n,r;const a={};for(let i=0;i`adapter ${u} `+(c===!1?"is not supported by the environment":"is not available in the build"));let s=t?i.length>1?`since : -`+i.map(iC).join(` -`):" "+iC(i[0]):"as no adapter specified";throw new at("There is no suitable adapter to dispatch the request "+s,"ERR_NOT_SUPPORT")}return r},adapters:Hx};function Oh(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Is(null,e)}function oC(e){return Oh(e),e.headers=jn.from(e.headers),e.data=Nh.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Gz.getAdapter(e.adapter||ku.adapter)(e).then(function(r){return Oh(e),r.data=Nh.call(e,e.transformResponse,r),r.headers=jn.from(r.headers),r},function(r){return Fz(r)||(Oh(e),r&&r.response&&(r.response.data=Nh.call(e,e.transformResponse,r.response),r.response.headers=jn.from(r.response.headers))),Promise.reject(r)})}const Hz="1.7.9",Cf={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{Cf[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const sC={};Cf.transitional=function(t,n,r){function a(i,s){return"[Axios v"+Hz+"] Transitional option '"+i+"'"+s+(r?". "+r:"")}return(i,s,u)=>{if(t===!1)throw new at(a(s," has been removed"+(n?" in "+n:"")),at.ERR_DEPRECATED);return n&&!sC[s]&&(sC[s]=!0,console.warn(a(s," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(i,s,u):!0}};Cf.spelling=function(t){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${t}`),!0)};function Y8(e,t,n){if(typeof e!="object")throw new at("options must be an object",at.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let a=r.length;for(;a-- >0;){const i=r[a],s=t[i];if(s){const u=e[i],c=u===void 0||s(u,i,e);if(c!==!0)throw new at("option "+i+" must be "+c,at.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new at("Unknown option "+i,at.ERR_BAD_OPTION)}}const _d={assertOptions:Y8,validators:Cf},Wr=_d.validators;let oo=class{constructor(t){this.defaults=t,this.interceptors={request:new QR,response:new QR}}async request(t,n){try{return await this._request(t,n)}catch(r){if(r instanceof Error){let a={};Error.captureStackTrace?Error.captureStackTrace(a):a=new Error;const i=a.stack?a.stack.replace(/^.+\n/,""):"";try{r.stack?i&&!String(r.stack).endsWith(i.replace(/^.+\n.+\n/,""))&&(r.stack+=` -`+i):r.stack=i}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=so(this.defaults,n);const{transitional:r,paramsSerializer:a,headers:i}=n;r!==void 0&&_d.assertOptions(r,{silentJSONParsing:Wr.transitional(Wr.boolean),forcedJSONParsing:Wr.transitional(Wr.boolean),clarifyTimeoutError:Wr.transitional(Wr.boolean)},!1),a!=null&&(pe.isFunction(a)?n.paramsSerializer={serialize:a}:_d.assertOptions(a,{encode:Wr.function,serialize:Wr.function},!0)),_d.assertOptions(n,{baseUrl:Wr.spelling("baseURL"),withXsrfToken:Wr.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let s=i&&pe.merge(i.common,i[n.method]);i&&pe.forEach(["delete","get","head","post","put","patch","common"],S=>{delete i[S]}),n.headers=jn.concat(s,i);const u=[];let c=!0;this.interceptors.request.forEach(function(v){typeof v.runWhen=="function"&&v.runWhen(n)===!1||(c=c&&v.synchronous,u.unshift(v.fulfilled,v.rejected))});const d=[];this.interceptors.response.forEach(function(v){d.push(v.fulfilled,v.rejected)});let p,g=0,m;if(!c){const S=[oC.bind(this),void 0];for(S.unshift.apply(S,u),S.push.apply(S,d),m=S.length,p=Promise.resolve(n);g{if(!r._listeners)return;let i=r._listeners.length;for(;i-- >0;)r._listeners[i](a);r._listeners=null}),this.promise.then=a=>{let i;const s=new Promise(u=>{r.subscribe(u),i=u}).then(a);return s.cancel=function(){r.unsubscribe(i)},s},t(function(i,s,u){r.reason||(r.reason=new Is(i,s,u),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new $z(function(a){t=a}),cancel:t}}};function X8(e){return function(n){return e.apply(null,n)}}function Z8(e){return pe.isObject(e)&&e.isAxiosError===!0}const $x={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries($x).forEach(([e,t])=>{$x[t]=e});function qz(e){const t=new oo(e),n=Ez(oo.prototype.request,t);return pe.extend(n,oo.prototype,t,{allOwnKeys:!0}),pe.extend(n,t,null,{allOwnKeys:!0}),n.create=function(a){return qz(so(e,a))},n}const Vt=qz(ku);Vt.Axios=oo;Vt.CanceledError=Is;Vt.CancelToken=K8;Vt.isCancel=Fz;Vt.VERSION=Hz;Vt.toFormData=_f;Vt.AxiosError=at;Vt.Cancel=Vt.CanceledError;Vt.all=function(t){return Promise.all(t)};Vt.spread=X8;Vt.isAxiosError=Z8;Vt.mergeConfig=so;Vt.AxiosHeaders=jn;Vt.formToJSON=e=>Mz(pe.isHTMLForm(e)?new FormData(e):e);Vt.getAdapter=Gz.getAdapter;Vt.HttpStatusCode=$x;Vt.default=Vt;const{Axios:TSe,AxiosError:ASe,CanceledError:_Se,isCancel:RSe,CancelToken:CSe,VERSION:NSe,all:OSe,Cancel:DSe,isAxiosError:ISe,spread:LSe,toFormData:MSe,AxiosHeaders:FSe,HttpStatusCode:PSe,formToJSON:zSe,getAdapter:BSe,mergeConfig:USe}=Vt,Vz="Invalid API Key",Wz="API Key required",Br=Vt.create({baseURL:gz,headers:{"Content-Type":"application/json"}});Br.interceptors.request.use(e=>{const t=je.getState().apiKey;return t&&(e.headers["X-API-Key"]=t),e});Br.interceptors.response.use(e=>e,e=>{var t;throw e.response?new Error(`${e.response.status} ${e.response.statusText} +`+f.stack}}function z(i){var l=i,f=i;if(i.alternate)for(;l.return;)l=l.return;else{i=l;do l=i,l.flags&4098&&(f=l.return),i=l.return;while(i)}return l.tag===3?f:null}function K(i){if(i.tag===13){var l=i.memoizedState;if(l===null&&(i=i.alternate,i!==null&&(l=i.memoizedState)),l!==null)return l.dehydrated}return null}function D(i){if(z(i)!==i)throw Error(r(188))}function V(i){var l=i.alternate;if(!l){if(l=z(i),l===null)throw Error(r(188));return l!==i?null:i}for(var f=i,h=l;;){var v=f.return;if(v===null)break;var T=v.alternate;if(T===null){if(h=v.return,h!==null){f=h;continue}break}if(v.child===T.child){for(T=v.child;T;){if(T===f)return D(v),i;if(T===h)return D(v),l;T=T.sibling}throw Error(r(188))}if(f.return!==h.return)f=v,h=T;else{for(var P=!1,q=v.child;q;){if(q===f){P=!0,f=v,h=T;break}if(q===h){P=!0,h=v,f=T;break}q=q.sibling}if(!P){for(q=T.child;q;){if(q===f){P=!0,f=T,h=v;break}if(q===h){P=!0,h=T,f=v;break}q=q.sibling}if(!P)throw Error(r(189))}}if(f.alternate!==h)throw Error(r(190))}if(f.tag!==3)throw Error(r(188));return f.stateNode.current===f?i:l}function B(i){var l=i.tag;if(l===5||l===26||l===27||l===6)return i;for(i=i.child;i!==null;){if(l=B(i),l!==null)return l;i=i.sibling}return null}var M=Array.isArray,W=n.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Q={pending:!1,data:null,method:null,action:null},oe=[],re=-1;function ie(i){return{current:i}}function Se(i){0>re||(i.current=oe[re],oe[re]=null,re--)}function ae(i,l){re++,oe[re]=i.current,i.current=l}var ve=ie(null),xe=ie(null),Ie=ie(null),Ce=ie(null);function ke(i,l){switch(ae(Ie,l),ae(xe,i),ae(ve,null),i=l.nodeType,i){case 9:case 11:l=(l=l.documentElement)&&(l=l.namespaceURI)?S_(l):0;break;default:if(i=i===8?l.parentNode:l,l=i.tagName,i=i.namespaceURI)i=S_(i),l=E_(i,l);else switch(l){case"svg":l=1;break;case"math":l=2;break;default:l=0}}Se(ve),ae(ve,l)}function J(){Se(ve),Se(xe),Se(Ie)}function fe(i){i.memoizedState!==null&&ae(Ce,i);var l=ve.current,f=E_(l,i.type);l!==f&&(ae(xe,i),ae(ve,f))}function Te(i){xe.current===i&&(Se(ve),Se(xe)),Ce.current===i&&(Se(Ce),ql._currentValue=Q)}var me=Object.prototype.hasOwnProperty,Ee=e.unstable_scheduleCallback,le=e.unstable_cancelCallback,Be=e.unstable_shouldYield,Ue=e.unstable_requestPaint,he=e.unstable_now,Ne=e.unstable_getCurrentPriorityLevel,ee=e.unstable_ImmediatePriority,ce=e.unstable_UserBlockingPriority,_e=e.unstable_NormalPriority,Pe=e.unstable_LowPriority,We=e.unstable_IdlePriority,yt=e.log,kt=e.unstable_setDisableYieldValue,ht=null,et=null;function Tt(i){if(et&&typeof et.onCommitFiberRoot=="function")try{et.onCommitFiberRoot(ht,i,void 0,(i.current.flags&128)===128)}catch{}}function ot(i){if(typeof yt=="function"&&kt(i),et&&typeof et.setStrictMode=="function")try{et.setStrictMode(ht,i)}catch{}}var St=Math.clz32?Math.clz32:zt,Ht=Math.log,fn=Math.LN2;function zt(i){return i>>>=0,i===0?32:31-(Ht(i)/fn|0)|0}var or=128,$r=4194304;function Jt(i){var l=i&42;if(l!==0)return l;switch(i&-i){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return i&4194176;case 4194304:case 8388608:case 16777216:case 33554432:return i&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return i}}function fa(i,l){var f=i.pendingLanes;if(f===0)return 0;var h=0,v=i.suspendedLanes,T=i.pingedLanes,P=i.warmLanes;i=i.finishedLanes!==0;var q=f&134217727;return q!==0?(f=q&~v,f!==0?h=Jt(f):(T&=q,T!==0?h=Jt(T):i||(P=q&~P,P!==0&&(h=Jt(P))))):(q=f&~v,q!==0?h=Jt(q):T!==0?h=Jt(T):i||(P=f&~P,P!==0&&(h=Jt(P)))),h===0?0:l!==0&&l!==h&&!(l&v)&&(v=h&-h,P=l&-l,v>=P||v===32&&(P&4194176)!==0)?l:h}function Xe(i,l){return(i.pendingLanes&~(i.suspendedLanes&~i.pingedLanes)&l)===0}function mt(i,l){switch(i){case 1:case 2:case 4:case 8:return l+250;case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return l+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Ct(){var i=or;return or<<=1,!(or&4194176)&&(or=128),i}function Dn(){var i=$r;return $r<<=1,!($r&62914560)&&($r=4194304),i}function _n(i){for(var l=[],f=0;31>f;f++)l.push(i);return l}function In(i,l){i.pendingLanes|=l,l!==268435456&&(i.suspendedLanes=0,i.pingedLanes=0,i.warmLanes=0)}function pa(i,l,f,h,v,T){var P=i.pendingLanes;i.pendingLanes=f,i.suspendedLanes=0,i.pingedLanes=0,i.warmLanes=0,i.expiredLanes&=f,i.entangledLanes&=f,i.errorRecoveryDisabledLanes&=f,i.shellSuspendCounter=0;var q=i.entanglements,X=i.expirationTimes,ne=i.hiddenUpdates;for(f=P&~f;0"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),t$=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),EA={},wA={};function n$(i){return me.call(wA,i)?!0:me.call(EA,i)?!1:t$.test(i)?wA[i]=!0:(EA[i]=!0,!1)}function sc(i,l,f){if(n$(l))if(f===null)i.removeAttribute(l);else{switch(typeof f){case"undefined":case"function":case"symbol":i.removeAttribute(l);return;case"boolean":var h=l.toLowerCase().slice(0,5);if(h!=="data-"&&h!=="aria-"){i.removeAttribute(l);return}}i.setAttribute(l,""+f)}}function lc(i,l,f){if(f===null)i.removeAttribute(l);else{switch(typeof f){case"undefined":case"function":case"symbol":case"boolean":i.removeAttribute(l);return}i.setAttribute(l,""+f)}}function ha(i,l,f,h){if(h===null)i.removeAttribute(f);else{switch(typeof h){case"undefined":case"function":case"symbol":case"boolean":i.removeAttribute(f);return}i.setAttributeNS(l,f,""+h)}}function ir(i){switch(typeof i){case"bigint":case"boolean":case"number":case"string":case"undefined":return i;case"object":return i;default:return""}}function xA(i){var l=i.type;return(i=i.nodeName)&&i.toLowerCase()==="input"&&(l==="checkbox"||l==="radio")}function r$(i){var l=xA(i)?"checked":"value",f=Object.getOwnPropertyDescriptor(i.constructor.prototype,l),h=""+i[l];if(!i.hasOwnProperty(l)&&typeof f<"u"&&typeof f.get=="function"&&typeof f.set=="function"){var v=f.get,T=f.set;return Object.defineProperty(i,l,{configurable:!0,get:function(){return v.call(this)},set:function(P){h=""+P,T.call(this,P)}}),Object.defineProperty(i,l,{enumerable:f.enumerable}),{getValue:function(){return h},setValue:function(P){h=""+P},stopTracking:function(){i._valueTracker=null,delete i[l]}}}}function uc(i){i._valueTracker||(i._valueTracker=r$(i))}function kA(i){if(!i)return!1;var l=i._valueTracker;if(!l)return!0;var f=l.getValue(),h="";return i&&(h=xA(i)?i.checked?"true":"false":i.value),i=h,i!==f?(l.setValue(i),!0):!1}function cc(i){if(i=i||(typeof document<"u"?document:void 0),typeof i>"u")return null;try{return i.activeElement||i.body}catch{return i.body}}var a$=/[\n"\\]/g;function sr(i){return i.replace(a$,function(l){return"\\"+l.charCodeAt(0).toString(16)+" "})}function Gp(i,l,f,h,v,T,P,q){i.name="",P!=null&&typeof P!="function"&&typeof P!="symbol"&&typeof P!="boolean"?i.type=P:i.removeAttribute("type"),l!=null?P==="number"?(l===0&&i.value===""||i.value!=l)&&(i.value=""+ir(l)):i.value!==""+ir(l)&&(i.value=""+ir(l)):P!=="submit"&&P!=="reset"||i.removeAttribute("value"),l!=null?Hp(i,P,ir(l)):f!=null?Hp(i,P,ir(f)):h!=null&&i.removeAttribute("value"),v==null&&T!=null&&(i.defaultChecked=!!T),v!=null&&(i.checked=v&&typeof v!="function"&&typeof v!="symbol"),q!=null&&typeof q!="function"&&typeof q!="symbol"&&typeof q!="boolean"?i.name=""+ir(q):i.removeAttribute("name")}function TA(i,l,f,h,v,T,P,q){if(T!=null&&typeof T!="function"&&typeof T!="symbol"&&typeof T!="boolean"&&(i.type=T),l!=null||f!=null){if(!(T!=="submit"&&T!=="reset"||l!=null))return;f=f!=null?""+ir(f):"",l=l!=null?""+ir(l):f,q||l===i.value||(i.value=l),i.defaultValue=l}h=h??v,h=typeof h!="function"&&typeof h!="symbol"&&!!h,i.checked=q?i.checked:!!h,i.defaultChecked=!!h,P!=null&&typeof P!="function"&&typeof P!="symbol"&&typeof P!="boolean"&&(i.name=P)}function Hp(i,l,f){l==="number"&&cc(i.ownerDocument)===i||i.defaultValue===""+f||(i.defaultValue=""+f)}function Oi(i,l,f,h){if(i=i.options,l){l={};for(var v=0;v=ul),zA=" ",BA=!1;function UA(i,l){switch(i){case"keyup":return D$.indexOf(l.keyCode)!==-1;case"keydown":return l.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function jA(i){return i=i.detail,typeof i=="object"&&"data"in i?i.data:null}var Mi=!1;function L$(i,l){switch(i){case"compositionend":return jA(l);case"keypress":return l.which!==32?null:(BA=!0,zA);case"textInput":return i=l.data,i===zA&&BA?null:i;default:return null}}function M$(i,l){if(Mi)return i==="compositionend"||!eg&&UA(i,l)?(i=DA(),fc=Kp=Xa=null,Mi=!1,i):null;switch(i){case"paste":return null;case"keypress":if(!(l.ctrlKey||l.altKey||l.metaKey)||l.ctrlKey&&l.altKey){if(l.char&&1=l)return{node:f,offset:l-i};i=h}e:{for(;f;){if(f.nextSibling){f=f.nextSibling;break e}f=f.parentNode}f=void 0}f=KA(f)}}function ZA(i,l){return i&&l?i===l?!0:i&&i.nodeType===3?!1:l&&l.nodeType===3?ZA(i,l.parentNode):"contains"in i?i.contains(l):i.compareDocumentPosition?!!(i.compareDocumentPosition(l)&16):!1:!1}function QA(i){i=i!=null&&i.ownerDocument!=null&&i.ownerDocument.defaultView!=null?i.ownerDocument.defaultView:window;for(var l=cc(i.document);l instanceof i.HTMLIFrameElement;){try{var f=typeof l.contentWindow.location.href=="string"}catch{f=!1}if(f)i=l.contentWindow;else break;l=cc(i.document)}return l}function rg(i){var l=i&&i.nodeName&&i.nodeName.toLowerCase();return l&&(l==="input"&&(i.type==="text"||i.type==="search"||i.type==="tel"||i.type==="url"||i.type==="password")||l==="textarea"||i.contentEditable==="true")}function H$(i,l){var f=QA(l);l=i.focusedElem;var h=i.selectionRange;if(f!==l&&l&&l.ownerDocument&&ZA(l.ownerDocument.documentElement,l)){if(h!==null&&rg(l)){if(i=h.start,f=h.end,f===void 0&&(f=i),"selectionStart"in l)l.selectionStart=i,l.selectionEnd=Math.min(f,l.value.length);else if(f=(i=l.ownerDocument||document)&&i.defaultView||window,f.getSelection){f=f.getSelection();var v=l.textContent.length,T=Math.min(h.start,v);h=h.end===void 0?T:Math.min(h.end,v),!f.extend&&T>h&&(v=h,h=T,T=v),v=XA(l,T);var P=XA(l,h);v&&P&&(f.rangeCount!==1||f.anchorNode!==v.node||f.anchorOffset!==v.offset||f.focusNode!==P.node||f.focusOffset!==P.offset)&&(i=i.createRange(),i.setStart(v.node,v.offset),f.removeAllRanges(),T>h?(f.addRange(i),f.extend(P.node,P.offset)):(i.setEnd(P.node,P.offset),f.addRange(i)))}}for(i=[],f=l;f=f.parentNode;)f.nodeType===1&&i.push({element:f,left:f.scrollLeft,top:f.scrollTop});for(typeof l.focus=="function"&&l.focus(),l=0;l=document.documentMode,Fi=null,ag=null,pl=null,og=!1;function JA(i,l,f){var h=f.window===f?f.document:f.nodeType===9?f:f.ownerDocument;og||Fi==null||Fi!==cc(h)||(h=Fi,"selectionStart"in h&&rg(h)?h={start:h.selectionStart,end:h.selectionEnd}:(h=(h.ownerDocument&&h.ownerDocument.defaultView||window).getSelection(),h={anchorNode:h.anchorNode,anchorOffset:h.anchorOffset,focusNode:h.focusNode,focusOffset:h.focusOffset}),pl&&fl(pl,h)||(pl=h,h=Jc(ag,"onSelect"),0>=P,v-=P,ma=1<<32-St(l)+v|f<Je?(sn=Ye,Ye=null):sn=Ye.sibling;var wt=de(se,Ye,ue[Je],we);if(wt===null){Ye===null&&(Ye=sn);break}i&&Ye&&wt.alternate===null&&l(se,Ye),te=T(wt,te,Je),lt===null?Ge=wt:lt.sibling=wt,lt=wt,Ye=sn}if(Je===ue.length)return f(se,Ye),Et&&Go(se,Je),Ge;if(Ye===null){for(;JeJe?(sn=Ye,Ye=null):sn=Ye.sibling;var bo=de(se,Ye,wt.value,we);if(bo===null){Ye===null&&(Ye=sn);break}i&&Ye&&bo.alternate===null&&l(se,Ye),te=T(bo,te,Je),lt===null?Ge=bo:lt.sibling=bo,lt=bo,Ye=sn}if(wt.done)return f(se,Ye),Et&&Go(se,Je),Ge;if(Ye===null){for(;!wt.done;Je++,wt=ue.next())wt=Ae(se,wt.value,we),wt!==null&&(te=T(wt,te,Je),lt===null?Ge=wt:lt.sibling=wt,lt=wt);return Et&&Go(se,Je),Ge}for(Ye=h(Ye);!wt.done;Je++,wt=ue.next())wt=ge(Ye,se,Je,wt.value,we),wt!==null&&(i&&wt.alternate!==null&&Ye.delete(wt.key===null?Je:wt.key),te=T(wt,te,Je),lt===null?Ge=wt:lt.sibling=wt,lt=wt);return i&&Ye.forEach(function(s9){return l(se,s9)}),Et&&Go(se,Je),Ge}function Vt(se,te,ue,we){if(typeof ue=="object"&&ue!==null&&ue.type===c&&ue.key===null&&(ue=ue.props.children),typeof ue=="object"&&ue!==null){switch(ue.$$typeof){case s:e:{for(var Ge=ue.key;te!==null;){if(te.key===Ge){if(Ge=ue.type,Ge===c){if(te.tag===7){f(se,te.sibling),we=v(te,ue.props.children),we.return=se,se=we;break e}}else if(te.elementType===Ge||typeof Ge=="object"&&Ge!==null&&Ge.$$typeof===k&&m1(Ge)===te.type){f(se,te.sibling),we=v(te,ue.props),Sl(we,ue),we.return=se,se=we;break e}f(se,te);break}else l(se,te);te=te.sibling}ue.type===c?(we=Jo(ue.props.children,se.mode,we,ue.key),we.return=se,se=we):(we=Hc(ue.type,ue.key,ue.props,null,se.mode,we),Sl(we,ue),we.return=se,se=we)}return P(se);case u:e:{for(Ge=ue.key;te!==null;){if(te.key===Ge)if(te.tag===4&&te.stateNode.containerInfo===ue.containerInfo&&te.stateNode.implementation===ue.implementation){f(se,te.sibling),we=v(te,ue.children||[]),we.return=se,se=we;break e}else{f(se,te);break}else l(se,te);te=te.sibling}we=sh(ue,se.mode,we),we.return=se,se=we}return P(se);case k:return Ge=ue._init,ue=Ge(ue._payload),Vt(se,te,ue,we)}if(M(ue))return qe(se,te,ue,we);if(_(ue)){if(Ge=_(ue),typeof Ge!="function")throw Error(r(150));return ue=Ge.call(ue),nt(se,te,ue,we)}if(typeof ue.then=="function")return Vt(se,te,kc(ue),we);if(ue.$$typeof===b)return Vt(se,te,Uc(se,ue),we);Tc(se,ue)}return typeof ue=="string"&&ue!==""||typeof ue=="number"||typeof ue=="bigint"?(ue=""+ue,te!==null&&te.tag===6?(f(se,te.sibling),we=v(te,ue),we.return=se,se=we):(f(se,te),we=ih(ue,se.mode,we),we.return=se,se=we),P(se)):f(se,te)}return function(se,te,ue,we){try{vl=0;var Ge=Vt(se,te,ue,we);return Gi=null,Ge}catch(Ye){if(Ye===bl)throw Ye;var lt=hr(29,Ye,null,se.mode);return lt.lanes=we,lt.return=se,lt}finally{}}}var $o=b1(!0),y1=b1(!1),Hi=ie(null),Ac=ie(0);function v1(i,l){i=_a,ae(Ac,i),ae(Hi,l),_a=i|l.baseLanes}function pg(){ae(Ac,_a),ae(Hi,Hi.current)}function gg(){_a=Ac.current,Se(Hi),Se(Ac)}var fr=ie(null),Vr=null;function Qa(i){var l=i.alternate;ae(en,en.current&1),ae(fr,i),Vr===null&&(l===null||Hi.current!==null||l.memoizedState!==null)&&(Vr=i)}function S1(i){if(i.tag===22){if(ae(en,en.current),ae(fr,i),Vr===null){var l=i.alternate;l!==null&&l.memoizedState!==null&&(Vr=i)}}else Ja()}function Ja(){ae(en,en.current),ae(fr,fr.current)}function ya(i){Se(fr),Vr===i&&(Vr=null),Se(en)}var en=ie(0);function Rc(i){for(var l=i;l!==null;){if(l.tag===13){var f=l.memoizedState;if(f!==null&&(f=f.dehydrated,f===null||f.data==="$?"||f.data==="$!"))return l}else if(l.tag===19&&l.memoizedProps.revealOrder!==void 0){if(l.flags&128)return l}else if(l.child!==null){l.child.return=l,l=l.child;continue}if(l===i)break;for(;l.sibling===null;){if(l.return===null||l.return===i)return null;l=l.return}l.sibling.return=l.return,l=l.sibling}return null}var Y$=typeof AbortController<"u"?AbortController:function(){var i=[],l=this.signal={aborted:!1,addEventListener:function(f,h){i.push(h)}};this.abort=function(){l.aborted=!0,i.forEach(function(f){return f()})}},K$=e.unstable_scheduleCallback,X$=e.unstable_NormalPriority,tn={$$typeof:b,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function hg(){return{controller:new Y$,data:new Map,refCount:0}}function El(i){i.refCount--,i.refCount===0&&K$(X$,function(){i.controller.abort()})}var wl=null,mg=0,$i=0,qi=null;function Z$(i,l){if(wl===null){var f=wl=[];mg=0,$i=wh(),qi={status:"pending",value:void 0,then:function(h){f.push(h)}}}return mg++,l.then(E1,E1),l}function E1(){if(--mg===0&&wl!==null){qi!==null&&(qi.status="fulfilled");var i=wl;wl=null,$i=0,qi=null;for(var l=0;lT?T:8;var P=L.T,q={};L.T=q,Ig(i,!1,l,f);try{var X=v(),ne=L.S;if(ne!==null&&ne(q,X),X!==null&&typeof X=="object"&&typeof X.then=="function"){var be=Q$(X,h);Tl(i,l,be,Qn(i))}else Tl(i,l,h,Qn(i))}catch(Ae){Tl(i,l,{then:function(){},status:"rejected",reason:Ae},Qn())}finally{W.p=T,L.T=P}}function r6(){}function Og(i,l,f,h){if(i.tag!==5)throw Error(r(476));var v=Q1(i).queue;Z1(i,v,l,Q,f===null?r6:function(){return J1(i),f(h)})}function Q1(i){var l=i.memoizedState;if(l!==null)return l;l={memoizedState:Q,baseState:Q,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:va,lastRenderedState:Q},next:null};var f={};return l.next={memoizedState:f,baseState:f,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:va,lastRenderedState:f},next:null},i.memoizedState=l,i=i.alternate,i!==null&&(i.memoizedState=l),l}function J1(i){var l=Q1(i).next.queue;Tl(i,l,{},Qn())}function Dg(){return En(ql)}function eR(){return Xt().memoizedState}function tR(){return Xt().memoizedState}function a6(i){for(var l=i.return;l!==null;){switch(l.tag){case 24:case 3:var f=Qn();i=ao(f);var h=oo(l,i,f);h!==null&&(Nn(h,l,f),_l(h,l,f)),l={cache:hg()},i.payload=l;return}l=l.return}}function o6(i,l,f){var h=Qn();f={lane:h,revertLane:0,action:f,hasEagerState:!1,eagerState:null,next:null},Fc(i)?rR(l,f):(f=lg(i,l,f,h),f!==null&&(Nn(f,i,h),aR(f,l,h)))}function nR(i,l,f){var h=Qn();Tl(i,l,f,h)}function Tl(i,l,f,h){var v={lane:h,revertLane:0,action:f,hasEagerState:!1,eagerState:null,next:null};if(Fc(i))rR(l,v);else{var T=i.alternate;if(i.lanes===0&&(T===null||T.lanes===0)&&(T=l.lastRenderedReducer,T!==null))try{var P=l.lastRenderedState,q=T(P,f);if(v.hasEagerState=!0,v.eagerState=q,Yn(q,P))return vc(i,l,v,0),It===null&&yc(),!1}catch{}finally{}if(f=lg(i,l,v,h),f!==null)return Nn(f,i,h),aR(f,l,h),!0}return!1}function Ig(i,l,f,h){if(h={lane:2,revertLane:wh(),action:h,hasEagerState:!1,eagerState:null,next:null},Fc(i)){if(l)throw Error(r(479))}else l=lg(i,f,h,2),l!==null&&Nn(l,i,2)}function Fc(i){var l=i.alternate;return i===st||l!==null&&l===st}function rR(i,l){Vi=Cc=!0;var f=i.pending;f===null?l.next=l:(l.next=f.next,f.next=l),i.pending=l}function aR(i,l,f){if(f&4194176){var h=l.lanes;h&=i.pendingLanes,f|=h,l.lanes=f,Rr(i,f)}}var Wr={readContext:En,use:Dc,useCallback:Wt,useContext:Wt,useEffect:Wt,useImperativeHandle:Wt,useLayoutEffect:Wt,useInsertionEffect:Wt,useMemo:Wt,useReducer:Wt,useRef:Wt,useState:Wt,useDebugValue:Wt,useDeferredValue:Wt,useTransition:Wt,useSyncExternalStore:Wt,useId:Wt};Wr.useCacheRefresh=Wt,Wr.useMemoCache=Wt,Wr.useHostTransitionStatus=Wt,Wr.useFormState=Wt,Wr.useActionState=Wt,Wr.useOptimistic=Wt;var Wo={readContext:En,use:Dc,useCallback:function(i,l){return Pn().memoizedState=[i,l===void 0?null:l],i},useContext:En,useEffect:H1,useImperativeHandle:function(i,l,f){f=f!=null?f.concat([i]):null,Lc(4194308,4,V1.bind(null,l,i),f)},useLayoutEffect:function(i,l){return Lc(4194308,4,i,l)},useInsertionEffect:function(i,l){Lc(4,2,i,l)},useMemo:function(i,l){var f=Pn();l=l===void 0?null:l;var h=i();if(Vo){ot(!0);try{i()}finally{ot(!1)}}return f.memoizedState=[h,l],h},useReducer:function(i,l,f){var h=Pn();if(f!==void 0){var v=f(l);if(Vo){ot(!0);try{f(l)}finally{ot(!1)}}}else v=l;return h.memoizedState=h.baseState=v,i={pending:null,lanes:0,dispatch:null,lastRenderedReducer:i,lastRenderedState:v},h.queue=i,i=i.dispatch=o6.bind(null,st,i),[h.memoizedState,i]},useRef:function(i){var l=Pn();return i={current:i},l.memoizedState=i},useState:function(i){i=Ag(i);var l=i.queue,f=nR.bind(null,st,l);return l.dispatch=f,[i.memoizedState,f]},useDebugValue:Cg,useDeferredValue:function(i,l){var f=Pn();return Ng(f,i,l)},useTransition:function(){var i=Ag(!1);return i=Z1.bind(null,st,i.queue,!0,!1),Pn().memoizedState=i,[!1,i]},useSyncExternalStore:function(i,l,f){var h=st,v=Pn();if(Et){if(f===void 0)throw Error(r(407));f=f()}else{if(f=l(),It===null)throw Error(r(349));bt&60||R1(h,l,f)}v.memoizedState=f;var T={value:f,getSnapshot:l};return v.queue=T,H1(C1.bind(null,h,T,i),[i]),h.flags|=2048,Yi(9,_1.bind(null,h,T,f,l),{destroy:void 0},null),f},useId:function(){var i=Pn(),l=It.identifierPrefix;if(Et){var f=ba,h=ma;f=(h&~(1<<32-St(h)-1)).toString(32)+f,l=":"+l+"R"+f,f=Nc++,0 title"))),hn(T,h,f),T[Sn]=i,rn(T),h=T;break e;case"link":var P=O_("link","href",v).get(h+(f.href||""));if(P){for(var q=0;q<\/script>",i=i.removeChild(i.firstChild);break;case"select":i=typeof h.is=="string"?v.createElement("select",{is:h.is}):v.createElement("select"),h.multiple?i.multiple=!0:h.size&&(i.size=h.size);break;default:i=typeof h.is=="string"?v.createElement(f,{is:h.is}):v.createElement(f)}}i[Sn]=l,i[Mn]=h;e:for(v=l.child;v!==null;){if(v.tag===5||v.tag===6)i.appendChild(v.stateNode);else if(v.tag!==4&&v.tag!==27&&v.child!==null){v.child.return=v,v=v.child;continue}if(v===l)break e;for(;v.sibling===null;){if(v.return===null||v.return===l)break e;v=v.return}v.sibling.return=v.return,v=v.sibling}l.stateNode=i;e:switch(hn(i,f,h),f){case"button":case"input":case"select":case"textarea":i=!!h.autoFocus;break e;case"img":i=!0;break e;default:i=!1}i&&Aa(l)}}return Bt(l),l.flags&=-16777217,null;case 6:if(i&&l.stateNode!=null)i.memoizedProps!==h&&Aa(l);else{if(typeof h!="string"&&l.stateNode===null)throw Error(r(166));if(i=Ie.current,gl(l)){if(i=l.stateNode,f=l.memoizedProps,h=null,v=Cn,v!==null)switch(v.tag){case 27:case 5:h=v.memoizedProps}i[Sn]=l,i=!!(i.nodeValue===f||h!==null&&h.suppressHydrationWarning===!0||v_(i.nodeValue,f)),i||Ho(l)}else i=td(i).createTextNode(h),i[Sn]=l,l.stateNode=i}return Bt(l),null;case 13:if(h=l.memoizedState,i===null||i.memoizedState!==null&&i.memoizedState.dehydrated!==null){if(v=gl(l),h!==null&&h.dehydrated!==null){if(i===null){if(!v)throw Error(r(318));if(v=l.memoizedState,v=v!==null?v.dehydrated:null,!v)throw Error(r(317));v[Sn]=l}else hl(),!(l.flags&128)&&(l.memoizedState=null),l.flags|=4;Bt(l),v=!1}else Cr!==null&&(hh(Cr),Cr=null),v=!0;if(!v)return l.flags&256?(ya(l),l):(ya(l),null)}if(ya(l),l.flags&128)return l.lanes=f,l;if(f=h!==null,i=i!==null&&i.memoizedState!==null,f){h=l.child,v=null,h.alternate!==null&&h.alternate.memoizedState!==null&&h.alternate.memoizedState.cachePool!==null&&(v=h.alternate.memoizedState.cachePool.pool);var T=null;h.memoizedState!==null&&h.memoizedState.cachePool!==null&&(T=h.memoizedState.cachePool.pool),T!==v&&(h.flags|=2048)}return f!==i&&f&&(l.child.flags|=8192),$c(l,l.updateQueue),Bt(l),null;case 4:return J(),i===null&&Ah(l.stateNode.containerInfo),Bt(l),null;case 10:return wa(l.type),Bt(l),null;case 19:if(Se(en),v=l.memoizedState,v===null)return Bt(l),null;if(h=(l.flags&128)!==0,T=v.rendering,T===null)if(h)Ml(v,!1);else{if(qt!==0||i!==null&&i.flags&128)for(i=l.child;i!==null;){if(T=Rc(i),T!==null){for(l.flags|=128,Ml(v,!1),i=T.updateQueue,l.updateQueue=i,$c(l,i),l.subtreeFlags=0,i=f,f=l.child;f!==null;)WR(f,i),f=f.sibling;return ae(en,en.current&1|2),l.child}i=i.sibling}v.tail!==null&&he()>qc&&(l.flags|=128,h=!0,Ml(v,!1),l.lanes=4194304)}else{if(!h)if(i=Rc(T),i!==null){if(l.flags|=128,h=!0,i=i.updateQueue,l.updateQueue=i,$c(l,i),Ml(v,!0),v.tail===null&&v.tailMode==="hidden"&&!T.alternate&&!Et)return Bt(l),null}else 2*he()-v.renderingStartTime>qc&&f!==536870912&&(l.flags|=128,h=!0,Ml(v,!1),l.lanes=4194304);v.isBackwards?(T.sibling=l.child,l.child=T):(i=v.last,i!==null?i.sibling=T:l.child=T,v.last=T)}return v.tail!==null?(l=v.tail,v.rendering=l,v.tail=l.sibling,v.renderingStartTime=he(),l.sibling=null,i=en.current,ae(en,h?i&1|2:i&1),l):(Bt(l),null);case 22:case 23:return ya(l),gg(),h=l.memoizedState!==null,i!==null?i.memoizedState!==null!==h&&(l.flags|=8192):h&&(l.flags|=8192),h?f&536870912&&!(l.flags&128)&&(Bt(l),l.subtreeFlags&6&&(l.flags|=8192)):Bt(l),f=l.updateQueue,f!==null&&$c(l,f.retryQueue),f=null,i!==null&&i.memoizedState!==null&&i.memoizedState.cachePool!==null&&(f=i.memoizedState.cachePool.pool),h=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(h=l.memoizedState.cachePool.pool),h!==f&&(l.flags|=2048),i!==null&&Se(qo),null;case 24:return f=null,i!==null&&(f=i.memoizedState.cache),l.memoizedState.cache!==f&&(l.flags|=2048),wa(tn),Bt(l),null;case 25:return null}throw Error(r(156,l.tag))}function f6(i,l){switch(cg(l),l.tag){case 1:return i=l.flags,i&65536?(l.flags=i&-65537|128,l):null;case 3:return wa(tn),J(),i=l.flags,i&65536&&!(i&128)?(l.flags=i&-65537|128,l):null;case 26:case 27:case 5:return Te(l),null;case 13:if(ya(l),i=l.memoizedState,i!==null&&i.dehydrated!==null){if(l.alternate===null)throw Error(r(340));hl()}return i=l.flags,i&65536?(l.flags=i&-65537|128,l):null;case 19:return Se(en),null;case 4:return J(),null;case 10:return wa(l.type),null;case 22:case 23:return ya(l),gg(),i!==null&&Se(qo),i=l.flags,i&65536?(l.flags=i&-65537|128,l):null;case 24:return wa(tn),null;case 25:return null;default:return null}}function XR(i,l){switch(cg(l),l.tag){case 3:wa(tn),J();break;case 26:case 27:case 5:Te(l);break;case 4:J();break;case 13:ya(l);break;case 19:Se(en);break;case 10:wa(l.type);break;case 22:case 23:ya(l),gg(),i!==null&&Se(qo);break;case 24:wa(tn)}}var p6={getCacheForType:function(i){var l=En(tn),f=l.data.get(i);return f===void 0&&(f=i(),l.data.set(i,f)),f}},g6=typeof WeakMap=="function"?WeakMap:Map,Ut=0,It=null,ct=null,bt=0,Lt=0,Zn=null,Ra=!1,Qi=!1,lh=!1,_a=0,qt=0,co=0,ei=0,uh=0,mr=0,Ji=0,Fl=null,Yr=null,ch=!1,dh=0,qc=1/0,Vc=null,fo=null,Wc=!1,ti=null,Pl=0,fh=0,ph=null,zl=0,gh=null;function Qn(){if(Ut&2&&bt!==0)return bt&-bt;if(L.T!==null){var i=$i;return i!==0?i:wh()}return bA()}function ZR(){mr===0&&(mr=!(bt&536870912)||Et?Ct():536870912);var i=fr.current;return i!==null&&(i.flags|=32),mr}function Nn(i,l,f){(i===It&&Lt===2||i.cancelPendingCommit!==null)&&(es(i,0),Ca(i,bt,mr,!1)),In(i,f),(!(Ut&2)||i!==It)&&(i===It&&(!(Ut&2)&&(ei|=f),qt===4&&Ca(i,bt,mr,!1)),Kr(i))}function QR(i,l,f){if(Ut&6)throw Error(r(327));var h=!f&&(l&60)===0&&(l&i.expiredLanes)===0||Xe(i,l),v=h?b6(i,l):yh(i,l,!0),T=h;do{if(v===0){Qi&&!h&&Ca(i,l,0,!1);break}else if(v===6)Ca(i,l,0,!Ra);else{if(f=i.current.alternate,T&&!h6(f)){v=yh(i,l,!1),T=!1;continue}if(v===2){if(T=l,i.errorRecoveryDisabledLanes&T)var P=0;else P=i.pendingLanes&-536870913,P=P!==0?P:P&536870912?536870912:0;if(P!==0){l=P;e:{var q=i;v=Fl;var X=q.current.memoizedState.isDehydrated;if(X&&(es(q,P).flags|=256),P=yh(q,P,!1),P!==2){if(lh&&!X){q.errorRecoveryDisabledLanes|=T,ei|=T,v=4;break e}T=Yr,Yr=v,T!==null&&hh(T)}v=P}if(T=!1,v!==2)continue}}if(v===1){es(i,0),Ca(i,l,0,!0);break}e:{switch(h=i,v){case 0:case 1:throw Error(r(345));case 4:if((l&4194176)===l){Ca(h,l,mr,!Ra);break e}break;case 2:Yr=null;break;case 3:case 5:break;default:throw Error(r(329))}if(h.finishedWork=f,h.finishedLanes=l,(l&62914560)===l&&(T=dh+300-he(),10f?32:f,L.T=null,ti===null)var T=!1;else{f=ph,ph=null;var P=ti,q=Pl;if(ti=null,Pl=0,Ut&6)throw Error(r(331));var X=Ut;if(Ut|=4,qR(P.current),GR(P,P.current,q,f),Ut=X,Bl(0,!1),et&&typeof et.onPostCommitFiberRoot=="function")try{et.onPostCommitFiberRoot(ht,P)}catch{}T=!0}return T}finally{W.p=v,L.T=h,s_(i,l)}}return!1}function l_(i,l,f){l=ur(f,l),l=Fg(i.stateNode,l,2),i=oo(i,l,2),i!==null&&(In(i,2),Kr(i))}function Nt(i,l,f){if(i.tag===3)l_(i,i,f);else for(;l!==null;){if(l.tag===3){l_(l,i,f);break}else if(l.tag===1){var h=l.stateNode;if(typeof l.type.getDerivedStateFromError=="function"||typeof h.componentDidCatch=="function"&&(fo===null||!fo.has(h))){i=ur(f,i),f=dR(2),h=oo(l,f,2),h!==null&&(fR(f,h,l,i),In(h,2),Kr(h));break}}l=l.return}}function vh(i,l,f){var h=i.pingCache;if(h===null){h=i.pingCache=new g6;var v=new Set;h.set(l,v)}else v=h.get(l),v===void 0&&(v=new Set,h.set(l,v));v.has(f)||(lh=!0,v.add(f),i=S6.bind(null,i,l,f),l.then(i,i))}function S6(i,l,f){var h=i.pingCache;h!==null&&h.delete(l),i.pingedLanes|=i.suspendedLanes&f,i.warmLanes&=~f,It===i&&(bt&f)===f&&(qt===4||qt===3&&(bt&62914560)===bt&&300>he()-dh?!(Ut&2)&&es(i,0):uh|=f,Ji===bt&&(Ji=0)),Kr(i)}function u_(i,l){l===0&&(l=Dn()),i=Za(i,l),i!==null&&(In(i,l),Kr(i))}function E6(i){var l=i.memoizedState,f=0;l!==null&&(f=l.retryLane),u_(i,f)}function w6(i,l){var f=0;switch(i.tag){case 13:var h=i.stateNode,v=i.memoizedState;v!==null&&(f=v.retryLane);break;case 19:h=i.stateNode;break;case 22:h=i.stateNode._retryCache;break;default:throw Error(r(314))}h!==null&&h.delete(l),u_(i,f)}function x6(i,l){return Ee(i,l)}var Xc=null,rs=null,Sh=!1,Zc=!1,Eh=!1,ni=0;function Kr(i){i!==rs&&i.next===null&&(rs===null?Xc=rs=i:rs=rs.next=i),Zc=!0,Sh||(Sh=!0,T6(k6))}function Bl(i,l){if(!Eh&&Zc){Eh=!0;do for(var f=!1,h=Xc;h!==null;){if(i!==0){var v=h.pendingLanes;if(v===0)var T=0;else{var P=h.suspendedLanes,q=h.pingedLanes;T=(1<<31-St(42|i)+1)-1,T&=v&~(P&~q),T=T&201326677?T&201326677|1:T?T|2:0}T!==0&&(f=!0,f_(h,T))}else T=bt,T=fa(h,h===It?T:0),!(T&3)||Xe(h,T)||(f=!0,f_(h,T));h=h.next}while(f);Eh=!1}}function k6(){Zc=Sh=!1;var i=0;ni!==0&&(I6()&&(i=ni),ni=0);for(var l=he(),f=null,h=Xc;h!==null;){var v=h.next,T=c_(h,l);T===0?(h.next=null,f===null?Xc=v:f.next=v,v===null&&(rs=f)):(f=h,(i!==0||T&3)&&(Zc=!0)),h=v}Bl(i)}function c_(i,l){for(var f=i.suspendedLanes,h=i.pingedLanes,v=i.expirationTimes,T=i.pendingLanes&-62914561;0"u"?null:document;function R_(i,l,f){var h=os;if(h&&typeof l=="string"&&l){var v=sr(l);v='link[rel="'+i+'"][href="'+v+'"]',typeof f=="string"&&(v+='[crossorigin="'+f+'"]'),A_.has(v)||(A_.add(v),i={rel:i,crossOrigin:f,href:l},h.querySelector(v)===null&&(l=h.createElement("link"),hn(l,"link",i),rn(l),h.head.appendChild(l)))}}function j6(i){Na.D(i),R_("dns-prefetch",i,null)}function G6(i,l){Na.C(i,l),R_("preconnect",i,l)}function H6(i,l,f){Na.L(i,l,f);var h=os;if(h&&i&&l){var v='link[rel="preload"][as="'+sr(l)+'"]';l==="image"&&f&&f.imageSrcSet?(v+='[imagesrcset="'+sr(f.imageSrcSet)+'"]',typeof f.imageSizes=="string"&&(v+='[imagesizes="'+sr(f.imageSizes)+'"]')):v+='[href="'+sr(i)+'"]';var T=v;switch(l){case"style":T=is(i);break;case"script":T=ss(i)}br.has(T)||(i=I({rel:"preload",href:l==="image"&&f&&f.imageSrcSet?void 0:i,as:l},f),br.set(T,i),h.querySelector(v)!==null||l==="style"&&h.querySelector(Gl(T))||l==="script"&&h.querySelector(Hl(T))||(l=h.createElement("link"),hn(l,"link",i),rn(l),h.head.appendChild(l)))}}function $6(i,l){Na.m(i,l);var f=os;if(f&&i){var h=l&&typeof l.as=="string"?l.as:"script",v='link[rel="modulepreload"][as="'+sr(h)+'"][href="'+sr(i)+'"]',T=v;switch(h){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":T=ss(i)}if(!br.has(T)&&(i=I({rel:"modulepreload",href:i},l),br.set(T,i),f.querySelector(v)===null)){switch(h){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(f.querySelector(Hl(T)))return}h=f.createElement("link"),hn(h,"link",i),rn(h),f.head.appendChild(h)}}}function q6(i,l,f){Na.S(i,l,f);var h=os;if(h&&i){var v=Ci(h).hoistableStyles,T=is(i);l=l||"default";var P=v.get(T);if(!P){var q={loading:0,preload:null};if(P=h.querySelector(Gl(T)))q.loading=5;else{i=I({rel:"stylesheet",href:i,"data-precedence":l},f),(f=br.get(T))&&Mh(i,f);var X=P=h.createElement("link");rn(X),hn(X,"link",i),X._p=new Promise(function(ne,be){X.onload=ne,X.onerror=be}),X.addEventListener("load",function(){q.loading|=1}),X.addEventListener("error",function(){q.loading|=2}),q.loading|=4,rd(P,l,h)}P={type:"stylesheet",instance:P,count:1,state:q},v.set(T,P)}}}function V6(i,l){Na.X(i,l);var f=os;if(f&&i){var h=Ci(f).hoistableScripts,v=ss(i),T=h.get(v);T||(T=f.querySelector(Hl(v)),T||(i=I({src:i,async:!0},l),(l=br.get(v))&&Fh(i,l),T=f.createElement("script"),rn(T),hn(T,"link",i),f.head.appendChild(T)),T={type:"script",instance:T,count:1,state:null},h.set(v,T))}}function W6(i,l){Na.M(i,l);var f=os;if(f&&i){var h=Ci(f).hoistableScripts,v=ss(i),T=h.get(v);T||(T=f.querySelector(Hl(v)),T||(i=I({src:i,async:!0,type:"module"},l),(l=br.get(v))&&Fh(i,l),T=f.createElement("script"),rn(T),hn(T,"link",i),f.head.appendChild(T)),T={type:"script",instance:T,count:1,state:null},h.set(v,T))}}function __(i,l,f,h){var v=(v=Ie.current)?nd(v):null;if(!v)throw Error(r(446));switch(i){case"meta":case"title":return null;case"style":return typeof f.precedence=="string"&&typeof f.href=="string"?(l=is(f.href),f=Ci(v).hoistableStyles,h=f.get(l),h||(h={type:"style",instance:null,count:0,state:null},f.set(l,h)),h):{type:"void",instance:null,count:0,state:null};case"link":if(f.rel==="stylesheet"&&typeof f.href=="string"&&typeof f.precedence=="string"){i=is(f.href);var T=Ci(v).hoistableStyles,P=T.get(i);if(P||(v=v.ownerDocument||v,P={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},T.set(i,P),(T=v.querySelector(Gl(i)))&&!T._p&&(P.instance=T,P.state.loading=5),br.has(i)||(f={rel:"preload",as:"style",href:f.href,crossOrigin:f.crossOrigin,integrity:f.integrity,media:f.media,hrefLang:f.hrefLang,referrerPolicy:f.referrerPolicy},br.set(i,f),T||Y6(v,i,f,P.state))),l&&h===null)throw Error(r(528,""));return P}if(l&&h!==null)throw Error(r(529,""));return null;case"script":return l=f.async,f=f.src,typeof f=="string"&&l&&typeof l!="function"&&typeof l!="symbol"?(l=ss(f),f=Ci(v).hoistableScripts,h=f.get(l),h||(h={type:"script",instance:null,count:0,state:null},f.set(l,h)),h):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,i))}}function is(i){return'href="'+sr(i)+'"'}function Gl(i){return'link[rel="stylesheet"]['+i+"]"}function C_(i){return I({},i,{"data-precedence":i.precedence,precedence:null})}function Y6(i,l,f,h){i.querySelector('link[rel="preload"][as="style"]['+l+"]")?h.loading=1:(l=i.createElement("link"),h.preload=l,l.addEventListener("load",function(){return h.loading|=1}),l.addEventListener("error",function(){return h.loading|=2}),hn(l,"link",f),rn(l),i.head.appendChild(l))}function ss(i){return'[src="'+sr(i)+'"]'}function Hl(i){return"script[async]"+i}function N_(i,l,f){if(l.count++,l.instance===null)switch(l.type){case"style":var h=i.querySelector('style[data-href~="'+sr(f.href)+'"]');if(h)return l.instance=h,rn(h),h;var v=I({},f,{"data-href":f.href,"data-precedence":f.precedence,href:null,precedence:null});return h=(i.ownerDocument||i).createElement("style"),rn(h),hn(h,"style",v),rd(h,f.precedence,i),l.instance=h;case"stylesheet":v=is(f.href);var T=i.querySelector(Gl(v));if(T)return l.state.loading|=4,l.instance=T,rn(T),T;h=C_(f),(v=br.get(v))&&Mh(h,v),T=(i.ownerDocument||i).createElement("link"),rn(T);var P=T;return P._p=new Promise(function(q,X){P.onload=q,P.onerror=X}),hn(T,"link",h),l.state.loading|=4,rd(T,f.precedence,i),l.instance=T;case"script":return T=ss(f.src),(v=i.querySelector(Hl(T)))?(l.instance=v,rn(v),v):(h=f,(v=br.get(T))&&(h=I({},f),Fh(h,v)),i=i.ownerDocument||i,v=i.createElement("script"),rn(v),hn(v,"link",h),i.head.appendChild(v),l.instance=v);case"void":return null;default:throw Error(r(443,l.type))}else l.type==="stylesheet"&&!(l.state.loading&4)&&(h=l.instance,l.state.loading|=4,rd(h,f.precedence,i));return l.instance}function rd(i,l,f){for(var h=f.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),v=h.length?h[h.length-1]:null,T=v,P=0;P title"):null)}function K6(i,l,f){if(f===1||l.itemProp!=null)return!1;switch(i){case"meta":case"title":return!0;case"style":if(typeof l.precedence!="string"||typeof l.href!="string"||l.href==="")break;return!0;case"link":if(typeof l.rel!="string"||typeof l.href!="string"||l.href===""||l.onLoad||l.onError)break;switch(l.rel){case"stylesheet":return i=l.disabled,typeof l.precedence=="string"&&i==null;default:return!0}case"script":if(l.async&&typeof l.async!="function"&&typeof l.async!="symbol"&&!l.onLoad&&!l.onError&&l.src&&typeof l.src=="string")return!0}return!1}function I_(i){return!(i.type==="stylesheet"&&!(i.state.loading&3))}var $l=null;function X6(){}function Z6(i,l,f){if($l===null)throw Error(r(475));var h=$l;if(l.type==="stylesheet"&&(typeof f.media!="string"||matchMedia(f.media).matches!==!1)&&!(l.state.loading&4)){if(l.instance===null){var v=is(f.href),T=i.querySelector(Gl(v));if(T){i=T._p,i!==null&&typeof i=="object"&&typeof i.then=="function"&&(h.count++,h=od.bind(h),i.then(h,h)),l.state.loading|=4,l.instance=T,rn(T);return}T=i.ownerDocument||i,f=C_(f),(v=br.get(v))&&Mh(f,v),T=T.createElement("link"),rn(T);var P=T;P._p=new Promise(function(q,X){P.onload=q,P.onerror=X}),hn(T,"link",f),l.instance=T}h.stylesheets===null&&(h.stylesheets=new Map),h.stylesheets.set(l,i),(i=l.state.preload)&&!(l.state.loading&3)&&(h.count++,l=od.bind(h),i.addEventListener("load",l),i.addEventListener("error",l))}}function Q6(){if($l===null)throw Error(r(475));var i=$l;return i.stylesheets&&i.count===0&&Ph(i,i.stylesheets),0"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),Vh.exports=v9(),Vh.exports}var E9=S9(),Ql={},tC;function w9(){if(tC)return Ql;tC=1,Object.defineProperty(Ql,"__esModule",{value:!0}),Ql.parse=s,Ql.serialize=d;const e=/^[\u0021-\u003A\u003C\u003E-\u007E]+$/,t=/^[\u0021-\u003A\u003C-\u007E]*$/,n=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,r=/^[\u0020-\u003A\u003D-\u007E]*$/,a=Object.prototype.toString,o=(()=>{const m=function(){};return m.prototype=Object.create(null),m})();function s(m,b){const y=new o,S=m.length;if(S<2)return y;const x=(b==null?void 0:b.decode)||p;let R=0;do{const k=m.indexOf("=",R);if(k===-1)break;const A=m.indexOf(";",R),C=A===-1?S:A;if(k>C){R=m.lastIndexOf(";",k-1)+1;continue}const N=u(m,R,k),_=c(m,k,N),O=m.slice(N,_);if(y[O]===void 0){let F=u(m,k+1,C),L=c(m,C,F);const I=x(m.slice(F,L));y[O]=I}R=C+1}while(Ry;){const S=m.charCodeAt(--b);if(S!==32&&S!==9)return b+1}return y}function d(m,b,y){const S=(y==null?void 0:y.encode)||encodeURIComponent;if(!e.test(m))throw new TypeError(`argument name is invalid: ${m}`);const x=S(b);if(!t.test(x))throw new TypeError(`argument val is invalid: ${b}`);let R=m+"="+x;if(!y)return R;if(y.maxAge!==void 0){if(!Number.isInteger(y.maxAge))throw new TypeError(`option maxAge is invalid: ${y.maxAge}`);R+="; Max-Age="+y.maxAge}if(y.domain){if(!n.test(y.domain))throw new TypeError(`option domain is invalid: ${y.domain}`);R+="; Domain="+y.domain}if(y.path){if(!r.test(y.path))throw new TypeError(`option path is invalid: ${y.path}`);R+="; Path="+y.path}if(y.expires){if(!g(y.expires)||!Number.isFinite(y.expires.valueOf()))throw new TypeError(`option expires is invalid: ${y.expires}`);R+="; Expires="+y.expires.toUTCString()}if(y.httpOnly&&(R+="; HttpOnly"),y.secure&&(R+="; Secure"),y.partitioned&&(R+="; Partitioned"),y.priority)switch(typeof y.priority=="string"?y.priority.toLowerCase():void 0){case"low":R+="; Priority=Low";break;case"medium":R+="; Priority=Medium";break;case"high":R+="; Priority=High";break;default:throw new TypeError(`option priority is invalid: ${y.priority}`)}if(y.sameSite)switch(typeof y.sameSite=="string"?y.sameSite.toLowerCase():y.sameSite){case!0:case"strict":R+="; SameSite=Strict";break;case"lax":R+="; SameSite=Lax";break;case"none":R+="; SameSite=None";break;default:throw new TypeError(`option sameSite is invalid: ${y.sameSite}`)}return R}function p(m){if(m.indexOf("%")===-1)return m;try{return decodeURIComponent(m)}catch{return m}}function g(m){return a.call(m)==="[object Date]"}return Ql}w9();/** + * react-router v7.3.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */var nC="popstate";function x9(e={}){function t(a,o){let{pathname:s="/",search:u="",hash:c=""}=Ei(a.location.hash.substring(1));return!s.startsWith("/")&&!s.startsWith(".")&&(s="/"+s),rk("",{pathname:s,search:u,hash:c},o.state&&o.state.usr||null,o.state&&o.state.key||"default")}function n(a,o){let s=a.document.querySelector("base"),u="";if(s&&s.getAttribute("href")){let c=a.location.href,d=c.indexOf("#");u=d===-1?c:c.slice(0,d)}return u+"#"+(typeof o=="string"?o:Eu(o))}function r(a,o){Br(a.pathname.charAt(0)==="/",`relative pathnames are not supported in hash history.push(${JSON.stringify(o)})`)}return T9(t,n,r,e)}function Gt(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function Br(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function k9(){return Math.random().toString(36).substring(2,10)}function rC(e,t){return{usr:e.state,key:e.key,idx:t}}function rk(e,t,n=null,r){return{pathname:typeof e=="string"?e:e.pathname,search:"",hash:"",...typeof t=="string"?Ei(t):t,state:n,key:t&&t.key||r||k9()}}function Eu({pathname:e="/",search:t="",hash:n=""}){return t&&t!=="?"&&(e+=t.charAt(0)==="?"?t:"?"+t),n&&n!=="#"&&(e+=n.charAt(0)==="#"?n:"#"+n),e}function Ei(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function T9(e,t,n,r={}){let{window:a=document.defaultView,v5Compat:o=!1}=r,s=a.history,u="POP",c=null,d=p();d==null&&(d=0,s.replaceState({...s.state,idx:d},""));function p(){return(s.state||{idx:null}).idx}function g(){u="POP";let x=p(),R=x==null?null:x-d;d=x,c&&c({action:u,location:S.location,delta:R})}function m(x,R){u="PUSH";let k=rk(S.location,x,R);n&&n(k,x),d=p()+1;let A=rC(k,d),C=S.createHref(k);try{s.pushState(A,"",C)}catch(N){if(N instanceof DOMException&&N.name==="DataCloneError")throw N;a.location.assign(C)}o&&c&&c({action:u,location:S.location,delta:1})}function b(x,R){u="REPLACE";let k=rk(S.location,x,R);n&&n(k,x),d=p();let A=rC(k,d),C=S.createHref(k);s.replaceState(A,"",C),o&&c&&c({action:u,location:S.location,delta:0})}function y(x){let R=a.location.origin!=="null"?a.location.origin:a.location.href,k=typeof x=="string"?x:Eu(x);return k=k.replace(/ $/,"%20"),Gt(R,`No window.location.(origin|href) available to create URL for href: ${k}`),new URL(k,R)}let S={get action(){return u},get location(){return e(a,s)},listen(x){if(c)throw new Error("A history only accepts one active listener");return a.addEventListener(nC,g),c=x,()=>{a.removeEventListener(nC,g),c=null}},createHref(x){return t(a,x)},createURL:y,encodeLocation(x){let R=y(x);return{pathname:R.pathname,search:R.search,hash:R.hash}},push:m,replace:b,go(x){return s.go(x)}};return S}function zz(e,t,n="/"){return A9(e,t,n,!1)}function A9(e,t,n,r){let a=typeof t=="string"?Ei(t):t,o=Ua(a.pathname||"/",n);if(o==null)return null;let s=Bz(e);R9(s);let u=null;for(let c=0;u==null&&c{let c={relativePath:u===void 0?o.path||"":u,caseSensitive:o.caseSensitive===!0,childrenIndex:s,route:o};c.relativePath.startsWith("/")&&(Gt(c.relativePath.startsWith(r),`Absolute route path "${c.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),c.relativePath=c.relativePath.slice(r.length));let d=za([r,c.relativePath]),p=n.concat(c);o.children&&o.children.length>0&&(Gt(o.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${d}".`),Bz(o.children,t,p,d)),!(o.path==null&&!o.index)&&t.push({path:d,score:L9(d,o.index),routesMeta:p})};return e.forEach((o,s)=>{var u;if(o.path===""||!((u=o.path)!=null&&u.includes("?")))a(o,s);else for(let c of Uz(o.path))a(o,s,c)}),t}function Uz(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,a=n.endsWith("?"),o=n.replace(/\?$/,"");if(r.length===0)return a?[o,""]:[o];let s=Uz(r.join("/")),u=[];return u.push(...s.map(c=>c===""?o:[o,c].join("/"))),a&&u.push(...s),u.map(c=>e.startsWith("/")&&c===""?"/":c)}function R9(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:M9(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}var _9=/^:[\w-]+$/,C9=3,N9=2,O9=1,D9=10,I9=-2,aC=e=>e==="*";function L9(e,t){let n=e.split("/"),r=n.length;return n.some(aC)&&(r+=I9),t&&(r+=N9),n.filter(a=>!aC(a)).reduce((a,o)=>a+(_9.test(o)?C9:o===""?O9:D9),r)}function M9(e,t){return e.length===t.length&&e.slice(0,-1).every((r,a)=>r===t[a])?e[e.length-1]-t[t.length-1]:0}function F9(e,t,n=!1){let{routesMeta:r}=e,a={},o="/",s=[];for(let u=0;u{if(p==="*"){let y=u[m]||"";s=o.slice(0,o.length-y.length).replace(/(.)\/+$/,"$1")}const b=u[m];return g&&!b?d[p]=void 0:d[p]=(b||"").replace(/%2F/g,"/"),d},{}),pathname:o,pathnameBase:s,pattern:e}}function P9(e,t=!1,n=!0){Br(e==="*"||!e.endsWith("*")||e.endsWith("/*"),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,"/*")}".`);let r=[],a="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(s,u,c)=>(r.push({paramName:u,isOptional:c!=null}),c?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(r.push({paramName:"*"}),a+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?a+="\\/*$":e!==""&&e!=="/"&&(a+="(?:(?=\\/|$))"),[new RegExp(a,t?void 0:"i"),r]}function z9(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return Br(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function Ua(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}function B9(e,t="/"){let{pathname:n,search:r="",hash:a=""}=typeof e=="string"?Ei(e):e;return{pathname:n?n.startsWith("/")?n:U9(n,t):t,search:H9(r),hash:$9(a)}}function U9(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(a=>{a===".."?n.length>1&&n.pop():a!=="."&&n.push(a)}),n.length>1?n.join("/"):"/"}function Xh(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function j9(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function jz(e){let t=j9(e);return t.map((n,r)=>r===t.length-1?n.pathname:n.pathnameBase)}function Gz(e,t,n,r=!1){let a;typeof e=="string"?a=Ei(e):(a={...e},Gt(!a.pathname||!a.pathname.includes("?"),Xh("?","pathname","search",a)),Gt(!a.pathname||!a.pathname.includes("#"),Xh("#","pathname","hash",a)),Gt(!a.search||!a.search.includes("#"),Xh("#","search","hash",a)));let o=e===""||a.pathname==="",s=o?"/":a.pathname,u;if(s==null)u=n;else{let g=t.length-1;if(!r&&s.startsWith("..")){let m=s.split("/");for(;m[0]==="..";)m.shift(),g-=1;a.pathname=m.join("/")}u=g>=0?t[g]:"/"}let c=B9(a,u),d=s&&s!=="/"&&s.endsWith("/"),p=(o||s===".")&&n.endsWith("/");return!c.pathname.endsWith("/")&&(d||p)&&(c.pathname+="/"),c}var za=e=>e.join("/").replace(/\/\/+/g,"/"),G9=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),H9=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,$9=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;function q9(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}var Hz=["POST","PUT","PATCH","DELETE"];new Set(Hz);var V9=["GET",...Hz];new Set(V9);var Bs=E.createContext(null);Bs.displayName="DataRouter";var qf=E.createContext(null);qf.displayName="DataRouterState";var $z=E.createContext({isTransitioning:!1});$z.displayName="ViewTransition";var W9=E.createContext(new Map);W9.displayName="Fetchers";var Y9=E.createContext(null);Y9.displayName="Await";var ia=E.createContext(null);ia.displayName="Navigation";var Bu=E.createContext(null);Bu.displayName="Location";var qa=E.createContext({outlet:null,matches:[],isDataRoute:!1});qa.displayName="Route";var v0=E.createContext(null);v0.displayName="RouteError";function K9(e,{relative:t}={}){Gt(Uu(),"useHref() may be used only in the context of a component.");let{basename:n,navigator:r}=E.useContext(ia),{hash:a,pathname:o,search:s}=ju(e,{relative:t}),u=o;return n!=="/"&&(u=o==="/"?n:za([n,o])),r.createHref({pathname:u,search:s,hash:a})}function Uu(){return E.useContext(Bu)!=null}function wi(){return Gt(Uu(),"useLocation() may be used only in the context of a component."),E.useContext(Bu).location}var qz="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Vz(e){E.useContext(ia).static||E.useLayoutEffect(e)}function Vf(){let{isDataRoute:e}=E.useContext(qa);return e?lq():X9()}function X9(){Gt(Uu(),"useNavigate() may be used only in the context of a component.");let e=E.useContext(Bs),{basename:t,navigator:n}=E.useContext(ia),{matches:r}=E.useContext(qa),{pathname:a}=wi(),o=JSON.stringify(jz(r)),s=E.useRef(!1);return Vz(()=>{s.current=!0}),E.useCallback((c,d={})=>{if(Br(s.current,qz),!s.current)return;if(typeof c=="number"){n.go(c);return}let p=Gz(c,JSON.parse(o),a,d.relative==="path");e==null&&t!=="/"&&(p.pathname=p.pathname==="/"?t:za([t,p.pathname])),(d.replace?n.replace:n.push)(p,d.state,d)},[t,n,o,a,e])}E.createContext(null);function ju(e,{relative:t}={}){let{matches:n}=E.useContext(qa),{pathname:r}=wi(),a=JSON.stringify(jz(n));return E.useMemo(()=>Gz(e,JSON.parse(a),r,t==="path"),[e,a,r,t])}function Z9(e,t){return Wz(e,t)}function Wz(e,t,n,r){var k;Gt(Uu(),"useRoutes() may be used only in the context of a component.");let{navigator:a,static:o}=E.useContext(ia),{matches:s}=E.useContext(qa),u=s[s.length-1],c=u?u.params:{},d=u?u.pathname:"/",p=u?u.pathnameBase:"/",g=u&&u.route;{let A=g&&g.path||"";Yz(d,!g||A.endsWith("*")||A.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${d}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. + +Please change the parent to .`)}let m=wi(),b;if(t){let A=typeof t=="string"?Ei(t):t;Gt(p==="/"||((k=A.pathname)==null?void 0:k.startsWith(p)),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${p}" but pathname "${A.pathname}" was given in the \`location\` prop.`),b=A}else b=m;let y=b.pathname||"/",S=y;if(p!=="/"){let A=p.replace(/^\//,"").split("/");S="/"+y.replace(/^\//,"").split("/").slice(A.length).join("/")}let x=!o&&n&&n.matches&&n.matches.length>0?n.matches:zz(e,{pathname:S});Br(g||x!=null,`No routes matched location "${b.pathname}${b.search}${b.hash}" `),Br(x==null||x[x.length-1].route.element!==void 0||x[x.length-1].route.Component!==void 0||x[x.length-1].route.lazy!==void 0,`Matched leaf route at location "${b.pathname}${b.search}${b.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let R=nq(x&&x.map(A=>Object.assign({},A,{params:Object.assign({},c,A.params),pathname:za([p,a.encodeLocation?a.encodeLocation(A.pathname).pathname:A.pathname]),pathnameBase:A.pathnameBase==="/"?p:za([p,a.encodeLocation?a.encodeLocation(A.pathnameBase).pathname:A.pathnameBase])})),s,n,r);return t&&R?E.createElement(Bu.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...b},navigationType:"POP"}},R):R}function Q9(){let e=sq(),t=q9(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r="rgba(200,200,200, 0.5)",a={padding:"0.5rem",backgroundColor:r},o={padding:"2px 4px",backgroundColor:r},s=null;return console.error("Error handled by React Router default ErrorBoundary:",e),s=E.createElement(E.Fragment,null,E.createElement("p",null,"💿 Hey developer 👋"),E.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",E.createElement("code",{style:o},"ErrorBoundary")," or"," ",E.createElement("code",{style:o},"errorElement")," prop on your route.")),E.createElement(E.Fragment,null,E.createElement("h2",null,"Unexpected Application Error!"),E.createElement("h3",{style:{fontStyle:"italic"}},t),n?E.createElement("pre",{style:a},n):null,s)}var J9=E.createElement(Q9,null),eq=class extends E.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!=="idle"&&e.revalidation==="idle"?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error!==void 0?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){console.error("React Router caught the following error during render",e,t)}render(){return this.state.error!==void 0?E.createElement(qa.Provider,{value:this.props.routeContext},E.createElement(v0.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function tq({routeContext:e,match:t,children:n}){let r=E.useContext(Bs);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),E.createElement(qa.Provider,{value:e},n)}function nq(e,t=[],n=null,r=null){if(e==null){if(!n)return null;if(n.errors)e=n.matches;else if(t.length===0&&!n.initialized&&n.matches.length>0)e=n.matches;else return null}let a=e,o=n==null?void 0:n.errors;if(o!=null){let c=a.findIndex(d=>d.route.id&&(o==null?void 0:o[d.route.id])!==void 0);Gt(c>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(o).join(",")}`),a=a.slice(0,Math.min(a.length,c+1))}let s=!1,u=-1;if(n)for(let c=0;c=0?a=a.slice(0,u+1):a=[a[0]];break}}}return a.reduceRight((c,d,p)=>{let g,m=!1,b=null,y=null;n&&(g=o&&d.route.id?o[d.route.id]:void 0,b=d.route.errorElement||J9,s&&(u<0&&p===0?(Yz("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),m=!0,y=null):u===p&&(m=!0,y=d.route.hydrateFallbackElement||null)));let S=t.concat(a.slice(0,p+1)),x=()=>{let R;return g?R=b:m?R=y:d.route.Component?R=E.createElement(d.route.Component,null):d.route.element?R=d.route.element:R=c,E.createElement(tq,{match:d,routeContext:{outlet:c,matches:S,isDataRoute:n!=null},children:R})};return n&&(d.route.ErrorBoundary||d.route.errorElement||p===0)?E.createElement(eq,{location:n.location,revalidation:n.revalidation,component:b,error:g,children:x(),routeContext:{outlet:null,matches:S,isDataRoute:!0}}):x()},null)}function S0(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function rq(e){let t=E.useContext(Bs);return Gt(t,S0(e)),t}function aq(e){let t=E.useContext(qf);return Gt(t,S0(e)),t}function oq(e){let t=E.useContext(qa);return Gt(t,S0(e)),t}function E0(e){let t=oq(e),n=t.matches[t.matches.length-1];return Gt(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function iq(){return E0("useRouteId")}function sq(){var r;let e=E.useContext(v0),t=aq("useRouteError"),n=E0("useRouteError");return e!==void 0?e:(r=t.errors)==null?void 0:r[n]}function lq(){let{router:e}=rq("useNavigate"),t=E0("useNavigate"),n=E.useRef(!1);return Vz(()=>{n.current=!0}),E.useCallback(async(a,o={})=>{Br(n.current,qz),n.current&&(typeof a=="number"?e.navigate(a):await e.navigate(a,{fromRouteId:t,...o}))},[e,t])}var oC={};function Yz(e,t,n){!t&&!oC[e]&&(oC[e]=!0,Br(!1,n))}E.memo(uq);function uq({routes:e,future:t,state:n}){return Wz(e,void 0,n,t)}function ak(e){Gt(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function cq({basename:e="/",children:t=null,location:n,navigationType:r="POP",navigator:a,static:o=!1}){Gt(!Uu(),"You cannot render a inside another . You should never have more than one in your app.");let s=e.replace(/^\/*/,"/"),u=E.useMemo(()=>({basename:s,navigator:a,static:o,future:{}}),[s,a,o]);typeof n=="string"&&(n=Ei(n));let{pathname:c="/",search:d="",hash:p="",state:g=null,key:m="default"}=n,b=E.useMemo(()=>{let y=Ua(c,s);return y==null?null:{location:{pathname:y,search:d,hash:p,state:g,key:m},navigationType:r}},[s,c,d,p,g,m,r]);return Br(b!=null,` is not able to match the URL "${c}${d}${p}" because it does not start with the basename, so the won't render anything.`),b==null?null:E.createElement(ia.Provider,{value:u},E.createElement(Bu.Provider,{children:t,value:b}))}function dq({children:e,location:t}){return Z9(ok(e),t)}function ok(e,t=[]){let n=[];return E.Children.forEach(e,(r,a)=>{if(!E.isValidElement(r))return;let o=[...t,a];if(r.type===E.Fragment){n.push.apply(n,ok(r.props.children,o));return}Gt(r.type===ak,`[${typeof r.type=="string"?r.type:r.type.name}] is not a component. All component children of must be a or `),Gt(!r.props.index||!r.props.children,"An index route cannot have child routes.");let s={id:r.props.id||o.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,loader:r.props.loader,action:r.props.action,hydrateFallbackElement:r.props.hydrateFallbackElement,HydrateFallback:r.props.HydrateFallback,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.hasErrorBoundary===!0||r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(s.children=ok(r.props.children,o)),n.push(s)}),n}var qd="get",Vd="application/x-www-form-urlencoded";function Wf(e){return e!=null&&typeof e.tagName=="string"}function fq(e){return Wf(e)&&e.tagName.toLowerCase()==="button"}function pq(e){return Wf(e)&&e.tagName.toLowerCase()==="form"}function gq(e){return Wf(e)&&e.tagName.toLowerCase()==="input"}function hq(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function mq(e,t){return e.button===0&&(!t||t==="_self")&&!hq(e)}var gd=null;function bq(){if(gd===null)try{new FormData(document.createElement("form"),0),gd=!1}catch{gd=!0}return gd}var yq=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Zh(e){return e!=null&&!yq.has(e)?(Br(!1,`"${e}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${Vd}"`),null):e}function vq(e,t){let n,r,a,o,s;if(pq(e)){let u=e.getAttribute("action");r=u?Ua(u,t):null,n=e.getAttribute("method")||qd,a=Zh(e.getAttribute("enctype"))||Vd,o=new FormData(e)}else if(fq(e)||gq(e)&&(e.type==="submit"||e.type==="image")){let u=e.form;if(u==null)throw new Error('Cannot submit a diff --git a/lightrag_webui/src/components/LanguageToggle.tsx b/lightrag_webui/src/components/LanguageToggle.tsx new file mode 100644 index 00000000..0eab780e --- /dev/null +++ b/lightrag_webui/src/components/LanguageToggle.tsx @@ -0,0 +1,49 @@ +import Button from '@/components/ui/Button' +import { useCallback } from 'react' +import { controlButtonVariant } from '@/lib/constants' +import { useTranslation } from 'react-i18next' +import { useSettingsStore } from '@/stores/settings' + +/** + * Component that toggles the language between English and Chinese. + */ +export default function LanguageToggle() { + const { i18n } = useTranslation() + const currentLanguage = i18n.language + const setLanguage = useSettingsStore.use.setLanguage() + + const setEnglish = useCallback(() => { + i18n.changeLanguage('en') + setLanguage('en') + }, [i18n, setLanguage]) + + const setChinese = useCallback(() => { + i18n.changeLanguage('zh') + setLanguage('zh') + }, [i18n, setLanguage]) + + if (currentLanguage === 'zh') { + return ( + + ) + } + return ( + + ) +} diff --git a/lightrag_webui/src/components/graph/FocusOnNode.tsx b/lightrag_webui/src/components/graph/FocusOnNode.tsx index 70af7525..3f3cf027 100644 --- a/lightrag_webui/src/components/graph/FocusOnNode.tsx +++ b/lightrag_webui/src/components/graph/FocusOnNode.tsx @@ -13,23 +13,37 @@ const FocusOnNode = ({ node, move }: { node: string | null; move?: boolean }) => * When the selected item changes, highlighted the node and center the camera on it. */ useEffect(() => { + const graph = sigma.getGraph(); + if (move) { - if (node) { - sigma.getGraph().setNodeAttribute(node, 'highlighted', true) - gotoNode(node) + if (node && graph.hasNode(node)) { + try { + graph.setNodeAttribute(node, 'highlighted', true); + gotoNode(node); + } catch (error) { + console.error('Error focusing on node:', error); + } } else { // If no node is selected but move is true, reset to default view - sigma.setCustomBBox(null) - sigma.getCamera().animate({ x: 0.5, y: 0.5, ratio: 1 }, { duration: 0 }) + sigma.setCustomBBox(null); + sigma.getCamera().animate({ x: 0.5, y: 0.5, ratio: 1 }, { duration: 0 }); + } + useGraphStore.getState().setMoveToSelectedNode(false); + } else if (node && graph.hasNode(node)) { + try { + graph.setNodeAttribute(node, 'highlighted', true); + } catch (error) { + console.error('Error highlighting node:', error); } - useGraphStore.getState().setMoveToSelectedNode(false) - } else if (node) { - sigma.getGraph().setNodeAttribute(node, 'highlighted', true) } return () => { - if (node) { - sigma.getGraph().setNodeAttribute(node, 'highlighted', false) + if (node && graph.hasNode(node)) { + try { + graph.setNodeAttribute(node, 'highlighted', false); + } catch (error) { + console.error('Error cleaning up node highlight:', error); + } } } }, [node, move, sigma, gotoNode]) diff --git a/lightrag_webui/src/components/graph/GraphControl.tsx b/lightrag_webui/src/components/graph/GraphControl.tsx index 7d014316..baa98bfe 100644 --- a/lightrag_webui/src/components/graph/GraphControl.tsx +++ b/lightrag_webui/src/components/graph/GraphControl.tsx @@ -1,5 +1,5 @@ -import { useLoadGraph, useRegisterEvents, useSetSettings, useSigma } from '@react-sigma/core' -import Graph from 'graphology' +import { useRegisterEvents, useSetSettings, useSigma } from '@react-sigma/core' +import { AbstractGraph } from 'graphology-types' // import { useLayoutCircular } from '@react-sigma/layout-circular' import { useLayoutForceAtlas2 } from '@react-sigma/layout-forceatlas2' import { useEffect } from 'react' @@ -25,7 +25,6 @@ const GraphControl = ({ disableHoverEffect }: { disableHoverEffect?: boolean }) const sigma = useSigma() const registerEvents = useRegisterEvents() const setSettings = useSetSettings() - const loadGraph = useLoadGraph() const maxIterations = useSettingsStore.use.graphLayoutMaxIterations() const { assign: assignLayout } = useLayoutForceAtlas2({ @@ -45,14 +44,42 @@ const GraphControl = ({ disableHoverEffect }: { disableHoverEffect?: boolean }) /** * When component mount or maxIterations changes - * => load the graph and apply layout + * => ensure graph reference and apply layout */ useEffect(() => { - if (sigmaGraph) { - loadGraph(sigmaGraph as unknown as Graph) - assignLayout() + if (sigmaGraph && sigma) { + // Ensure sigma binding to sigmaGraph + try { + if (typeof sigma.setGraph === 'function') { + sigma.setGraph(sigmaGraph as unknown as AbstractGraph); + console.log('Binding graph to sigma instance'); + } else { + (sigma as any).graph = sigmaGraph; + console.warn('Simgma missing setGraph function, set graph property directly'); + } + } catch (error) { + console.error('Error setting graph on sigma instance:', error); + } + + assignLayout(); + console.log('Initial layout applied to graph'); } - }, [assignLayout, loadGraph, sigmaGraph, maxIterations]) + }, [sigma, sigmaGraph, assignLayout, maxIterations]) + + /** + * Ensure the sigma instance is set in the store + * This provides a backup in case the instance wasn't set in GraphViewer + */ + useEffect(() => { + if (sigma) { + // Double-check that the store has the sigma instance + const currentInstance = useGraphStore.getState().sigmaInstance; + if (!currentInstance) { + console.log('Setting sigma instance from GraphControl'); + useGraphStore.getState().setSigmaInstance(sigma); + } + } + }, [sigma]); /** * When component mount @@ -138,14 +165,18 @@ const GraphControl = ({ disableHoverEffect }: { disableHoverEffect?: boolean }) const _focusedNode = focusedNode || selectedNode const _focusedEdge = focusedEdge || selectedEdge - if (_focusedNode) { - if (node === _focusedNode || graph.neighbors(_focusedNode).includes(node)) { - newData.highlighted = true - if (node === selectedNode) { - newData.borderColor = Constants.nodeBorderColorSelected + if (_focusedNode && graph.hasNode(_focusedNode)) { + try { + if (node === _focusedNode || graph.neighbors(_focusedNode).includes(node)) { + newData.highlighted = true + if (node === selectedNode) { + newData.borderColor = Constants.nodeBorderColorSelected + } } + } catch (error) { + console.error('Error in nodeReducer:', error); } - } else if (_focusedEdge) { + } else if (_focusedEdge && graph.hasEdge(_focusedEdge)) { if (graph.extremities(_focusedEdge).includes(node)) { newData.highlighted = true newData.size = 3 @@ -173,21 +204,28 @@ const GraphControl = ({ disableHoverEffect }: { disableHoverEffect?: boolean }) if (!disableHoverEffect) { const _focusedNode = focusedNode || selectedNode - if (_focusedNode) { - if (hideUnselectedEdges) { - if (!graph.extremities(edge).includes(_focusedNode)) { - newData.hidden = true - } - } else { - if (graph.extremities(edge).includes(_focusedNode)) { - newData.color = Constants.edgeColorHighlighted + if (_focusedNode && graph.hasNode(_focusedNode)) { + try { + if (hideUnselectedEdges) { + if (!graph.extremities(edge).includes(_focusedNode)) { + newData.hidden = true + } + } else { + if (graph.extremities(edge).includes(_focusedNode)) { + newData.color = Constants.edgeColorHighlighted + } } + } catch (error) { + console.error('Error in edgeReducer:', error); } } else { - if (focusedEdge || selectedEdge) { - if (edge === selectedEdge) { + const _selectedEdge = selectedEdge && graph.hasEdge(selectedEdge) ? selectedEdge : null; + const _focusedEdge = focusedEdge && graph.hasEdge(focusedEdge) ? focusedEdge : null; + + if (_selectedEdge || _focusedEdge) { + if (edge === _selectedEdge) { newData.color = Constants.edgeColorSelected - } else if (edge === focusedEdge) { + } else if (edge === _focusedEdge) { newData.color = Constants.edgeColorHighlighted } else if (hideUnselectedEdges) { newData.hidden = true diff --git a/lightrag_webui/src/components/graph/GraphLabels.tsx b/lightrag_webui/src/components/graph/GraphLabels.tsx index bd2c8ea0..305f63bd 100644 --- a/lightrag_webui/src/components/graph/GraphLabels.tsx +++ b/lightrag_webui/src/components/graph/GraphLabels.tsx @@ -2,20 +2,23 @@ import { useCallback, useEffect, useRef } from 'react' import { AsyncSelect } from '@/components/ui/AsyncSelect' import { useSettingsStore } from '@/stores/settings' import { useGraphStore } from '@/stores/graph' -import { labelListLimit } from '@/lib/constants' +import { labelListLimit, controlButtonVariant } from '@/lib/constants' import MiniSearch from 'minisearch' import { useTranslation } from 'react-i18next' +import { RefreshCw } from 'lucide-react' +import Button from '@/components/ui/Button' const GraphLabels = () => { const { t } = useTranslation() const label = useSettingsStore.use.queryLabel() const allDatabaseLabels = useGraphStore.use.allDatabaseLabels() + const rawGraph = useGraphStore.use.rawGraph() const labelsLoadedRef = useRef(false) // Track if a fetch is in progress to prevent multiple simultaneous fetches const fetchInProgressRef = useRef(false) - // Fetch labels once on component mount, using global flag to prevent duplicates + // Fetch labels and trigger initial data load useEffect(() => { // Check if we've already attempted to fetch labels in this session const labelsFetchAttempted = useGraphStore.getState().labelsFetchAttempted @@ -26,8 +29,6 @@ const GraphLabels = () => { // Set global flag to indicate we've attempted to fetch in this session useGraphStore.getState().setLabelsFetchAttempted(true) - console.log('Fetching graph labels (once per session)...') - useGraphStore.getState().fetchAllDatabaseLabels() .then(() => { labelsLoadedRef.current = true @@ -42,6 +43,14 @@ const GraphLabels = () => { } }, []) // Empty dependency array ensures this only runs once on mount + // Trigger data load when labels are loaded + useEffect(() => { + if (labelsLoadedRef.current) { + // Reset the fetch attempted flag to force a new data fetch + useGraphStore.getState().setGraphDataFetchAttempted(false) + } + }, [label]) + const getSearchEngine = useCallback(() => { // Create search engine const searchEngine = new MiniSearch({ @@ -83,52 +92,73 @@ const GraphLabels = () => { [getSearchEngine] ) - return ( - - className="ml-2" - triggerClassName="max-h-8" - searchInputClassName="max-h-8" - triggerTooltip={t('graphPanel.graphLabels.selectTooltip')} - fetcher={fetchData} - renderOption={(item) =>
{item}
} - getOptionValue={(item) => item} - getDisplayValue={(item) =>
{item}
} - notFound={
No labels found
} - label={t('graphPanel.graphLabels.label')} - placeholder={t('graphPanel.graphLabels.placeholder')} - value={label !== null ? label : '*'} - onChange={(newLabel) => { + const handleRefresh = useCallback(() => { + // Reset labels fetch status to allow fetching labels again + useGraphStore.getState().setLabelsFetchAttempted(false) + + // Reset graph data fetch status directly, not depending on allDatabaseLabels changes + useGraphStore.getState().setGraphDataFetchAttempted(false) + + // Fetch all labels again + useGraphStore.getState().fetchAllDatabaseLabels() + .then(() => { + // Trigger a graph data reload by changing the query label back and forth const currentLabel = useSettingsStore.getState().queryLabel + useSettingsStore.getState().setQueryLabel('') + setTimeout(() => { + useSettingsStore.getState().setQueryLabel(currentLabel) + }, 0) + }) + .catch((error) => { + console.error('Failed to refresh labels:', error) + }) + }, []) - // select the last item means query all - if (newLabel === '...') { - newLabel = '*' - } + return ( +
+ {rawGraph && ( + + )} + + className="ml-2" + triggerClassName="max-h-8" + searchInputClassName="max-h-8" + triggerTooltip={t('graphPanel.graphLabels.selectTooltip')} + fetcher={fetchData} + renderOption={(item) =>
{item}
} + getOptionValue={(item) => item} + getDisplayValue={(item) =>
{item}
} + notFound={
No labels found
} + label={t('graphPanel.graphLabels.label')} + placeholder={t('graphPanel.graphLabels.placeholder')} + value={label !== null ? label : '*'} + onChange={(newLabel) => { + const currentLabel = useSettingsStore.getState().queryLabel - // Reset the fetch attempted flag to force a new data fetch - useGraphStore.getState().setGraphDataFetchAttempted(false) - - // Clear current graph data to ensure complete reload when label changes - if (newLabel !== currentLabel) { - const graphStore = useGraphStore.getState(); - graphStore.clearSelection(); - - // Reset the graph state but preserve the instance - if (graphStore.sigmaGraph) { - const nodes = Array.from(graphStore.sigmaGraph.nodes()); - nodes.forEach(node => graphStore.sigmaGraph?.dropNode(node)); + // select the last item means query all + if (newLabel === '...') { + newLabel = '*' } - } - if (newLabel === currentLabel && newLabel !== '*') { - // reselect the same itme means qery all - useSettingsStore.getState().setQueryLabel('*') - } else { + // Handle reselecting the same label + if (newLabel === currentLabel && newLabel !== '*') { + newLabel = '*' + } + + // Update the label, which will trigger the useEffect to handle data loading useSettingsStore.getState().setQueryLabel(newLabel) - } - }} - clearable={false} // Prevent clearing value on reselect - /> + }} + clearable={false} // Prevent clearing value on reselect + /> +
) } diff --git a/lightrag_webui/src/components/graph/GraphSearch.tsx b/lightrag_webui/src/components/graph/GraphSearch.tsx index 2ba36bda..51e76a0b 100644 --- a/lightrag_webui/src/components/graph/GraphSearch.tsx +++ b/lightrag_webui/src/components/graph/GraphSearch.tsx @@ -1,4 +1,4 @@ -import { FC, useCallback, useEffect, useMemo } from 'react' +import { FC, useCallback, useEffect } from 'react' import { EdgeById, NodeById, @@ -11,28 +11,34 @@ import { useGraphStore } from '@/stores/graph' import MiniSearch from 'minisearch' import { useTranslation } from 'react-i18next' -interface OptionItem { +// Message item identifier for search results +export const messageId = '__message_item' + +// Search result option item interface +export interface OptionItem { id: string type: 'nodes' | 'edges' | 'message' message?: string } +const NodeOption = ({ id }: { id: string }) => { + const graph = useGraphStore.use.sigmaGraph() + if (!graph?.hasNode(id)) { + return null + } + return +} + function OptionComponent(item: OptionItem) { return (
- {item.type === 'nodes' && } + {item.type === 'nodes' && } {item.type === 'edges' && } {item.type === 'message' &&
{item.message}
}
) } -const messageId = '__message_item' -// Reset this cache when graph changes to ensure fresh search results -const lastGraph: any = { - graph: null, - searchEngine: null -} /** * Component thats display the search input. @@ -48,25 +54,24 @@ export const GraphSearchInput = ({ }) => { const { t } = useTranslation() const graph = useGraphStore.use.sigmaGraph() + const searchEngine = useGraphStore.use.searchEngine() - // Force reset the cache when graph changes + // Reset search engine when graph changes useEffect(() => { if (graph) { - // Reset cache to ensure fresh search results with new graph data - lastGraph.graph = null; - lastGraph.searchEngine = null; + useGraphStore.getState().resetSearchEngine() } }, [graph]); - const searchEngine = useMemo(() => { - if (lastGraph.graph == graph) { - return lastGraph.searchEngine + // Create search engine when needed + useEffect(() => { + // Skip if no graph, empty graph, or search engine already exists + if (!graph || graph.nodes().length === 0 || searchEngine) { + return } - if (!graph || graph.nodes().length == 0) return - lastGraph.graph = graph - - const searchEngine = new MiniSearch({ + // Create new search engine + const newSearchEngine = new MiniSearch({ idField: 'id', fields: ['label'], searchOptions: { @@ -78,16 +83,16 @@ export const GraphSearchInput = ({ } }) - // Add documents + // Add nodes to search engine const documents = graph.nodes().map((id: string) => ({ id: id, label: graph.getNodeAttribute(id, 'label') })) - searchEngine.addAll(documents) + newSearchEngine.addAll(documents) - lastGraph.searchEngine = searchEngine - return searchEngine - }, [graph]) + // Update search engine in store + useGraphStore.getState().setSearchEngine(newSearchEngine) + }, [graph, searchEngine]) /** * Loading the options while the user is typing. @@ -95,22 +100,35 @@ export const GraphSearchInput = ({ const loadOptions = useCallback( async (query?: string): Promise => { if (onFocus) onFocus(null) - if (!graph || !searchEngine) return [] - // If no query, return first searchResultLimit nodes + // Safety checks to prevent crashes + if (!graph || !searchEngine) { + return [] + } + + // Verify graph has nodes before proceeding + if (graph.nodes().length === 0) { + return [] + } + + // If no query, return some nodes for user to select if (!query) { - const nodeIds = graph.nodes().slice(0, searchResultLimit) + const nodeIds = graph.nodes() + .filter(id => graph.hasNode(id)) + .slice(0, searchResultLimit) return nodeIds.map(id => ({ id, type: 'nodes' })) } - // If has query, search nodes - const result: OptionItem[] = searchEngine.search(query).map((r: { id: string }) => ({ - id: r.id, - type: 'nodes' - })) + // If has query, search nodes and verify they still exist + const result: OptionItem[] = searchEngine.search(query) + .filter((r: { id: string }) => graph.hasNode(r.id)) + .map((r: { id: string }) => ({ + id: r.id, + type: 'nodes' + })) // prettier-ignore return result.length <= searchResultLimit diff --git a/lightrag_webui/src/components/graph/LayoutsControl.tsx b/lightrag_webui/src/components/graph/LayoutsControl.tsx index 0ed97f2f..2f0cc50a 100644 --- a/lightrag_webui/src/components/graph/LayoutsControl.tsx +++ b/lightrag_webui/src/components/graph/LayoutsControl.tsx @@ -7,7 +7,7 @@ import { useLayoutForce, useWorkerLayoutForce } from '@react-sigma/layout-force' import { useLayoutForceAtlas2, useWorkerLayoutForceAtlas2 } from '@react-sigma/layout-forceatlas2' import { useLayoutNoverlap, useWorkerLayoutNoverlap } from '@react-sigma/layout-noverlap' import { useLayoutRandom } from '@react-sigma/layout-random' -import { useCallback, useMemo, useState, useEffect } from 'react' +import { useCallback, useMemo, useState, useEffect, useRef } from 'react' import Button from '@/components/ui/Button' import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/Popover' @@ -26,43 +26,161 @@ type LayoutName = | 'Force Directed' | 'Force Atlas' -const WorkerLayoutControl = ({ layout, autoRunFor }: WorkerLayoutControlProps) => { +// Extend WorkerLayoutControlProps to include mainLayout +interface ExtendedWorkerLayoutControlProps extends WorkerLayoutControlProps { + mainLayout: LayoutHook; +} + +const WorkerLayoutControl = ({ layout, autoRunFor, mainLayout }: ExtendedWorkerLayoutControlProps) => { const sigma = useSigma() - const { stop, start, isRunning } = layout + // Use local state to track animation running status + const [isRunning, setIsRunning] = useState(false) + // Timer reference for animation + const animationTimerRef = useRef(null) const { t } = useTranslation() + // Function to update node positions using the layout algorithm + const updatePositions = useCallback(() => { + if (!sigma) return + + try { + const graph = sigma.getGraph() + if (!graph || graph.order === 0) return + + // Use mainLayout to get positions, similar to refreshLayout function + // console.log('Getting positions from mainLayout') + const positions = mainLayout.positions() + + // Animate nodes to new positions + // console.log('Updating node positions with layout algorithm') + animateNodes(graph, positions, { duration: 300 }) // Reduced duration for more frequent updates + } catch (error) { + console.error('Error updating positions:', error) + // Stop animation if there's an error + if (animationTimerRef.current) { + window.clearInterval(animationTimerRef.current) + animationTimerRef.current = null + setIsRunning(false) + } + } + }, [sigma, mainLayout]) + + // Improved click handler that uses our own animation timer + const handleClick = useCallback(() => { + if (isRunning) { + // Stop the animation + console.log('Stopping layout animation') + if (animationTimerRef.current) { + window.clearInterval(animationTimerRef.current) + animationTimerRef.current = null + } + + // Try to kill the layout algorithm if it's running + try { + if (typeof layout.kill === 'function') { + layout.kill() + console.log('Layout algorithm killed') + } else if (typeof layout.stop === 'function') { + layout.stop() + console.log('Layout algorithm stopped') + } + } catch (error) { + console.error('Error stopping layout algorithm:', error) + } + + setIsRunning(false) + } else { + // Start the animation + console.log('Starting layout animation') + + // Initial position update + updatePositions() + + // Set up interval for continuous updates + animationTimerRef.current = window.setInterval(() => { + updatePositions() + }, 200) // Reduced interval to create overlapping animations for smoother transitions + + setIsRunning(true) + + // Set a timeout to automatically stop the animation after 3 seconds + setTimeout(() => { + if (animationTimerRef.current) { + console.log('Auto-stopping layout animation after 3 seconds') + window.clearInterval(animationTimerRef.current) + animationTimerRef.current = null + setIsRunning(false) + + // Try to stop the layout algorithm + try { + if (typeof layout.kill === 'function') { + layout.kill() + } else if (typeof layout.stop === 'function') { + layout.stop() + } + } catch (error) { + console.error('Error stopping layout algorithm:', error) + } + } + }, 3000) + } + }, [isRunning, layout, updatePositions]) + /** * Init component when Sigma or component settings change. */ useEffect(() => { if (!sigma) { + console.log('No sigma instance available') return } - // we run the algo + // Auto-run if specified let timeout: number | null = null if (autoRunFor !== undefined && autoRunFor > -1 && sigma.getGraph().order > 0) { - start() - // set a timeout to stop it - timeout = - autoRunFor > 0 - ? window.setTimeout(() => { stop() }, autoRunFor) // prettier-ignore - : null - } + console.log('Auto-starting layout animation') - //cleaning - return () => { - stop() - if (timeout) { - clearTimeout(timeout) + // Initial position update + updatePositions() + + // Set up interval for continuous updates + animationTimerRef.current = window.setInterval(() => { + updatePositions() + }, 200) // Reduced interval to create overlapping animations for smoother transitions + + setIsRunning(true) + + // Set a timeout to stop it if autoRunFor > 0 + if (autoRunFor > 0) { + timeout = window.setTimeout(() => { + console.log('Auto-stopping layout animation after timeout') + if (animationTimerRef.current) { + window.clearInterval(animationTimerRef.current) + animationTimerRef.current = null + } + setIsRunning(false) + }, autoRunFor) } } - }, [autoRunFor, start, stop, sigma]) + + // Cleanup function + return () => { + // console.log('Cleaning up WorkerLayoutControl') + if (animationTimerRef.current) { + window.clearInterval(animationTimerRef.current) + animationTimerRef.current = null + } + if (timeout) { + window.clearTimeout(timeout) + } + setIsRunning(false) + } + }, [autoRunFor, sigma, updatePositions]) return ( + + +
{ />
- +
{Object.keys(node.properties) .sort() @@ -181,7 +256,7 @@ const NodePropertiesView = ({ node }: { node: NodeType }) => {
{node.relationships.length > 0 && ( <> -